How to Set Up Map Rotation on Your CSS Server
Configure mapcycle.txt, RTV voting, and SourceMod's MapChooser plugin to keep your CSS server's map rotation fresh.
Map Rotation in CSS
CSS map rotation is driven by two plain-text files plus SourceMod plugins. There's no Steam Workshop server subscription system like in CS2 — maps live in cstrike/maps/ as .bsp files and you distribute them to clients via FastDL.
mapcycle.txt
cstrike/mapcycle.txt lists the maps the server cycles through. One map name per line, no file extension:
de_dust2
de_inferno
de_nuke
de_cbble
de_train
de_mirage
The server reads this file when a map ends and mp_timelimit or mp_maxrounds triggers a change. If you're using SourceMod's MapChooser (recommended), MapChooser manages the actual transitions — mapcycle.txt is still the source of truth for which maps are eligible.
maplist.txt
cstrike/maplist.txt is a separate list used for map nominations (the !nominate command). Keep it in sync with mapcycle.txt unless you want players to be able to nominate maps that aren't in the rotation — usually you don't.
When Map Changes Trigger
Two cvars control rotation timing:
mp_timelimit 25 // minutes per map; 0 = no time limit
mp_maxrounds 0 // rounds per map; 0 = no round limit
Set both to 0 and the map never changes automatically — only manual changes or RTV votes will move things along.
SourceMod MapChooser + RTV
SourceMod ships with three plugins that work together:
mapchooser.smx— runs the end-of-map voterockthevote.smx— lets players trigger an early vote with!rtvnominations.smx— lets players nominate specific maps with!nominate <mapname>
These are already installed with a default SourceMod setup. If they're not running:
sm plugins load mapchooser
sm plugins load rockthevote
sm plugins load nominations
Player commands in chat:
!rtv // vote to rock the vote (change map early)
!nominate de_dust2 // nominate a map for the next vote
!maps // list available maps
Admin Map Control
As an admin, you can override the rotation at any time:
sm_map de_dust2 // change map immediately
sm_nextmap de_inferno // set the next map without changing now
Via RCON:
rcon sm_map de_dust2
Custom Maps
Custom maps must be physically present in cstrike/maps/ on the server before you add them to mapcycle.txt. Add them to both mapcycle.txt and maplist.txt, then reload the map list:
sm plugins reload mapchooser
sm plugins reload nominations
For distributing custom maps to clients without the slow in-game download, set up FastDL — see the Custom Maps guide.