CS2 server.cfg and Game Modes: game_type, game_mode, Mapgroups, Cvars
Most of what makes one CS2 server feel different from another lives in plain text files: server.cfg for settings that apply everywhere, optional gamemode_*_server.cfg files for settings that belong to one mode, and a pair of numbers, game_type and game_mode, that decide which mode loads at all. Mix them up and your changes silently get overwritten, which is a very common complaint among admins.
This guide explains what each file does, which number pairs map to which mode, how mapgroups and the map cycle work, and which cvars to change first. Mode defaults below were read from the configuration files that ship with the game and the game mode definitions, checked on 2026-11-03. Valve changes those files in updates, so confirm important values on your own server by typing the cvar name on the Console tab, or search with find mp_.
server.cfglives ingame/csgo/cfg/inside the server install. On ChicagoServers, edit it on the Configs tab (Server settings (server.cfg)). Mode-specific overrides aregamemode_<mode>_server.cfgfiles in the same folder; the Configs tab has mode-only configs for Competitive, Casual and Deathmatch.- Choose the mode with the Game mode field on the Startup tab. The game identifies modes by
game_typeandgame_modepairs: Casual is 0/0, Competitive 0/1, Wingman 0/2, Arms Race 1/0, Demolition 1/1, Deathmatch 1/2, Custom 3/0. - Shipped competitive defaults:
mp_maxrounds 24,mp_roundtime 1.92,mp_freezetime 15,mp_buytime 20,mp_startmoney 800. Casual and the other modes use different values. - Gameplay cvars set only in
server.cfgor live from the console can be reset by the mode config on the next map load. Put them in the matchinggamemode_*_server.cfg. - Switch maps live with
changelevelon the Console tab. To change the mode for good, change Game mode (and Map) on Startup, then Save startup and Restart.
On this page
- Where server.cfg lives and how the config files fit together
- How to edit these settings on a ChicagoServers server
- game_type and game_mode: the mode table
- Set the mode in the panel, or change it while the server runs
- gamemode_*_server.cfg and the exec order
- Mapgroups and the map cycle
- Important cvars and their real defaults
- Bots, GOTV and sizing the server
- Common mistakes
- Frequently asked questions
Where server.cfg lives and how the config files fit together
In a standard install the server's configuration folder is game/csgo/cfg/. The game ships a server.cfg there that is essentially empty; its only content is a comment pointing at server_default.cfg. That makes it a clean place for your own settings. On ChicagoServers you do not have to find the folder for the main files: the Configs tab opens them for you.
| File | Folder | Purpose | Edit it? |
|---|---|---|---|
server.cfg | game/csgo/cfg/ | Your settings that apply in every mode: region, GOTV, logging. The server name and passwords come from the Startup tab | Yes: Configs tab, Server settings (server.cfg) |
autoexec.cfg | game/csgo/cfg/ | Optional file run once at startup, community convention | Optional: Files tab |
gamemode_casual.cfg, gamemode_competitive.cfg and so on | game/csgo/cfg/ | Valve's defaults for each mode | No, updates can overwrite them |
gamemode_<mode>_server.cfg | game/csgo/cfg/ | Your overrides for one mode. You create these files; they are not present by default | Yes: Configs tab for Competitive, Casual and Deathmatch; Files tab for other modes |
gamemodes.txt | Packed inside the game content archive | Valve's list of modes, map groups and which configs each mode runs. Its header says not to modify it. You will not normally find it as a loose file | No |
gamemodes_server.txt | game/csgo/ (community convention) | Your own mode and mapgroup definitions. Valve's header in gamemodes.txt refers you to a gamemodes_server.txt.example file as the starting point. Community documentation places it in this folder | Yes, advanced: Files tab |
mapcycle.txt | game/csgo/ (the location most host documentation gives) | Plain list of maps for rotation | Yes: Files tab |
The rule that prevents most mistakes: edit server.cfg and the _server.cfg files, and leave Valve's own gamemode_*.cfg files alone. Valve updates replace the shipped files, and an edit you made there can disappear after the next game update. If you have not set up the server yet, start with the CS2 dedicated server setup guide.
How to edit these settings on a ChicagoServers server
- Pick the right place
Name, passwords, map and mode are Startup fields. Everything else in
server.cfgand the mode files is on the Configs tab. - Open the Configs tab
Sign in at panel.chicagoservers.co, open your server, then the Configs tab, and pick Server settings (server.cfg) or the mode-only config for Competitive, Casual or Deathmatch from the list.
- Edit and save
Use the Settings view for the labelled fields, or switch to Text for the whole file and paste the snippets from this guide. Click Save.
- Restart
Click Restart at the top of the page. Changes apply when the game next starts. A file that does not exist yet says so, and saving creates it.
Other files, such as mapcycle.txt, gamemodes_server.txt or a gamemode_<mode>_server.cfg for a mode without its own Configs entry, are edited on the Files tab: open the file in the editor and click Save, or use SFTP from the blue SFTP bar for bigger uploads.
game_type and game_mode: the mode table
CS2 identifies a mode by two numbers. The pairs below come from the game's own gamemodes.txt, and the five aliases at the bottom are the ones Valve's dedicated server page lists for the game_alias command.
| Mode | game_type | game_mode | Shipped config files (run in this order) |
|---|---|---|---|
| Casual | 0 | 0 | gamemode_casual.cfg, gamemode_casual_server.cfg |
| Competitive | 0 | 1 | gamemode_competitive.cfg, gamemode_competitive_server.cfg |
| Wingman (2v2) | 0 | 2 | gamemode_competitive2v2.cfg, gamemode_competitive2v2_server.cfg |
| Weapons Expert | 0 | 3 | gamemode_competitive.cfg, a weapons-expert config, then gamemode_competitive_server.cfg |
| Retakes | 0 | 5 | gamemode_casual.cfg, gamemode_casual_server.cfg, gamemode_retakecasual.cfg |
| Arms Race | 1 | 0 | gamemode_armsrace.cfg, gamemode_armsrace_server.cfg |
| Demolition | 1 | 1 | gamemode_demolition.cfg, gamemode_demolition_server.cfg |
| Deathmatch | 1 | 2 | gamemode_deathmatch.cfg, gamemode_deathmatch_server.cfg |
| Custom | 3 | 0 | gamemode_custom.cfg, gamemode_custom_server.cfg |
game_aliasacceptscasual,competitive,wingman,deathmatchandcustom, and sets both numbers at once.- The same file also defines older and special entries: Training, Cooperative (Guardian and Co-op Strike), Skirmish and Danger Zone. Some are leftovers from CS:GO. Do not build a community server around them unless you have tested them on the current build.
- Premier is not in this table because it is Valve's own matchmaking mode. The shipped game mode definitions contain no Premier entry, so it is not something you select on a community server. Use Competitive, which plays the same objective rules without Valve's ranking system.
Set the mode in the panel, or change it while the server runs
On ChicagoServers, pick the mode in the Game mode field and the starting map in Map (or Map group) on the Startup tab, click Save startup, then Restart. The panel builds the start command from those fields, so you do not type launch parameters. For reference, Valve's wiki advises applying the mode values first and then changing the map, and community documentation reports that a map loaded before the values are set can start in the previously used mode.
# Competitive on Dust II
+game_type 0 +game_mode 1 +map de_dust2
# Deathmatch, using the alias form
+game_alias deathmatch +map de_dust2Live, the same logic applies. Set the numbers or alias on the Console tab (type the command and press Send; RCON is handled for you), then change the map so the mode configs run:
game_type 1
game_mode 2
changelevel de_dust2
// or, in one step with the alias
game_alias deathmatch
changelevel de_dust2changelevel mapnamemoves everyone to a new map immediately and keeps the players connected.map mapnamealso loads a map. A console change lasts until the server restarts; the Startup fields decide what it starts with.- Workshop maps are loaded with
host_workshop_mapfollowed by the map's Workshop ID, according to community documentation, or with the Workshop map ID and Workshop collection ID fields on Startup. See the Workshop guide for collections. - Typing
game_typeorgame_modewith no value prints the current setting. Usestatusto see the loaded map.
If you are running commands from an external tool, the RCON and admin commands guide explains the connection and the commands that matter most.
gamemode_*_server.cfg and the exec order
Each mode definition in Valve's gamemodes.txt lists the configs to run when a game of that mode starts: Valve's gamemode_<mode>.cfg first, then your gamemode_<mode>_server.cfg. Because yours runs second, it wins. Valve's CS:GO-era documentation, which is archived but still described as largely valid for CS2, gives the load sequence on every map load as: run the mode configs for the current game_type and game_mode, apply mode flag configs, then apply any skirmish config. (CS:GO also reset a whitelist of cvars first, but that file does not exist in CS2.)
That sequence explains a very common complaint. If you type mp_maxrounds 12 in the console, or put it in server.cfg, the mode config can put it back to its own value when the next map loads. The reliable fix is to write the value where it will be applied last:
// game/csgo/cfg/gamemode_competitive_server.cfg
mp_maxrounds 16
mp_overtime_enable 1
bot_quota 0- Use
server.cfgfor settings that are not mode specific:sv_region, GOTV and logging. The name and passwords are Startup fields on ChicagoServers. - Use
gamemode_<mode>_server.cfgfor everything that belongs to the rules of one mode: rounds, timers, money, bots and friendly fire. On ChicagoServers these are the mode-only configs on the Configs tab for Competitive, Casual and Deathmatch. - Community documentation disagrees on whether
server.cfgruns before or after the mode configs on a map change. Do not depend on either. If a cvar keeps reverting, move it into the matching_server.cfgfile. - Some mode filenames differ from the mode name. Wingman uses
gamemode_competitive2v2_server.cfg, not a file withwingmanin the name.
Mapgroups and the map cycle
A mapgroup is a named list of maps that a mode can draw from. The shipped gamemodes.txt defines many groups, including mg_active, mg_reserves, mg_hostage, mg_armsrace, mg_demolition, mg_deathmatch, the Casual groups mg_casualsigma, mg_casualdelta, mg_casualalpha and mg_casualcharlie, and single-map groups such as mg_de_dust2. Which maps sit in a group is Valve's decision and changes with updates, so do not copy a map list from a tutorial. Start the server with the group and watch which maps actually rotate.
Valve's dedicated server page does not document a launch option for mapgroups. Community container images and hosting documentation still pass +mapgroup with +map, and report that the starting map should belong to the chosen group. On ChicagoServers the Map group and Map fields on Startup hold these values. Treat it as something to test on your build:
+game_type 0 +game_mode 1 +mapgroup mg_active +map de_dust2- For a custom pool, copy Valve's example into
gamemodes_server.txt(on the Files tab) and define your own group there, rather than editinggamemodes.txt. - For rotation, community documentation says a
mapcycle.txtfile ingame/csgo/(edit it on the Files tab) controls the rotation, with one map per line, and thatmp_match_end_changelevel 1advances the map when a match ends. - Keep mapgroup and mode consistent. A Deathmatch server pointed at a group of bomb-defusal maps loads, but the experience will be poor.
Important cvars and their real defaults
Defaults in the table are either engine-level values documented by Valve or empty values you are expected to set. Gameplay values are different for each mode, so those are in the second table.
| Cvar | Default | Notes |
|---|---|---|
hostname | no useful default | The name in the server list. On ChicagoServers set Server name on Startup; a hostname line in server.cfg is overwritten at every start. |
sv_password | empty | Empty means anyone can join. Community documentation uses an empty string as the default. Set Join password on Startup. |
rcon_password | empty | Empty effectively leaves RCON unusable, so set a long random value in RCON password on Startup. Community guides also add -usercon on the launch line, which Valve does not document; it has no Startup field, so contact support if an external RCON client is refused with the right password. |
sv_cheats | 0 | Leave it at 0 on any public server. It unlocks commands that wreck normal play. |
sv_lan | 0 | 1 turns on LAN mode and disables Steam authentication and internet listing. |
sv_region | 255 (world) | Codes follow Valve's convention: 0 US East, 1 US West, 2 South America, 3 Europe, 4 Asia, 5 Australia, 6 Middle East, 7 Africa, 255 world. |
tv_enable | 0 (off) | Turns on GOTV. See the bots and GOTV section. |
bot_quota | set by each mode config | See below. |
These are the shipped gameplay values from Valve's own mode configs. A shorter round count or timer is the usual first change.
| Mode | mp_maxrounds | mp_roundtime (min) | mp_freezetime (s) | mp_buytime (s) | mp_startmoney | mp_warmuptime (s) |
|---|---|---|---|---|---|---|
| Competitive | 24 | 1.92 | 15 | 20 | 800 | 120 |
| Wingman | 16 | 1.5 | 10 | 20 | 800 | 120 |
| Casual | 15 | 3 | 5 | 45 | 1000 | 90 |
| Demolition | 10 | 1.25 | 6 | 0 | 0 | 30 |
| Deathmatch | 0 | 10 | 0 | 0 | 0 | 20 |
| Arms Race | 0 | 10 | 0 | 0 | 0 | 20 |
A few notes on reading that table. mp_maxrounds is the total number of rounds, so Competitive's 24 is a first-to-13 match. Casual shortens defuse rounds with mp_roundtime_defuse 2.25, and Competitive sets mp_roundtime_defuse to the same 1.92. Deathmatch and Arms Race are time based, so round count is not used. Always check the actual file on your server, because Valve rebalances these values across updates.
Bots, GOTV and sizing the server
Bots surprise new admins. Valve's Casual and Arms Race configs ship bot_quota 10 with bot_quota_mode fill, and Deathmatch ships bot_quota 10 with fill_with_minimum. Competitive and Wingman use a quota of 1 in competitive mode. Community documentation describes fill as keeping the total at the quota by replacing bots as humans join. To remove bots, set the quota to zero in the mode's _server.cfg file (the mode-only config on the Configs tab), because a console change is reset on the next map.
// in gamemode_casual_server.cfg
bot_quota 0
// or live, once
bot_quota 0
bot_kickGOTV, Valve's spectator and broadcast system, is controlled with the tv_ cvars. Set these in Server settings (server.cfg) on the Configs tab so they apply when the map loads:
tv_enable 1
tv_port 27020
tv_delay 0
tv_autorecord 1
tv_password "viewer-pass" // optional: spectators will need this password; remove the line for open spectatingtv_enableis off unless you set it. The panel assigns your server's ports (see Startup, Network) and you do not open a firewall. If spectators need a GOTV port of their own, reserve one under Extra ports, use that number astv_portand ask support if viewers still cannot connect.tv_delayis a delay in seconds. Valve's mode configs set their own: 105 for Competitive, 60 for Wingman and 30 for Casual, Demolition and Deathmatch. Setting it inserver.cfgmay be overridden, so use the_server.cfgfile if it reverts.tv_autorecord 1starts recording demos automatically. Community documentation notes that GOTV can disconnect while a server hibernates when empty.- Spectators typically connect to the GOTV port with
connect ip:27020from the client console.
Common mistakes
| Mistake | Result | Fix |
|---|---|---|
Setting hostname, sv_password or rcon_password in server.cfg | The panel overwrites them from the Startup tab at every start | Change Server name, Join password or RCON password on Startup. |
Putting mp_ cvars only in server.cfg | The mode config overrides them on map load | Move them into gamemode_<mode>_server.cfg. |
Editing Valve's gamemode_*.cfg files | Your changes vanish after an update | Create the _server.cfg companion file instead (on the Configs tab for Competitive, Casual and Deathmatch). |
| Choosing a map but not the mode (or the reverse) | The map loads in the previous mode | Set both Game mode and Map on Startup, then Save startup and Restart. If you build a launch line yourself elsewhere, put the mode first and the map last. |
Setting game_mode without game_type | The result depends on the previous value: mode 2 is Wingman under type 0 but Deathmatch under type 1 | Always set both numbers, use game_alias, or pick the mode in the Game mode field. |
Leaving sv_lan 1 on a public server | No Steam authentication and no internet listing | Set sv_lan 0 and add a login token in the Game server login token field. |
Enabling sv_cheats 1 for testing and forgetting it | Cheat commands available to players | Turn it off and restart the map. |
Using a weak or empty rcon_password | Anyone who can reach the port could try to take control | Use a long random password in the RCON password field, never on a command line. |
| Expecting Premier on a community server | No such mode exists to select | Use Competitive, with your own rules in the override file. |
A configuration mistake is easy to undo when you can restore a copy. Before big changes on a Counter-Strike 2 server hosting plan, open the Backups tab and click Back up now with World and settings chosen. If an edit goes wrong, click Restore next to the backup under Your backups.
Frequently asked questions
Where is server.cfg on a CS2 dedicated server?
It is in game/csgo/cfg/ inside your server install. Valve ships a nearly empty copy there, so you can add your own settings to it. On ChicagoServers, open your server in the panel, then the Configs tab, and pick Server settings (server.cfg).
What are the game_type and game_mode values for each CS2 mode?
Casual is 0 and 0, Competitive 0 and 1, Wingman 0 and 2, Arms Race 1 and 0, Demolition 1 and 1, Deathmatch 1 and 2, and Custom 3 and 0. Set both before the map loads, or use game_alias. On ChicagoServers, pick the mode in the Game mode field on the Startup tab.
Why do my mp_ settings keep resetting?
The mode's own config runs when the map loads and can overwrite values from the console or from server.cfg. Put gameplay cvars in the matching gamemode_MODE_server.cfg file, which Valve's mode definition runs after its own defaults. On ChicagoServers the Configs tab has mode-only configs for Competitive, Casual and Deathmatch.
Can I run Premier on my own server?
No. Premier is a Valve matchmaking mode and there is no entry for it in the game mode definitions that ship with CS2. Community servers use Competitive, Casual, Wingman and the other modes in the table above.
How do I change the map and mode without restarting?
On the Console tab, set the new game_type and game_mode values (or game_alias), type each command and press Send, then run changelevel mapname. The mode configs run when the new map loads. For a Workshop map, community documentation points to host_workshop_map with the map's ID. The change lasts until the next restart; the Startup tab decides what the server starts with.
Why are there bots on my Casual server?
Valve's Casual config ships with bot_quota 10 and bot_quota_mode fill, so bots fill empty slots. Set bot_quota 0 in gamemode_casual_server.cfg (the Casual mode-only config on the Configs tab) to remove them permanently.