OpenArena Map Rotation Setup
Set up automatic map rotation in OpenArena using the chained variable method, enable g_autonextmap, and force map changes at runtime via RCON.
OpenArena Map Rotation
OpenArena does not use a plain-text mapcycle file like Source engine games. Instead, map rotation is configured using chained variables — each map variable sets the next map when it loads.
How Chained Variables Work
Each variable stores a map command and a pointer to the next variable in the chain:
set d1 "map oa_dm1; set nextmap vstr d2"
set d2 "map oa_dm2; set nextmap vstr d3"
set d3 "map oa_dm3; set nextmap vstr d1"
vstr d1
When d1 executes, it loads oa_dm1 and sets nextmap to point to d2. When the map ends, OpenArena executes nextmap, which runs vstr d2, which loads oa_dm2 and sets nextmap to d3. And so on. The last entry loops back to d1.
The final line (vstr d1) triggers the chain on server startup.
Enabling Automatic Rotation
For the rotation to advance automatically at the end of each map, set:
set g_autonextmap 1
Without this, nextmap is set correctly but the server does not execute it automatically — the map repeats or the server idles. Add this to your server.cfg.
Example: 5-Map FFA Rotation
Place this in server.cfg:
set d1 "map aggressor; set nextmap vstr d2"
set d2 "map oa_dm1; set nextmap vstr d3"
set d3 "map oa_dm3; set nextmap vstr d4"
set d4 "map kaos; set nextmap vstr d5"
set d5 "map hydronex; set nextmap vstr d1"
vstr d1
set g_autonextmap 1
seta g_gametype 0
seta fraglimit 35
seta timelimit 15
This rotation cycles through five FFA maps and returns to aggressor after hydronex.
Example: CTF Rotation
set c1 "map oa_ctf1; set nextmap vstr c2"
set c2 "map oa_ctf2; set nextmap vstr c3"
set c3 "map ctf_gate1; set nextmap vstr c4"
set c4 "map ctf_compromise; set nextmap vstr c1"
vstr c1
set g_autonextmap 1
seta g_gametype 4
seta capturelimit 8
seta timelimit 20
Forcing a Map Change at Runtime
Skip to the next map in the rotation immediately:
\rconpassword yourpassword
\rcon vstr nextmap
Jump to a specific map (overrides rotation for one map, then continues):
\rcon map oa_dm5
After a manual \rcon map, the rotation resumes from whichever variable nextmap currently points to. To reset the rotation to the beginning:
\rcon vstr d1
Rotation Length
There is no hard limit on the number of maps in a rotation. Large rotations simply require more variable definitions (d1 through dN). Use consistent naming (d1, d2, ... d20) to keep the config readable.