Contents
Features
Introduction
GameCam is a plug-in mod, or, to be
more accurate, an API-proxy mod.
GameCam adds a client camera
(spectator mode) to
any other Quake II mod. This is done
by literally adding external code to an existing mod, without having to know or modify its
source code.
GameCam contains only the code for
the camera, which makes it a very small download (~90KB, including the manual...). Note that
GameCam is a server-side mod, so clients don't have to download or install anything.
Camera Modes
GameCam provides three camera modes:
- ACTION - based on q2cam
by Paul Jordan. This is the default camera mode in which the camera tracks the areas where
most of the players are. This usually means
that it tracks the areas where most of the action takes place. Fixed camera positions may also be
defined, so that specific locations usually get filmed from the same point of view.
- CHASE - this is a very much enhanced version of the original id software CTF chase camera.
The GameCam CHASE
camera swivels around the player being chased to provide the best view of his/her
closest opponent. Spectators also have the option to manually adjust the
camera position themselves.
- FREE - aka noclip: spectators move freely around the map, and can pass through walls, etc.
This mode is usually disabled, and is mostly used for defining fixed cameras to be used with
the ACTION camera.
The GameCam ACTION camera
can be configured to focus on specific types of players, based on a priority list.
This allows it to track CTF flag carriers, HeadHunters
with the most heads, Quad berserkers, etc.
User Interface
The default settings of GameCam make it replace
the in-game spectator mode. This means that players can become spectators by simply typing
spectator 1 (or
spectator <password>),
and return to the game with spectator 0.
This way players don't have to figure out any special camera commands.
While in spectator mode, players can access the camera menu. The menu allows spectators to switch
camera modes, modify the camera options, get help about the camera keyboard
binds, and return to the game.
The menu provides access to the most useful features of GameCam -
other features can be accessed via the camera
console command.
Automatic Demo Recording
With this feature turned on, GameCam makes
the client record a demo of the game using a unique file name. The recording will be
stopped upon changing levels and restarted with a different (unique) file name.
The demo file name format is as follows:
mapname-DDMMYY-HHMM.dm2, where
mapname is the current map
(e.g. q2dm1), and the rest is
the date and time (at the server!) when the recording started. This format makes it easy to
sort the demos by map and date/time.
This feature is available to all players even if they're not spectators! - just type
camera demo
and start playing...
General Admission Mode
GameCam makes it easy to run and manage
tournaments while playing mods that have not been specifically designed with tournaments in mind.
In General Admission mode all players start as spectators, and only a limited
number of players are allowed to enter the game. The rest just sit back and enjoy the show ...
If a time-limit is set then the timer will start as soon as the first player
exits spectator mode.
To switch players during the match (why?), one of the players must step
down (become a spectator, or disconnect), and one of the spectators can then
join the game.
Everyone will return to be spectators upon changing levels.
Ticker Tape
This unique feature puts a scrolling line of animated text at the bottom
of the screen in ACTION and FREE modes. The contents of the tape
and the way it scrolls (right, left, blink, etc.) can be configured using
a simple scripting language.
The text itself may include special characters,
highlighted (green) text and escape sequences to print any console
variable (e.g. hostname), the time and date in various
formats and a simple running high-scores update.
The script is re-loaded upon level changes, and/or from within the script itself
using the reload script directive. This feature allows automatic updating of
the ticker script using an external utility.
Other Features
GameCam provides other features as well:
- spectators do not appear on the scoreboard (but can be listed with
the players console command),
- the HUD is removed in FREE and ACTION modes,
- player identification can be toggled,
- the player's inventory can be inspected in CHASE mode (!)
Performance
GameCam actually reduces the
load on the server, since spectators do not generate network traffic for other players. A game with
32 players is a lot more demanding than a match with 4 players and 28 spectators (which is
a lot more demanding than a match with 4 players and no spectators ...)
Security Measures
GameCam provides features specifically designed
to prevent lamers from cheating:
- camera mode can be protected with a password, so that only authorized players may
become spectators,
- the number of spectators can be limited,
- spectators return to the game as new clients,
- spectators suicide as soon as they return to the game (may be disabled),
- CHASE mode can be disabled, so that it is not abused,
- spectators' chat messages can be disabled, so that they don't interfere with an on-going
match, or try to tip off players (they can still chat with one another using
say_team),
- standard (v3.20) flood protection on spectator chat messages,
- spectators' names are changed from name to [CAMERA]name, so that it remains clear who's
playing and who's just watching.
Note that spectators can't improve their ranking on services like CLQ by chasing high ranking players, because
their names show up as [CAMERA]name when queried by
GameSpy,
QStat etc. Furthermore,
mods with any logging facilities treat spectators as if they disconnected from the game.
ZBot detection is provided (on Win32 systems) via a separate plug-in module - ZKick, which can
be used with GameCam or independently.
ZKick is available on the download
page.
GameCam can also
be used together with the BW-Admin and Q2Admin server
administration plugins (both on Win32 and Unix servers).
table of contents
Installation
Windows 95/98/NT
Simple: create a folder named release under C:\Quake2 (replace
C: with the correct drive letter), and extract the contents of
the distribution package (zip) to
C:\Quake2\release\. The package contains two files: gamecam.html
- the manual, and gamex86.dll - the binary.
Unix
(the instructions are for Linux, a similar procedure applies to
Solaris with gamesparc instead of gamei386)
Repeat the following for every mod for which you want to add GameCam:
- rename the game library from gamei386.so to
gamei386.real.so
- extract the GameCam gamei386.so
to the mod directory
You should now have two .so files in each mod directory: gamei386.so (GameCam),
and gamei386.real.so (the original game library).
UnInstall
Windows 95/98/NT:
Delete the new gamex86.dll from the release folder.
Unix:
Delete the new gamei386.so from each mod directory and rename
gamei386.real.so back to gamei386.so.
GameCam and Other Plug-in Mods
BW-Admin and Q2Admin
(the following applies to both Win32 and Unix
servers)
Install GameCam,
create a new directory named proxy under the quake2
directory. Place the BW-Admin library under
another new directory: proxy/bwadmin and/or Q2Admin under
proxy/q2admin. Make sure to place all the configuration files
of these plugins at their correct locations, as if they were installed normally.
To activate the other plugin you have to launch the server with either
+set proxy
bwadmin or +set proxy q2admin added to the command
line.
Note that I don't support this configuration. Use it at your own risk.
ProxyMod Standard Mods (Win32)
GameCam can be used
with any number of plug-in mods based on the ProxyMod (the
"blank" plug-in) source code. These include ProxyMod itself,
ZKick, EntZ, and the forthcoming GameBot.
To load any number of proxy modules you should follow the next
procedure:
- place one proxy module in the C:\Quake2\release folder (I
use ProxyMod - but you can use any other)
- create a new folder: C:\Quake2\proxy
- place all other proxy mods in their own
folders:
GameCam in
C:\Quake2\proxy\gamecam\,
EntZ in
C:\Quake2\proxy\entz\, ZKick in
C:\Quake2\proxy\zkick\, etc.
- to run a server with any of
these plug-ins active you need to set the
proxy
cvar to a colon seperated list of proxy mods:
quake2 +set proxy zkick:entz:gamecam
<rest_of_command_line>
will load ProxyMod (or whatever plug-in is installed in
C:\Quake2\release), and then ZKick, EntZ and
GameCam, and then the
real game DLL will be loaded from the folder specified by the game
cvar.
table of contents
Usage
The following sections explain how to use GameCam
on the server side and on the client's side.
Server Side
Server Setup
GameCam is transparent. You should be able
to setup a server for any game you want, the same way as before the installation:
quake2 +set game <gamedir>, etc.
GameCam prints a startup message to the console,
before the game begins.
GameCam also prints
an optional welcome message to the players' console (saying
"[GameCam]: type 'camera ?' for help").
A set of configuration files for several mods (CTF,
LMCTF,
HeadHunters,
QPong,
CTC,
Predator,
and TagYerIt) is available as a separate
package. The configuration files are optional - GameCam
should work just fine without them, but may look better with them.
Consult the configuration section for details.
Console Variables
- gc_version
- GameCam version string (read-only).
- gc_count
- Number of GameCam spectators (serverinfo, read-only).
- gc_flags
- GameCam configuration flags (archived, default is "18147").
This cvar works very much like
dmflags - you add up the values
for each flag to get the required setting:
-
GCF_SUICIDE (1) -
enable spectator suicide upon camera off
(default: on).
-
GCF_ALLOW_CHASE (2) -
enable CHASE mode (default: on).
-
GCF_ALLOW_FREE (4) -
enable FREE mode (default: off).
-
GCF_ALLOW_SAY (8) -
enable spectator chat (default: off).
-
GCF_VERBOSE (16) -
print message when changing camera mode (default: off).
-
GCF_WELCOME (32) -
enable welcome message (default: on).
-
GCF_AVOID_BOTS (64) -
avoid bots when showing scoreboard (default: on) - must be on
for Gladiator Bot (otherwise
it'll crash), and may be off for Eraser.
-
GCF_DEFAULT_ID (128) -
turn player id display on by default (default: on).
-
GCF_DEFAULT_TICKER (256) -
turn ticker tape on by default (default: off).
-
GCF_DEFAULT_FIXED (512) -
turn fixed cameras on by default (default: on) - this only takes
effect if the map has fixed cameras defined for it.
-
GCF_DEFAULT_AUTO (1024) -
turn auto chase camera position (creep camera) on by default (default: on).
-
GCF_DEFAULT_DEMO (2048) -
turn auto demo recording on by default (default: off).
-
GCF_LOCK_SERVER (4096) -
lock the server (refuse connection) in General Admission (tournament) mode
when match is in progress (default: off).
-
GCF_TEAMS (8192) -
use the gc_teams
cvar to distinguish between teams (default: off).
-
GCF_SPECTATOR (16384) -
replace in-game spectator mode (default: on) - flag is ignored in General Admission mode.
Note that setting this flag causes
spectator_password to override
gc_password, and
maxspectators to override
gc_maxcameras.
gc_password
- Spectator mode password (default is "" - i.e. no password).
- gc_maxcameras
- Maximum number of spectators allowed (archived, default is 4).
Set this to 0, to allow all players to become spectators. Value is ignored in General Admission mode.
- gc_maxplayers
- The maximum allowed players. This doesn't reject new clients,
but rather prevents a spectator from joining the game with
camera off,
when enough players are already playing
(default is 0, which disables this feature). Value is used only in General Admission mode.
- gc_autocam
- Set this to 1 in order to put the server in General Admission mode,
to force everyone to enter the game as spectators
(latched, default is 0).
- gc_motd
- The General Admission welcome message (default is
"\!GameCam\! General Admission\nEnjoy the Show!\n\n\ntype '\!camera\!' to see the menu").
- gc_ticker
- Name of ticker script, without extension (archived, default is "" - which loads an internal default script). Ticker script file name
extension is ".led".
- gc_maxscores
- The number of top scores to list on the ticker tape (archived, default is 5, set to 0 to list all players).
- gc_teams
- Used with GCF_TEAMS to distinguish between teams
(archived, default is "" - allowed values are "model", "skin", "gun", "model2", "model3", "model4").
Used in creep-cam mode to help it prefer tracking the other team's players.
- gc_update
- Number of minutes between timer updates in tournament mode (archived, default is 5 - 0 disables timer updates).
- proxy
- Proxy module chain string (serverinfo, latched).
- nextproxy
- Internal to proxy module loading mechanism (read-only).
Client Side
With the default settings GameCam replaces the in-game
spectator mode. Combined with the
camera menu
this means that clients don't need to use any of the following
commands
or
keyboard bindings ...
Camera Menu
The camera menu can only be accessed by spectators. The menu can be toggled with the
camera command or with the
TAB key (inven), and its
use is self evident. Note that most camera console commands are disabled while using the menu,
and camera mode changes take effect only when the menu is removed.
The following console commands are enabled while the menu is displayed:
camera off,
camera menu,
camera ? and
camera.
Console Commands
- camera
- toggle camera menu on/off (works for spectators only)
- camera menu
- toggle camera menu on/off
- camera ?
- show help message
- camera on [<password>]
- enter spectator mode, with optional password
- camera off [<password>]
- exit spectator mode, with optional password (password needed only in General Admission mode)
- camera id
- toggle identification of player in view (FREE and ACTION camera modes)
- camera free
- FREE camera mode
- camera chase
- CHASE camera mode
- camera action
- ACTION camera mode
- camera action normal
- ACTION camera NORMAL sub-mode
- camera action follow
- ACTION camera FOLLOW sub-mode
- camera max_xy [<value>]
- show/set maximum x/y lag for ACTION mode
- camera max_z [<value>]
- show/set maximum z lag for ACTION mode
- camera max_angle [<value>]
- show/set maximum yaw angle lag for ACTION mode
- camera select [auto | <id>]
- show/set current target in ACTION/CHASE mode
(auto reverts to automatic target selection in ACTION
mode)
- camera chase auto
- toggle camera auto position (creep-camera) in CHASE mode
- camera demo
- toggle auto demo recording
- camera ticker
- toggle display of ticker tape in ACTION and FREE mode
- camera inven
- toggle display of player inventory in CHASE mode
- camera layout
- toggle display of player layouts in CHASE mode (allows you to see if player is
watching the scoreboard or uses menus)
- camera fixed
- toggle the use of fixed cameras in ACTION mode, when such
cameras are defined
- The following commands are available only on a non-dedicated server for client #0 in
FREE mode:
- camera list
- list all fixed cameras
- camera add ["name"]
- add camera at current position, view angles and fov (default name is "unnamed camera")
- camera update ["name"]
- update current camera (will add camera if new)
- camera remove
- remove the current camera
- camera next
- go to the next camera
- camera prev
- go to the previous camera
- camera none
- deselect current camera
- camera save
- save cameras to file <basedir>/<game>/cameras/<mapname>.cam
Keyboard Bindings
While in spectator mode (camera on):
- use [ or ] (invprev, invnext) to enter CHASE mode from
FREE and ACTION modes
- use [ and ] (invprev, invnext) to switch to the previous/next client while in CHASE mode
- use BACKSPACE (invdrop) to enter FREE mode
- use ENTER (invuse) to enter ACTION mode
- use TAB (inven) to toggle the camera menu
- use F1 (help) or X (score) to toggle the scoreboard (updated every ~3 seconds)
- use CTRL (+attack) to reset manual CHASE camera position
- use mouse or normal movement keys to manually adjust CHASE camera position (camera can be moved up/down and
backward/forward, strafe left/right, turned up/down and left/right)
table of contents
Configuration
GameCam should work just fine without any
special configuration, but may look and behave much better with it.
The following first two sections explain how to tweak the CHASE camera and
the ACTION camera target selection. The third section
deals with fixed cameras (how to define and use them), and
the last section is a
description of the simple script language used for programming the
GameCam ticker tape.
CHASE Camera Target Selection
The GameCam CHASE camera has two modes of operation:
-
MANUAL - this is the familiar CTF chase camera, only that spectators can adjust the
camera position and view angles with the movement keys (or mouse). The camera
may be reset with the CTRL key (+attack command).
-
AUTO - the computer adjusts the camera position and view angles automatically to provide
the best view of the closest opponent. I refer to this mode as creep-camera because the first camera mod
to ever use this concept was CreepCam for
(classic) Quake (but the GameCam creep-camera
uses my own original algorithm).
Obviously, in order to get the best results, GameCam has to
figure out who are the chased player's opponents and who are his team mates. The problem is
that different mods use different ways to distinguish between teams.
By default GameCam detects teams by following the next rules:
-
if either DF_SKINTEAMS (64) or DF_MODELTEAMS (128) is set
in dmflags, then
GameCam detects teams by skin or by model (respectively)
-
if the game folder name has the string "ctf" (or "CTF") in it, then
GameCam detects teams by skin
But not all CTF games use skins for teams, and other mods use other methods (e.g. HeadHunters uses
disks). GameCam can be configured to distinguish between
teams by looking at their model, skin, gun, and auxiliary models 2, 3 and 4 (e.g. HeadHunters disks).
To do that just set the flag GCF_TEAMS (8192) in
gc_flags, and set
gc_teams to one of the following values:
"skin", "model", "gun", "model2", "model3" or "model4".
Long explanation, short solution ...
ACTION Camera Target Selection
The ACTION camera may be configured to focus on specific types of players,
based on a priority list.
By default, the ACTION camera focuses on the player that can see the maximum number
of players (favoring players with larger frag counts). This behavior may not suit some
mods - e.g. in CTF the camera should favor flag carriers, and in HeadHunters the camera
should focus on players carrying the largest number of heads.
When using the priority based target selection scheme,
GameCam
first attempts to find a player that matches one of the potential targets
specified in gamecam.ini. If a match is found, GameCam
focuses on that player (favoring players that see the most players and
have the most frags). If a match is not found, GameCam
reverts to the default selection scheme, and attempts to find the
spot where most of the players are located.
Each game folder should have its own gamecam.ini (if needed). This file holds
a list of potential targets, grouped by priority. Each target is specified
as "<type> <value>", where
<type>
is one of the following:
- model - player plugin model;
<value> is <model>/<skin>.
- gun - player gunindex model (weapon view model);
<value> is the model's (.md2) file path.
- model2 - player modelindex2 model;
<value> is the model's (.md2) file path.
- model3 - player modelindex3 model (CTF flag, HH heads);
<value> is the model's (.md2) file path.
- model4 - player modelindex4 model;
<value> is the model's (.md2) file path.
- shell - player shell;
<value> is a pair of numbers separated by a colon - <effect>:<renderfx>
(e.g. quad is 32768:0, pentagram is 65536:0, and 256:<color> is a color shell -
consult id software's source code for more values).
Several example configuration files are available for download.
Note that gamecam.ini contains the target list only and is not used for anything
else. Any console variable setting should be placed in your server's configuration
script (autoexec.cfg, server.cfg etc.).
Fixed Cameras
The ACTION camera can find its way around the map without any
help. The dynamic behavior of the camera generates very cool shots most of
the time. However, sometimes it looks better if the camera always films
the action from the same position in certain areas of the map.
To enable this you can define fixed cameras for each area in each map that
you think would be best covered from specific positions.
GameCam uses fixed cameras as
long as the player being filmed is visible by some camera. When the player goes out of
sight GameCam reverts to the free moving
ACTION camera, until another camera has the player in view.
So here's what you should do:
-
start up a listen (i.e. not dedicated) server and load the required map
-
set the flag GCF_ALLOW_FREE (4) in
gc_flags, so that you can
enter FREE mode
-
type
camera on
and then use the menu to switch to FREE mode (or type
camera free)
-
move through the level to find a good spot for the camera, tweak the zoom (fov) to your liking
and when ready type
camera add "<name>"
(where "<name>" is the name
of the camera, which is later displayed to spectators at the bottom of the screen)
-
repeat the last step for all other spots
-
use camera list
to list all the cameras, and
camera next
or camera prev
to cycle thru the cameras and review your work
-
use camera remove
to delete the current camera,
and camera update ["<name>"]
to modify its parameters
-
save the cameras to file with
camera save
(this will generate a file named mapname.cam under a new cameras
sub-folder in the current game's folder, where mapname is the name of the current
map)
(Linux: the cameras directory has to be created manually
before you attempt to save!)
The new camera file will be auto-loaded by GameCam
the next time you load that map, so that the above procedure can be used to edit an existing
camera file. To test your work I recommend you run the map with bots, to see whether the resulting
camera behavior looks good.
IMO it's not a good idea to cover all the map with cameras - a better approach seems
to use fixed cameras to cover large (open) areas or strategic spots, and let the
free moving camera have control over the rest of the map.
Ticker Tape Scripts
The GameCam ticker tape can be programmed
with a simple script language which is a subset of the script language used to program
the Java LEDSign Applet.
Script Commands
- Appear - display text
- Sleep - wait (current text is kept unchanged)
- ScrollLeft - scroll text from right to left
- ScrollRight - scroll text from left to right
- Blink - blink text several times with a specified delay
- Do - begin loop
- Repeat - end loop (loop is executed a specified number of times)
- Reload - reloads the script file (this allows an external utility to update the
script automatically!)
Commands Parameters
All script commands have parameters:
- delay - delay in frames (10 frames = 1 second - applies to Sleep and Blink commands only)
- times - times to perform command (applies to Repeat and Blink commands only).
Note that "Repeat times=-1" is used to generate infinite loops.
- clear - clear text flag (possible values: true or false),
this parameter overrides any of the following
- center - center text flag (possible values: true or false)
- startspace - number of spaces before text (ignored if centered)
- endspace - number of spaces after text (ignored if centered)
- text - text to display (must be last parameter on the line)
Note that some parameters have no effect on some commands so they are simply
ignored if encountered.
Text Codes
The ticker text may include the following escape sequences and codes:
- \!text\! - highlight text
- \" - quotation mark
- \\ - back slash
- \x00 - special character: hexadecimal ascii code ('x' and two hex digits)
- \000 - special character: octal ascii code (three octal digits)
- \{$cvar$} - any console variable (replace 'cvar' with name of cvar)
- \{sb} - top scores (number of entries controlled by gc_maxscores)
- \{tt} - current time (12 hour format)
- \{hh} - current hour (12 hour format)
- \{HH} - current hour (24 hour format)
- \{hm} - current minutes
- \{ss} - current seconds
- \{am} - "am" or "pm"
- \{AM} - "AM" or "PM"
- \{dd} - day of the week (Sun Mon etc.)
- \{DD} - day of the week (Sunday Monday etc.)
- \{dn} - day of the month
- \{mn} - month number (1-12)
- \{mm} - month name (Jan Feb etc.)
- \{MM} - month name (January February etc.)
- \{yy} - year (two last digits)
- \{YY} - year (four digits)
These escape sequences are also available for the General Admission MOTD.
Using The Script
After writing down your script save it to the current game folder with extension
".led". Set
gc_ticker
to be the name of this script file without the extension (e.g. "myscript" for "myscript.led").
The script will be loaded as soon as someone becomes a spectator.
Example Script
The following script is the internal script used by
GameCam
when gc_ticker
doesn't point to any valid script file.
Do
Appear center=true text=\!GameCam\! v1.02
Sleep delay=10
ScrollLeft center=true text=\x90\x80\x91 1998-99, Avi \"\!Zung!\!\" Rozen
Sleep delay=10
ScrollRight center=true text=http://www.telefragged.com/\!zungbang\!
Do
Sleep delay=3
Appear center=true text=http://www.telefragged.com/zungbang
Sleep delay=3
Appear center=true text=http://www.telefragged.com/\!zungbang\!
Repeat times=3
Sleep delay=10
ScrollLeft center=true text=\!TOP SCORES\! . . .
ScrollLeft endspace=39 text=\{sb}
Sleep delay=10
Appear center=true text=type '\!camera\!' to see the menu
Sleep delay=10
ScrollRight center=true text=\!GameCam\! v1.02
Repeat times=-1
table of contents
Compatibility
GameCam has been tested with Quake II v3.20
and the following mods on public servers:
Lithium II (see notes below),
Zoid's CTF and other CTF variants,
Rocket Arena II,
Weapons Of Destruction,
Action Quake 2,
HeadHunters 2
and more. I've tested GameCam with several other mods
and it seems to work just fine.
It's likely that GameCam can work with most
game modules out there, but there's no guarantee.
There are some known compatibility issues that I don't intend to address (for technical reasons):
-
The HUD and scoreboard are mostly broken with Lithium due to the unconventional layouts in this mod.
But the camera itself works just fine.
-
Some mods provide several formats for the scoreboard that can
be cycled thru with the score command -
GameCam can only show the first format available.
-
Some mods have parts of the scoreboard actually implemented as part of the statusbar (HUD).
GameCam does its own handling of the HUD, so
it might not be able to show the scoreboard correctly in these cases.
-
With a few mods the ACTION camera algorithm makes very little sense - and it'll look pretty
stupid. Proper configuration may solve this, but some
mods are just too original to handle. Remember that GameCam
also has an enhanced CHASE camera ...
-
GameCam supports emulated clients (i.e. bots) only
in ACTION mode (bots can't be chased). This feature has been tested with
Eraser v1.01,
Gladiator v0.9 and
CRBot v1.14 and is known to have
some quirks (for example: when the spectator is the only client,
bot chat messages are not displayed, and the CTF scoreboard plaques are lost after a level
change).
These problems are due to limitations inherent
to the proxy module concept, and the fact that client emulation is just that: emulation.
Note that you should clear the flag GCF_AVOID_BOTS in
gc_flags
in order to view the scoreboard with Eraser or CRBot. This flag must be set with
the Gladiator Bot, or else the server will barf an error and die as soon as you try to
view the scoreboard (this means that you can't view the scoreboard unless there is another real
client connected to the game).
GameCam overrides any game native
camera
console command (if it exists).
Currently GameCam is available
for Win95/98/NT, Linux (libc5 and glibc) and Solaris (Sparc).
table of contents
Bugs
The following issues are known, and will not be dealt with:
- The very first player to join the game in General Admission Mode,
will get several "can't find pic:"
messages printed to the console. Ignore it. It's harmless.
-
GameCam overflow protection may
prevent the camera menu from being displayed if you view the scoreboard and call up
the menu at the EXACT time when the scoreboard is updated (updates are
performed every 3 seconds or so). If this ever happens to you, just hit ESC and call up
the menu again.
- In coop mode: if a spectator in CHASE mode uses the help key (F1) before the
player does, the player's help icon will be removed. So just be polite
to the player you're chasing, and wait for him/her to view the help screen first.
- The client crashes (protection fault in ref_soft.dll) on base3.bsp, while
in FREE camera mode, while moving in a solid area (wall etc.), when using
software rendering mode.
This does not happen when using 3dfx openGL rendering (the same demo
works in 3dfx openGL, but crashes software rendering), so I'm inclined to blame ref_soft.dll.
Any ideas? does it happen on any other map? - please let me know.
table of contents
Feedback
Please let me
know of any bugs or compatibility issues that you encounter.
If you have improvement suggestions, requests, or need advice in
configuring
GameCam to work
with a specific mod, don't hesitate to contact me.
I would also very much like to know if you record demos with
GameCam -
DO NOT
e-mail demos, just send me a URL :-)
table of contents
Change Log
- 22 Apr. 1999 v1.02 final
-
- added: support for Unix
- fixed bug: ticker tape scrolling was jittery
19 Feb. 1999 v1.01 final
-
- modified: spectator in CHASE mode now sees the same chat
messages that the player sees (can't see other team's private messages)
- modified: GameCam spectators can't
chase in-game spectators anymore (this wasn't a bug but rather a designed
feature to help me debug another project)
- modified: fixed-cameras stop following players when they get out of sight
(camera no longer watches the walls!)
- fixed bug: closest player prefered by ACTION camera over priority target and/or
manually selected target (camera select)
15 Feb. 1999 v1.00 final (private release)
-
- modified: creep camera less likely to "see thru walls" in 3dfx OpenGL
(again)
14 Feb. 1999 v0.92 beta (private release)
-
- added standard flood protection for spectator chat messages (as in v3.20)
- added diagnostic message if client can't return to game with
camera off
(may happen when
password
key in player's userinfo is not correct)
- modified: enabled
camera off,
camera menu and
camera ?
(in addition to
camera)
while showing menu, other commands are disabled
13 Feb. 1999 v0.91 beta (private release)
-
- added new flag GCF_SPECTATOR to allow GameCam to
replace in-game spectator mode
(this means that spectator 1/0
may be used instead of
camera on/off)
- added security feature that makes the server add [CAMERA] prefix
to spectators' names when reporting to GameSpy, QStat etc.
- added
camera select <id>
in CHASE mode
- added
camera inven
and made TAB key (inven)
always show the camera menu
- added
camera layout
and disabled all keyboard binds except: menu navigation,
manual CHASE camera positioning (CTRL resets camera position),
[ and ] to switch players or enter CHASE mode,
ENTER to switch to ACTION mode and BACKSPACE to switch to FREE mode
- modified: made help
behave the same as
score
in deathmatch
- modified: made creep-camera less likely to "see thru walls" when using 3dfx OpenGL rendering
- modified: prevented camera mode changes when menu is removed during intermission
- fixed bug: occasional "dumped unreliable" warning message upon level change, with auto
demo recording turned on
- fixed bug: GCF_ALLOW_FREE and GCF_ALLOW_SAY flags were swapped
- fixed bug: scoreboard was broken in some mods due to GameCam's statusbar
(the statusbar is now disabled when viewing the scoreboard in ACTION and FREE
modes)
07 Feb. 1999 v0.90 beta (private release)
-
- added option to manually adjust CHASE camera position and view angles
- added automatic camera positioning in CHASE mode (aka CreepCam)
- added camera menu system
- added automatic demo recording facility
- added new cvar gc_flags and removed
gc_allow_say,
gc_allow_chase,
gc_suicide,
gc_verbose,
gc_welcome
- added option for spectators to chat privately with each other using
say_team
(works even when camera chat is disabled)
- added option to lock server during match (refuses connections)
- added 10 sec count-down at end of match in tournament mode
- added option to announce time left for match (in tournament mode) at a configurable rate
- modified: made password required for
camera off
instead of
camera on
in tournament mode
- modified: gc_maxcameras
is now ignored in tournament mode
- modified: gc_maxplayers
is now ignored when not in tournament mode
- modified: ACTION camera snaps-to player instead of turning toward him
when changing positions
- modified: ACTION camera closes-in on the action if it's too far away
- modified: improved ACTION camera player-body avoidance
- modified: better handling of blank names for fixed cameras
- fixed bug: ACTION camera could never find the closest player
- fixed bug: Gladiator Bot crashed when attempting to view the scoreboard
(added flag GCF_AVOID_BOTS to disable the scoreboard if there are no other real clients)
21 Jan. 1999 v0.31 beta (private release)
-
- modified: fixed-camera transition logic redesigned to prevent the camera from
"watching the walls" when a player goes out of view (works most of the time...)
20 Jan. 1999 v0.30 beta (private release)
-
- added fixed-camera system
- added option to select specific player as target in ACTION mode
- added programmable ticker tape
- added esacpe sequences to tournament mode motd ({sb} etc.)
- modified: minor source update to conform with Quake II v3.20 source code
- modified: spectators are now frozen upon intermission
- modified: new statusbar required redesign of overflow protection
- modified: ACTION camera tries to avoid being inside players
- modified: ACTION camera turn rate made proportional to angle difference
- modified: ACTION camera now has a minimum stay time on players
- modified: ACTION mode is now the default camera mode instead of FREE mode
(this means that FREE mode can be truly disabled now)
- modified: improved fov handling
- fixed bug: ACTION camera "sinks" into solid when following player on elevators
- fixed bug: (internal) negative index in gc_argv returns something other than ""
28 Oct. 1998 v0.25 beta
-
- fixed bug: timelimit appeared as "30.00000" instead of "30"
- modified: removed gc_maxcameras from server info
- added option to disable manual entry to FREE mode
- added configurable welcome message to the General Admission Mode
20 Oct. 1998 v0.24 beta (private release - "HeadGames Edition")
-
- added a limited General Admission (Tournament) Mode
- fixed bug: spectators could not view the scoreboard during intermission
- fixed bug: entry/exit from camera mode crashed the server during intermission (camera entry/exit is now
disabled during intermission)
27 Sep. 1998 v0.23 beta
-
- fixed bug: in some mods spectators caused all players to see the scoreboard
25 Sep. 1998 v0.22 beta
-
- fixed bug: random gun model displayed upon changing levels (FREE mode)
24 Sep. 1998 v0.21 beta
-
- added option to disable spectator suicide upon camera off
- fixed bug: potential spectator overflow upon camera off
- fixed bug: priority based target selection stopped working upon level change
- fixed bug: spectators were sometimes spawned outside the map (again...)
18 Sep. 1998 v0.20 beta (private release)
-
- added spectator mode password protection
- added option to limit number of spectators
- added optional welcome message
- modified the camera help message
- added priority based target selection in ACTION camera mode
- fixed bug: spectators could sometimes overflow in CHASE camera mode
03 Sep. 1998 v0.14 beta
-
- modified: ACTION camera will "watch the dead" only if the current player dies
- modified: ACTION camera will keep following the same player in FOLLOW sub-mode
- added option to manually switch to other players in ACTION mode
- fixed bug: ACTION camera was following players even after they were out of view
- fixed bug: ACTION camera was following players hidden in non-transparent water
- fixed bug: bot view angles were fixed at (0,0,0) in ACTION camera mode
- fixed bug: spectators were still spawned outside the map upon level change
29 Aug. 1998 v0.12 beta
-
- added support for emulated clients (i.e. bots)
(CHASE mode enabled with real clients only)
- added option to view the client's layouts while in CHASE mode
- fixed bug: ACTION camera was following non-GameCam spectators
- fixed bug: was displaying player id of non-GameCam spectators
- fixed bug: spectators were sometimes spawned outside the map upon level change
19 Aug. 1998 v0.11 beta
-
- fixed bug: spectators received repeat chat messages or none at all
17 Aug. 1998 v0.10 beta
-
- first public release.
table of contents
Download
The latest version of GameCam can be found at the
GameCam web site:
http://www.telefragged.com/zungbang/gamecam
table of contents
Credits
- Paul Jordan
- For releasing the source code of his action camera (Thanks!)
(the link seems to be broken - you can find a modified version of the q2cam source as part of the
Eraser Bot source).
Monsto Brukes
- The Main Man at HeadHunters, for
ideas, suggestions, beta testing, promotion and confidence in beta-ware. And also for
some kick-ass demos, that simply made me happy.
Kip Kulich (aka devide)
- Master of frag.parrett.net, for compiling and testing the
Linux binaries (you own man!).
Frank Cabanski
- For suggestions, beta testing and those cool camera files for the ZTN maps.
dhazel/trix
- For "discovering" GameCam.
id Software
- For Quake II. Duh.
TeleFragged
- For hosting GameCam.
table of contents
Legal Stuff
GameCam is Copyright
© 1998-99, by Avi "Zung!" Rozen.
GameCam contains code
fragments from id software's baseq2 and CTF source code, and from
q2cam by Paul Jordan - who have the respective copyright.
GameCam may be
distributed freely as long as the distribution archives (zip and tar.gz files) remain unmodified.
GameCam may not to be used for commercial purposes.
table of contents