On this page
Arma Reforger dropped the server.cfg format that Arma 2 and Arma 3 used. The Enfusion engine reads a single JSON file instead — usually called config.json — that holds everything from the UDP port to the AI cap.
That change has one practical consequence worth knowing before you open the file: JSON has no tolerance for syntax errors. A trailing comma or an unquoted string does not produce a warning and a default value. The server refuses to start, and the log line that explains why is not always obvious. Validate the file before you restart, every time.
This page walks the fields you will actually set, by category, with the default and the sane range for each. Two of the bigger ones — the mods array and the admins list — get their own pages, because there is more to say about each than a table row: see adding Workshop mods and admins and RCON.
If you would rather not hand-edit at all, our config generator builds a valid file field by field, and the config validator will catch a syntax error before your server does.
The shape of the file#
Every setting lives in one of four blocks:
{
"region": "EU",
"bindPort": 2001,
"a2s": { },
"rcon": { },
"game": {
"gameProperties": { }
},
"operating": { }
}
- Root — networking and matchmaking region.
a2sandrcon— the query and remote-console listeners.game— everything a player sees: name, password, scenario, platforms, and the nestedgamePropertiesfor gameplay rules.operating— server-side behaviour: AI limits, save intervals, the join queue.
Network#
| Field | Default | Notes |
|---|---|---|
region | EU | Matchmaking region. EU, US, AS, AU, SA, or AF. Set it to where your players are — it affects discoverability. |
bindAddress | empty | The IP the server listens on. Leave empty. IPv6 is not supported. |
bindPort | 2001 | The main game port, UDP. |
publicAddress | empty | The address reported to the backend. Leave empty to auto-detect. |
publicPort | 2001 | The port reported to the backend. Leave empty or match bindPort. |
See Arma Reforger server ports for what each port does and which ones need to be reachable.
Query and RCON#
| Field | Default | Notes |
|---|---|---|
a2s.address | empty | Query bind address. Leave empty. |
a2s.port | 17777 | Steam A2S query port, UDP. This is what server-list sites poll. |
rcon.address | empty | RCON bind address. Leave empty. |
rcon.port | 19999 | BattlEye RCON port, UDP. |
rcon.password | empty | Minimum three characters, no spaces. RCON is disabled without it. |
rcon.maxClients | 16 | Simultaneous RCON connections, 1–16. |
rcon.permission | monitor | monitor is read-only; admin allows commands. |
Set rcon.permission to monitor unless you specifically need connected clients to issue commands — most monitoring bots only need to read. Full setup is covered in admins and BattlEye RCON.
Game#
This is the block you will actually edit.
| Field | Default | Notes |
|---|---|---|
game.name | — | The name in the server browser. Make it searchable; players find servers by typing part of the name. |
game.password | empty | Join password. Empty means public. |
game.passwordAdmin | — | In-game admin login password. Change this before you go public. |
game.scenarioId | Conflict Everon | The mission to load. A GUID-and-path string — see the scenario reference. |
game.maxPlayers | 64 | 1–128. Above 64 needs deliberate tuning. |
game.visible | true | false hides the server from the public browser. |
game.crossPlatform | false | true accepts every platform. |
game.supportedPlatforms | PLATFORM_PC | Only applies when crossPlatform is false. |
game.modsRequiredByDefault | true | Overrides the default required value for every mod in the list. |
game.mods | — | The modlist. See adding Workshop mods. |
game.admins | — | Up to 20 IdentityIDs or Steam IDs who can elevate without the admin password. |
For the platform fields specifically, crossPlatform: true is what you want for a mixed PC/Xbox/PS5 group — see Arma Reforger crossplay, including the PlayStation restriction on modded servers.
Game properties#
Nested under game.gameProperties. These are the gameplay and rendering rules.
| Field | Default | Range | Notes |
|---|---|---|---|
serverMaxViewDistance | 1600 | 500–10000 | The biggest performance lever in the file. Stay at or below ~2500. |
serverMinGrassDistance | 0 | 0, or 50–150 | 0 lets clients decide. Values between 1 and 49 are invalid. |
networkViewDistance | 1500 | 500–5000 | How far entities are streamed to clients. Keep at or below ~2000. |
fastValidation | true | — | Leave enabled on public servers. |
battlEye | true | — | Anti-cheat. Leave enabled on public servers. |
disableThirdPerson | false | — | true forces first person. Common on milsim servers. |
VONDisableUI | false | — | Hides the voice overlay. |
VONDisableDirectSpeechUI | false | — | Hides direct-speech indicators. |
VONCanTransmitCrossFaction | false | — | Allows voice between opposing factions. |
The two view-distance values are where most self-inflicted performance problems come from. serverMaxViewDistance at 10000 does not make the game look better for most players — it multiplies what the server has to simulate and stream. Raise it in steps and watch your server frame time.
Operating#
| Field | Default | Range | Notes |
|---|---|---|---|
lobbyPlayerSynchronise | true | — | Syncs the lobby player list with the backend. Leave on. |
disableCrashReporter | false | — | Leave off; crash reports are how engine bugs get fixed. |
disableServerShutdown | false | — | true keeps the server up if the backend connection drops. |
disableAI | false | — | Disables AI entirely. PvP-only servers gain a lot here. |
playerSaveTime | 120 | ≥1 | Seconds between player saves. Lower means less rollback on a crash, more disk I/O. |
aiLimit | -1 | -1 or ≥0 | -1 is unlimited. Cap it on busy public servers — 80 or below is a reasonable starting point. |
slotReservationTimeout | 60 | 5–300 | How long a reserved slot is held, in seconds. |
joinQueue.maxSize | 0 | 0–50 | 0 disables queueing. 20 or below is sensible if you enable it. |
A minimal working config#
Everything omitted here takes its default. This is a public, PC-and-console, first-person Conflict server:
{
"region": "EU",
"bindPort": 2001,
"rcon": {
"port": 19999,
"password": "changethisvalue",
"permission": "monitor"
},
"game": {
"name": "Example Milsim - Conflict Everon",
"password": "",
"passwordAdmin": "changethisvalue",
"scenarioId": "{ECC61978EDCC2B5A}Missions/23_Campaign.conf",
"maxPlayers": 48,
"visible": true,
"crossPlatform": true,
"gameProperties": {
"serverMaxViewDistance": 1600,
"networkViewDistance": 1500,
"battlEye": true,
"disableThirdPerson": true
}
},
"operating": {
"aiLimit": 80,
"playerSaveTime": 120,
"joinQueue": {
"maxSize": 20
}
}
}
What to change, in order#
If you are setting up for the first time, touch these and nothing else:
game.name— make it findable.game.passwordAdmin— change it off the default.game.scenarioId— pick your mission.game.maxPlayers— match your community, not your ambitions.game.crossPlatform—trueif anyone is on console.operating.aiLimit— cap it if you are running Conflict.rcon.password— only if you want remote administration.
Come back for view distance once you have real players on the server and a frame-time graph to read.
Verify it worked#
- Validate the file. Paste it into the config validator — this catches the syntax errors that produce a silent boot failure.
- Restart the server and watch the log until the scenario finishes loading. A server still loading does not advertise itself.
- Find it in the in-game browser by searching part of
game.name. - Join, and confirm the rules you set are in effect — third person blocked, password prompted, platform mix as expected.
If step 3 fails, work through the server browser checklist before changing anything else in the config.
Trusted references#
- Arma Reforger: Server Config — Bohemia Interactive's field reference
- Arma Reforger: Server Hosting — official hosting documentation
- Arma Reforger: Startup Parameters

