GameCam 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).