Enemy Territory: QUAKE Wars Competition Mod Guide
The Enemy Territory: QUAKE Wars Competition Mod allows tournament organizers to easily implement and enforce specific rule-sets and enhances other competition related features of the game, such as ETQW:TV. It does this by providing additional Cvars and commands to both the players and server admins.
This is a brief guide explaining some of those Cvars and commands and providing examples where necessary.
- 1 Server Rules
- 2 Weapon and Upgrade Unlocks
- 3 Class, Weapon and Deployable Limits
- 4 Pausing and Time Outs
- 5 Spectating and 'Spec Labels'
- 6 Vampire/Violator Team Charge Bar
- 7 Signed Configs
- 8 Alternate Vehicle Spawns
- 9 General Changes
To run Competition Mod rules on a server you'll need to set si_rules to sdGameRulesCompetition
Weapon and Upgrade Unlocks
Some weapons and proficiency upgrades can be unlocked for all players from the match start in Competition Mod, despite proficiency being turned off. Setting the following Cvars to 1 will unlock these weapons and upgrades.
g_unlockGrenadeLauncher – unlocks the Grenade/Plasma Launcher for the Engineer/Constructor
g_unlockScopedRifle – unlocks the Scoped Assault Rifle/Accurised Lacerator for the Field Ops/Oppressor
g_unlockExtraClip – unlocks extra ammo for all player classes
g_unlockFasterSprint – unlocks faster movement speed for all player classes
g_unlockWeaponSpread – unlocks reduced weapon spread for all weapons
Class, Weapon and Deployable Limits
Competition Mod also allows admins to set restrictions on the number of classes and deployables available to a team, as well as limiting some weapon types. The value placed against any of the following Cvars is the maximum number of that game element allowed. A value of -1 means there is no limit.
g_maxSoldiers – sets the number of GDF Soldiers allowed
g_maxMedics – sets the number of GDF Medics allowed
g_maxEngineers – sets the number of GDF Engineers allowed
g_maxFieldOps – sets the number of GDF Field Ops allowed
g_maxCovertOps – sets the number of GDF Covert Ops allowed
g_maxAggressors – sets the number of Strogg Aggressors allowed
g_maxTechnicians – sets the number of Strogg Technicians allowed
g_maxConstructors – sets the number of Strogg Constructors allowed
g_maxOppressors – sets the number of Strogg Oppressors allowed
g_maxInfiltrators – sets the number of Strogg Infiltrators allowed
g_maxGPMGs – sets the number of GPMGs/Hyperblasters allowed per team
g_maxRocketLaunchers – sets the number of Rocket Launchers/Obliterators allowed per team
g_maxSniperRifles – sets the number of Sniper Rifle/Railguns allowed per team
g_maxHeavyWeapons – limits the total number of GPMGs/Hyperblasters and Rocket Launchers/Obliterators allowed per team
g_maxGrenadeLaunchers – sets the number of Grenade/Plasma Launchers allowed per team
g_maxAITs – sets the number of Artillery Interceptor Turrets allowed per team
g_maxAPTs – sets the number of Anti-Personnel Turrets allowed per team
g_maxAVTs – sets the number of Anti-vehicle Turrets allowed per team
Field Ops/Oppressor Artillery
g_maxArtillery – sets the number of Artillery/Rail Howitzers allowed per team
g_maxHammers – sets the number of Hammers/Dark Matter Cannons allowed per team
g_maxRocketArtillery – sets the number of Rocket Artillery/Plasma Mortars allowed per team
Covert Ops/Infiltrator Radar
g_maxRadars – sets the number of Radars/Psi-Radars allowed per team
g_maxMines – sets the total number of mines a team is allowed to have deployed at any one time
Example Server Config
This is an example of a server config file limiting deployables, weapons, class, and mines:
// ************************************************************** // ******* ******** // ******* Example class, dep and weapon limits config ******** // ******* ******** // ************************************************************** // Turret restrictions set g_maxAITs 1 // Allows 1 Artillery Interceptor Turret per team set g_maxAPTs 1 // Allows 1 Anti-Personnel Turret per team set g_maxAVTs 1 // Allows 1 Anti-Vehicle Turret per team // Artillery Restrictions set g_maxArtillery 1 // Allows 1 Artillery or Rail Howitzer per team set g_maxRocketArtillery 1 // Allows 1 Rocket Artillery or Plasma Mortar per team set g_maxHammers 1 // Allows 1 Hammer or Dark Matter Cannon per team // Weapon Restrictions set g_maxRocketLaunchers 1 // Allows 1 Rocket Launcer or Obliterator per team set g_maxGPMGs 2 // Allows 2 GPMGs or Hyperblasters per team set g_maxGrenadeLaunchers -1 // Allows unlimited Grenade Launchers per team if the Grenade Launcher is available set g_maxHeavyWeapons -1 // Set no limit to Heavy Weapons set g_maxSniperRifles 1 // Allows 1 Sniper Rifle or Rail Gun per team // Mine Limit set g_maxMines 8 // Allows each team to only have a maximum 8 mines deployed at one time // Radar Limit set g_maxRadars 1 // Allows each team to deploy only 1 Radar at a time // Strogg Class Limits set g_maxAggressors 2 // Limits Strogg to 2 Aggressors at any one time set g_maxTechnicians 2 // Limits Strogg to 2 Technicians at any one time set g_maxConstructors 3 // Limits Strogg to 3 Constructors at any one time set g_maxOppressors 2 // Limits Strogg to 2 Oppressors at any one time set g_maxInfiltrators 2 // Limits Strogg to 2 Infiltrators at any one time // GDF Class Limits set g_maxSoldiers 2 // Limits GDF to 2 Soldiers at any one time set g_maxMedics 2 // Limits GDF to 2 Medics at any one time set g_maxEngineers 2 // Limits GDF to 2 Engineers at any one time set g_maxFieldOps 4 // Limits GDF to 4 Field Ops at any one time set g_maxCovertOps 1 // Limits GDF to 1 Covert Op at any one time
Pausing and Time Outs
Further support has been added for pausing matches as well as a new Team Timeout feature. Any player on either team can call a time out at any time during a game (if allowed on the server), this will pause the game for a set amount of time before counting the game back in and restarting it. Related Cvars and Commands are listed below.
admin pause – Command to pause a game indefinitely
admin unpause – Command to un-pause a game
g_unpauseTimer – Sets the duration, in seconds, of the match restart countdown that plays after a pause or time out has ended
g_maxTeamTimeouts – Determines how many timeouts a team can use per match, value of -1 turns timeouts off
g_teamTimeoutLength – Sets the duration, in minutes, a timeout will last
callTimeout – Command used to start a timeout, any player is able to call a time out
Spectating and 'Spec Labels'
With Competition Mod spectators are now able to view players in free fly mode with much greater control and feedback. Support is added for pre-set cameras, binding hot keys for viewing specific clients and for clicking on individual players to jump into their first person perspective. In addition labels can now be added to players when spectating, allowing much easier identification of individuals. These spec labels are customized via client side Cvars.
This command allows the user to jump to a specific point on the map, looking in a pre-set direction, essentially jumping to user defined camera. The command is set in the following format:
Spectate Position <x> <y> <z> <yaw> <pitch> <roll>
Here X, Y and Z are the coordinates at which the camera will be placed, Yaw, Pitch and Roll set the direction in which it will be looking. The easiest way to obtain these values is to start ETQW, launch Play Computer, fly to the position at which you'd like the camera to be placed and then use the command 'getviewpos'. This will capture the coordinates for your current point of view to the clipboard and you can use these for your camera. You will need net_allowcheats to be set to 1 to be able to use the getviewpos command.
Obviously this is not very easy to do on the fly so it is best to make a series of binds for each map and then store them in a config file. An example of a bind for a ready made camera for the map Valley is:
bind k "spectate position 9044.66 -4553.08 1891.27 24.87 -334.34 0.00"
Other spectate commands
Spectate Client - Jumps to spectating a specific player based on the client number or the player name entered e.g. "Specate Client 1" or "Spectate Client Tapir" for a player called Tapir
Spectate next – Jumps to the next player
Spectate prev – Jumps to the previous player
Spectate objective – Jumps to a player currently attempting to complete the objective or jumps to view a planted HE/Plasma charge (only works on Primary Objectives)
Pressing the use key (_activate) whilst a player is under the spectators crosshair will now jump to that players point of view, allowing for more fluid transitions between first person and free fly mode
Example spectator config
This is an example of a client config file set up to jump to specific clients, map locations, and objectives.
// ********************************** // ******* ******** // ******* Specator Config ******** // ******* ******** // ********************************** // Number keys are bound to specific clients based on client number (ignores clients that are also spectating) bind 1 "spectate client 1" bind 2 "spectate client 2" bind 3 "spectate client 3" bind 4 "spectate client 4" bind 5 "spectate client 5" bind 6 "spectate client 6" bind 7 "spectate client 7" bind 8 "spectate client 8" bind 9 "spectate client 9" bind 0 "spectate client 10" bind - "spectate client 11" bind = "spectate client 12" // Keys bound to specific clients based on the player's name bind q "spectate client AO" bind w "spectate client 'Bongo Boy'" bind e "spectate client ducks" bind r "spectate client Digibob" bind t "spectate client RR2DO2" bind y "spectate client Wils" bind u "spectate client MoP" bind i "spectate client Anti" bind o "spectate client Smooth" bind p "spectate client Jose" bind [ "spectate client Huntle" bind ] "spectate client JFK" // Keys bound to toggle through clients bind rightarrow "spectate next" bind leftarrow "spectate prev" // Pre-set cameras for Valley bind kp_end "spectate position 9044.66 -4553.08 1891.27 24.87 -334.34 0.00" // Views obj. 1 bind kp_downarrow "spectate position 3862.32 1435.13 1879.86 131.09 -353.98 0.00" // Views Tunnel Spawn bind kp_pgdn "spectate position 1085.68 8092.22 1955.78 274.70 -337.35 0.00" // Views obj. 2 bind kp_leftarrow "spectate position -6847.38 -4325.94 2230.2 244.78 -340.67 0.00" // Views obj. 3 bind kp_5 "spectate position -5549.77 -9793.78 1934.23 174.49 -330.27 0.00" // Views obj. 4 // Jumps to spectating any player currently achieving the objective bind a "spectate objective"
Spec Labels are fully customizable name tags that hover next to players in-world when spectating them to aid a viewers understanding of who they are watching. They are also used to display the amount of time remaining on a planted HE/Plasma charge. The labels are controlled client side and are usable with ETQW:TV. The following Cvars are used for editing spec labels:
g_showPlayerNames – cvar used to toggle player spec labels on/off
g_showChargeTimers – cvar used to toggle in-world HE/Plasma charge timers on/off
g_specLabelAlpha – adjusts the alpha of the text on the spec label
g_specLabelBackground – cvar used to toggle the label background on/off
g_specLabelBackgroundColor – adjusts the background color of the label, format "<R> <G> <B> <Alpha>"
g_specLabelDropShadow – adds or removes drop shadow on the label text
g_specLabelMaxDistance – adjusts the distance at which spec labels become visible
g_specLabelPosition – adjusts where a label appears in relation to a player (0 = above, 1 = center, 2 = below)
g_specLabelSize – adjusts the size of the label
g_specLabelShowAll - cvar used to show labels even for players that are hidden (eg behind a wall)
g_specLabelTeamColors - enables the names to be coloured based on the team
g_specLabelGDFColor – adjusts the text color on GDF labels, format "<R> <G> <B> <Alpha>"
g_specLabelStroggColor – adjusts the text color on Strogg labels, format "<R> <G> <B> <Alpha>"
g_showFreeFlyText – cvar used to add/remove the 'free fly mode' text that appears in the center of the screen
Vampire/Violator Team Charge Bar
Competition Mod makes it possible to have a shared charge bar on the Vampire/Violator for each team. When turned on this can be used to prevent teams from 'spamming' fire support at the same time or in quick succession.
g_teamAirstrikeCost - This cvar sets the percentage of the team's charge bar a single air strike will use, set to 100 a single Vampire strike would use the whole charge bar and it would have to fully re-fill before another Vampire could be used. Set to 50 a single Vampire being thrown would cause the charge bar to re-fill from half way, halving the time before another strike could be made. If the cvar is set to -1 then no shared team charge bar is set.
g_teamAirstrikeRechargeTime – Sets the time in seconds it takes for the whole charge bar to re-fill
Support is also available for checking configs between the client and the server, this allows players to ensure that the config that is being run on the server is the correct one. For example if the server is supposed to be running OfficialComp.cfg for a tournament players would be able to download it to their own machine and then check it against the server's version, comparing checksums to see if they are the same. The following commands are used to compare configs, in each case the name of the config to check is entered after the command.
getConfigChecksum - generates a checksum for a config stored on the client and prints it to the player requesting it
getServerConfigChecksum - generates a checksum for a config stored on the server and prints it to the player requesting it
admin configChecksum - generates a checksum for a config stored on the server and prints it to all players on the server
compareConfigs - compares a config stored on the client with one on the server and tells the player if they match or not
admin compareConfigs - compares a config stored on the client with one on the server and tells all players on the server if they match or not
Alternate Vehicle Spawns
Some maps now have an alternate set of vehicle spawn points available through Competition Mod. These can be turned on or off by setting the cvar g_useTournyVehicles to 1 or 0.
The affected maps are:
Force Limbo Spectate
These cvars allow server admins to prevent 'gibbed' players from viewing the battlefield from their corpse.
g_forceLimboSpectate – when set to 1 this forces gibbed players to spectate team mates until they re-spawn, or if all team mates are dead forces them to the limbo menu
g_forceLimboSpectateMenuSticky – cvar sets if the limbo menu should automatically close if a player forced to the limbo menu re-spawns
Competition Mod provides a series of commands that allow players to select spawn points across the map without having to use the limbo menu. These commands can be bound to keys to allow very fast spawn point selection.
setSpawnPoint next – selects one spawn ahead of the player's current selection
setSpawnPoint prev – selects one spawn back from the player's current selection
setSpawnPoint default – selects the current front-line spawn point
setSpawnPoint base – sets the player's spawn point to the main base (Command Center/Domination Hub)
Auto Demo Recording and Screenshots
It is possible for players to auto record their own demo files and generate screenshots of the end game scoreboard using Competition Mod. These files can also be given a customized naming format.
g_autoRecordDemos – set to 1 this cvar starts demo recording automatically when the match is started g_autoScreenshot – set to 1 this cvar will automatically take a screenshot of the end game scoreboard
Auto recorded demos and auto screenshots can also have a user defined name format applied to them using the cvars g_autoDemoNameFormat and g_autoScreenshotNameFormat. These default to the following formats:
These would result in the following file names respectively:
Separate Vehicle Sensitivity Settings
In Competition Mod it's possible to adjust mouse sensitivity for specific vehicles, allowing players to have high sensitivity in some vehicles with low sensitivity in others, all without effecting their sensitivity when playing as Infantry. The Cvars used to scale the sensitivity in the various vehicles are listed below. Each vehicle has two sensitivity cvars, one for vertical movement, one for horizontal. To adjust the general sensitivity then the value of both cvars should be the same.
m_bumblebeePitchScale – adjusts the vertical sensitivity in the Bumblebee
m_bumblebeeYawScale – adjusts the horizontal sensitivity in the Bumblebee
m_heavyVehiclePitchScale – adjusts the vertical sensitivity in the Titan, Cyclops and Desecrator
m_heavyVehicleYawScale – adjusts the horizontal sensitivity in the Titan, Cyclops and Desecrator
m_helicopterPitchScale – adjusts the vertical sensitivity in the Anansi and Tormentor
m_helicopterYawScale – adjusts the horizontal sensitivity in the Anansi and Tormentor
m_lightVehiclePitchScale – adjusts the vertical sensitivity in the Trojan, Armadillo, Hog and Husky
m_lightVehicleYawScale – adjusts the horizontal sensitivity in the Trojan, Armadillo, Hog and Husky
m_playerPitchScale – adjusts the vertical sensitivity as infantry and in the Icarus
m_playerYawScale – adjusts the horizontal sensitivity as infantry and in the Icarus
Players are also able to switch yaw and roll between the keyboard and the mouse if they choose to using the cvar ui_swapFlightYawAndRoll. Setting this to a value of 1 causes the mouse to become the control for yaw and the keys to become the control for roll.
Look at Killer/Medic
Normally a dead players point of view will snap to look towards their killer or a nearby medic, this feedback is to help the user understand who just killed them or if they should tap out or not. With Competition Mod the player is now able to turn off this functionality if they choose to.
g_lookAtKiller – set this to a value of 0 to turn off the camera tracking a killer
g_lookAtMedic – set this to a value of 0 to turn off the camera tracking nearby Medics/Technicians