Arms Race
It is covered here for historical and technical reference.
Arms Race (internally: gungameprogressive
) is a game mode in Counter-Strike: Global Offensive.
A map can be launched in this game mode by invoking the console commands game_type 1; game_mode 0; map <mapname>
, or shorter: map <mapname> gg
. See Counter-Strike:_Global_Offensive/Game Modes for details and tips.
On official servers, Arms Race is played as a skirmish game mode, meaning that additionally, sv_skirmish_id 10 is set, too. This has the side effect that the game mode icon seen in the loading screen has a shield and that the map voting process at the end of the game also "offers" a different war game.
Game Mode Description
Officially, this game mode plays as follows:
- The game is a single extended round with instant respawn.
- Players start with a weapon and progress to different weapons as they get kills. When a map loads, the game generates a random weapon progression, consisting of 2 sniper rifles, 3 rifles, 1 machine gun, 3 SMGs, 4 pistols, 2 shotguns and the Golden Knife, in this order.
- Killing a player with the knife steals a progression: The killer progresses, the killed loses a progression (assuming they are not at the first weapon).
- The leading player of a team is highlighted to other players and killing them grants an instant progression.
- The first player to get a kill with the golden knife wins the match.
Map Requirements
The only required entities for a map to work in Arms Race are spawn points for each team.
Spawn points
Arms Race uses the normal info_player_(counter)terrorist as well as the info_armsrace_(counter)terrorist entities as player spawns. The spawn priorities of all of these are ignored in Arms Race, so a terrorist will always spawn at a randomly chosen spawnpoint from all existing info_player_terrorists and info_armsrace_terrorists.[confirm]
To use the same spawn points like in Deathmatch, one could...
- select all info_deathmatch_spawn entities (e.g. using Entity Report), copy and paste them in the same spot (e.g. ⇧ Shift+→ and then ←), change the class to info_armsrace_terrorist and do the same again for info_armsrace_counterterrorist. Also, you might want to disable the default spawns, see below.
- execute the VScript code
SendToConsoleServer("mp_randomspawn 1; mp_randomspawn_los 1")
if the current game mode is Arms Race, which might not require a map recompile.
Modifying Gameplay
Weapon Progressions
ConVar | Default | Description |
---|---|---|
mp_ggprogressive_use_random_weapons
|
1 |
|
mp_ggprogressive_random_weapon_kills_needed
|
2 | If mp_ggprogressive_use_random_weapons is set to 1, this determines the number of kills that a player must make with a weapon to progress to the next (except for the Golden Knife, which requires one kill).
|
sv_ggprogressive_autosniper_first
|
1 | |
sv_ggprogressive_shotgun_last
|
1 |
|
To play with a custom weapon progression, it is suggested to define it in the file csgo/gamemodes_server.txt
, then set mp_ggprogressive_use_random_weapons
to 0 and launch a map in this game mode, see above.
The file csgo/gamemodes_server.txt
could look like this:
"GameModes_Server.txt" { "gameTypes" { // ... "gungame" { "gameModes" { "gungameprogressive" { // ... "weaponprogression_ct" { "ak47" { "kills" "3" } "awp" { "kills" "3" } "knifegg" { "kills" "1" } } "weaponprogression_t" { "ak47" { "kills" "3" } "awp" { "kills" "3" } "knifegg" { "kills" "1" } } } // ... } } // ... } // ... }
|
// ...
should indicate that there can be much more in it.weapon_
prefix.Related ConVars
ConVar | Default | Description |
---|---|---|
mp_ggprogressive_healthshot_killcount
|
3 | Grant healthshots in Arms Race after this number of kills. |
mp_ggprogressive_round_restart_delay
|
15 | Number of seconds to delay before restarting a round after a win in Arms Race. Note:This is overriden by
mp_match_restart_delay . |
Disabling Default Spawns using VScript
TYPE <- ScriptGetGameType()
MODE <- ScriptGetGameMode()
if (TYPE == 1 && MODE == 0) // Arms Race uses game_type == 1 and game_mode == 0
{
EntFire("info_player_terrorist", "SetDisabled")
EntFire("info_player_counterterrorist", "SetDisabled")
}
else
{
EntFire("info_player_terrorist", "SetEnabled")
EntFire("info_player_counterterrorist", "SetEnabled")
}
If you want to use the info_armsrace_terrorist and info_armsrace_counterterrorist spawns exclusively, the info_player_terrorist and info_player_counterterrorist entities must be disabled, unless there are none. One way to do this only for Arms Race is writing a VScript such as the one on the right.
- Create a text file with the content shown on the right. Save it at
csgo/scripts/vscripts/
or in a subfolder from there as a.nut
file. - In Hammer, create a logic_script and add this file to its
Entity Scripts
. - In-game, check the console when running the map to see if something goes wrong. If a team is full, there are most likely no valid spawn points for that team.
- When publishing the map, this script must also be packed (see e.g. VIDE).
Bots
The current Deathmatch bots can be used in Arms Race, but need a slight modification. When they spawn, they are programmed to buy a weapon and because they can't buy in Arms Race, they get stuck "buying". To overcome this, one could copy and paste csgo/scripts/ai/deathmatch/bt_default.kv3
, rename it and remove these lines:
{ type = "action_buy" },
In-game, by setting mp_bot_ai_bt "scripts/ai/deathmatch/<new filename>.kv3", all bots will then use this modified behavior tree without getting stuck.
|