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:

  1. DedicatedServerConfig.json in the folder the server was started from, which is the install folder when you use RunServer.sh or RunServer.bat.
  2. The game's user data folder: %USERPROFILE%\AppData\LocalLow\Shockfront\NuclearOption on 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, like Escalation or Domination Co-op as BDF.
  • Workshop: a Steam Workshop mission, with the item id as the name. The server downloads it to steamapps/workshop/content/2168680/ and keeps it updated.
  • User: a mission in MissionDirectory, 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.

$3.99USD first month

Then $7.99/mo. Just trying it? $2.00 for 3 days

Keep reading