GameCam 1.02 final
Copyright © 1998-99 by Avi "Zung!" Rozen

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: 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:

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: 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:

  1. rename the game library from gamei386.so to gamei386.real.so
  2. 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:


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