Nuclear Option DedicatedServerConfig.json Explained (Every Setting)
What every key in the Nuclear Option DedicatedServerConfig.json does: server name, password, ports, max players, ban lists, vote kick, rotation and timers.
Updated Oct 1, 2026 · 6 min read
On this page
Every setting of a Nuclear Option dedicated server lives in one file: DedicatedServerConfig.json. The server writes it with default values the first time it starts, and reads it on every start after that. This guide goes through each key in the order the server writes them, with the defaults, what the key really does and the mistakes that trip people up.
Where the file is
The server looks for the config in two places, in this order:
DedicatedServerConfig.jsonin the folder the server was started from, which is the install folder when you useRunServer.shorRunServer.bat.- The game's user data folder:
%USERPROFILE%\AppData\LocalLow\Shockfront\NuclearOptionon Windows.
You can also point it at any file with the launch option -DedicatedServer <path to json>, which is handy for keeping several setups. On GamezServers the file sits in the top folder of the Files tab.
Always stop the server before editing, or use the reload-config remote command afterwards. JSON is strict: a missing comma, a trailing comma or an unclosed bracket means the server cannot load the file, and the log shows Failed to load DedicatedServerConfig at followed by the path.
The default file
{
"MissionDirectory": "/home/steam/NuclearOption-Missions",
"ModdedServer": false,
"Hidden": false,
"ServerName": "Nuclear Option Server",
"Port": { "IsOverride": false, "Value": 0 },
"QueryPort": { "IsOverride": false, "Value": 0 },
"Password": "",
"MaxPlayers": 16,
"BanListPaths": [ "ban_list.txt" ],
"DisableErrorKick": false,
"ErrorKickImmuneListPaths": [],
"NoPlayerStopTime": 30.0,
"PostMissionDelay": 30.0,
"RotationType": 0,
"MissionRotation": [
{ "Key": { "Group": "BuiltIn", "Name": "Escalation" }, "MaxTime": 7200.0 },
{ "Key": { "Group": "BuiltIn", "Name": "Terminal Control" }, "MaxTime": 7200.0 }
],
"VoteKick": {
"Enabled": true,
"PassRatio": 0.6,
"MinVotes": 3,
"AutoBanThreshold": 3,
"VoteDuration": 45.0,
"ResolutionDisplayTime": 20.0,
"NewVoteLockout": 10.0,
"RequesterCooldown": 300.0
}
}
Server identity and access
| Key | Default | What it does |
|---|---|---|
ServerName |
Nuclear Option Server |
The name in the in game server list |
Password |
"" |
Players must enter it to join. An empty string means no password |
MaxPlayers |
16 |
The player cap. Above 16 the server list shows a performance warning |
Hidden |
false |
true keeps the server out of the public server list |
ModdedServer |
false |
Set to true if you run server side mods that change gameplay |
A few notes:
- MaxPlayers is a soft limit set by your hardware, not the game. The warning above 16 exists because the server simulates every unit in the mission, so more players means more aircraft, missiles and AI reacting to them. See Nuclear Option server requirements before raising it.
- Hidden servers do not appear in the list, and the list is how players find dedicated servers, so only use it for testing.
- ModdedServer is a label, not a mod loader. It tells players the server is not vanilla.
Ports
| Key | Default port | Protocol |
|---|---|---|
Port |
7777 | UDP, game traffic |
QueryPort |
7778 | UDP, Steam query for the server list |
Both use an override switch:
"Port": { "IsOverride": true, "Value": 27015 },
"QueryPort": { "IsOverride": true, "Value": 27016 }
If IsOverride is false, the server ignores Value and uses 7777 and 7778. This is the most common reason a port change seems to do nothing. When you change ports at home, forward the new numbers on your router too.
On GamezServers both ports are set for you on every start, matched to the ports your server was given, so leave these two alone.
Ban and kick protection
| Key | Default | What it does |
|---|---|---|
BanListPaths |
["ban_list.txt"] |
Files with SteamIDs that cannot join, one per line. Relative to the server folder, or a full path |
DisableErrorKick |
false |
true stops the server kicking players whose game causes errors |
ErrorKickImmuneListPaths |
[] |
Files with SteamIDs that are never kicked for errors |
The banlist-add and banlist-remove remote commands write to the first file in BanListPaths. You can list more files, for example a shared community ban list:
"BanListPaths": [ "ban_list.txt", "global_bans.txt" ]
If BanListPaths is empty, the ban commands fail with a config error because there is nowhere to write. The error kick exists to protect the server from clients that cause errors. Leave it on, and put trusted players like admins in an immune list if they ever get caught by it.
Timers
| Key | Default | What it does |
|---|---|---|
NoPlayerStopTime |
30.0 |
Seconds after the last player leaves before the mission unloads |
PostMissionDelay |
30.0 |
Seconds after a mission ends before the next one loads |
With nobody online the server unloads the mission and waits, logging Waiting for Players before loading next map. The next mission loads when someone joins. If players often drop and reconnect, raise NoPlayerStopTime so the mission survives a short gap. PostMissionDelay is the time players get to read the results screen.
Mission rotation
| Key | Default | What it does |
|---|---|---|
MissionDirectory |
/home/steam/NuclearOption-Missions |
Full path to the folder for User missions |
RotationType |
0 |
0 in order, 1 pure random, 2 shuffled queue |
MissionRotation |
Escalation, Terminal Control | The missions to play, each with a MaxTime in seconds |
Each rotation entry has a Key with a Group and a Name:
BuiltIn: missions that ship with the game, by name, likeEscalationorDomination Co-op as BDF.Workshop: a Steam Workshop mission, with the item id as the name. The server downloads it tosteamapps/workshop/content/2168680/and keeps it updated.User: a mission inMissionDirectory, loaded from<MissionDirectory>/<name>/<name>.json. The folder and file name must match exactly.
MaxTime is how long a mission may run, so 7200.0 is two hours. Random (1) can repeat the same mission twice in a row, while the shuffled queue (2) plays every mission once before reshuffling. The full list of built in names and examples for PvP, co-op and Workshop rotations are in how to set up a Nuclear Option mission rotation.
Vote kick
| Key | Default | What it does |
|---|---|---|
Enabled |
true |
Lets players start vote kicks |
PassRatio |
0.6 |
Share of voters needed, not counting the target |
MinVotes |
3 |
Fewest votes for a valid result |
AutoBanThreshold |
3 |
Vote kicks before a permanent automatic ban |
VoteDuration |
45.0 |
Seconds the vote stays open |
ResolutionDisplayTime |
20.0 |
Seconds the result stays on screen |
NewVoteLockout |
10.0 |
Seconds before anyone can start another vote |
RequesterCooldown |
300.0 |
Seconds before the same player can start another vote |
A vote kicked player can come back when the next mission starts. On a small private server, a MinVotes of 3 means a vote needs at least three voters, which is fine for friends. On a busy public server, keep vote kick on so players can deal with trolls while no admin is around, and use bans for repeat offenders.
Which keys GamezServers manages
On our servers the panel writes these keys from your settings on every start: ServerName, Password, MaxPlayers, Port, QueryPort, MissionDirectory, RotationType and VoteKick.Enabled, plus MissionRotation unless the Missions setting is Keep the rotation in DedicatedServerConfig.json. Change those in Settings > Game settings. Everything else, like the vote kick thresholds, timers and ban list files, is yours to edit in Files, and it stays as you left it. Press Reload config file in the panel to apply edits without a restart.
New to running a server? Start with how to host a Nuclear Option server, or run one yourself.
Skip the setup. Your own Nuclear Option server.
Then $7.99/mo. Just trying it? $2.00 for 3 days