Home/ Guides/ Core Keeper/ Server Settings Explained
⛏️ Core Keeper · Server Settings

Core Keeper Server Settings Explained

Core Keeper's dedicated server is deliberately thin. There are only a handful of real settings, they live in two different places, and half the confusion online comes from people editing the wrong one.

Keys & defaults checked against the current GamesOMG generator · last verified June 2026
Jump to a section
⚙️
Don't want to hand-edit config files?
The world settings live in ServerConfig.json, written automatically the first time the server boots. The password, port, and bind IP are not in that file, they go on the launch command. Stop the server, edit the file, restart. Our config generator builds both the JSON and the launch line for you.
🌍

World & Difficulty

File: ServerConfig.json

Which world the server loads and how it plays. Difficulty and seed are locked in when a world is first generated, so these only bite on a fresh slot.

SettingWhat it doesDefaultRecommended
gameIdThe world's unique join code. Core Keeper connects players through a relay keyed to this string rather than to a raw IP, which is why most people join a server without touching their router. Leave it empty in the file and the server mints a valid one on first launch and writes it to GameID.txt in the server folder. If you set it yourself it has to be at least 28 characters, contain no zeros, and use no punctuation, so letting the server generate it is the sane path. This is the value you hand to players for Join Game then Join With Game ID.(auto-generated on first launch)Leave empty, let the server generate it
worldNameThe label attached to the world save and shown when players are in it. It does not affect gameplay and it is not how anyone finds your server, that is the game ID. Its only real job is stopping your world from being the fiftieth save literally called Core Keeper when you run more than one.Core KeeperAnything that identifies the world
worldThe save slot number, 0 through 29. Each slot is a completely separate world with its own seed, difficulty, and progress. You only care about this if you keep multiple worlds on one server and want to switch which one loads. Point the server at an empty slot and it generates a new world there; point it at a used slot and it loads what is already saved.00 unless you run multiple worlds
worldSeedThe seed that decides the map layout. 0 means the server rolls a random seed at generation time. Set a specific number and you reproduce a known layout, useful if you found a seed with a great spawn or a convenient biome arrangement. This value is read exactly once, when the world on that slot is first created. Changing it later does nothing to an existing world because the seed is already baked into the save. To use a new seed you generate a fresh world.00 for random, or a fixed number to reproduce a layout
worldModeThe difficulty the world runs at. 0 is Normal, the standard survival experience. 1 is Hard, tougher enemies and more punishing combat. 2 is Creative, everything unlocked and free building with no survival pressure. 4 is Casual, softened penalties for a relaxed run. Two catches: like the seed, the mode is set at world creation and does not change on an existing save, and you cannot convert a world between Creative and non-Creative at all. If you want both a Creative and a survival world, use separate slots.00 (Normal) for a standard co-op server
seasonOverrideForces a holiday event on regardless of the calendar. -1 is auto, the event follows the real-world date the way the base game does. 0 turns events off entirely. 1 through 6 pin a specific one: Easter, Halloween, Christmas, Valentine's Day, Anniversary, and Cherry Blossom in that order. Handy if you want a Halloween server in July or want to guarantee no seasonal decorations show up. Sources disagree on the shipped default, so verify against your own generated file if the exact starting value matters to you.0-1 (auto) to follow the calendar, 0 to keep events off
👥

Players & Network

File: ServerConfig.json

The slot count and a single network knob. The player number lies to you, and almost nobody should touch the network one.

SettingWhat it doesDefaultRecommended
maxNumberPlayersReads like the server's capacity and ships at 100, which is misleading. Core Keeper's co-op session cap is 8 on the current build, and raising this number does not create usable slots past that. The generator keeps 100 because that is what the server itself writes, but treat 8 as the ceiling when you plan a server. Setting it to 8 does no harm and makes the file honest.100Leave at 100 or set 8, the real cap is 8 either way
maxNumberPacketsSentPerFrameA network throttle: how many packets the server pushes out per frame. The default of 1 is correct for essentially every server. This is a knob for someone chasing a specific sync problem who understands their network path. If that is not you, do not touch it.11, leave it alone
⌨️

Launch Command (CLI only)

File: start command / launch parameters

These are NOT in ServerConfig.json. Core Keeper reads the password, port, and bind IP from command-line arguments. Put a password in the JSON and it does nothing, which is the single most common cause of 'my password isn't working'.

SettingWhat it doesDefaultRecommended
-portThe UDP port the server listens on, default 27015. Core Keeper actually uses a UDP pair, so if you are port-forwarding or running behind a firewall, open both 27015 and 27016. Passing -port also enables Direct Connect, which is what crossplay joins and Join With IP need. The relay-based game ID join works without any of this, so a port only matters when you want direct connections.2701527015, forward 27015-27016 UDP for direct joins
-passwordThe join password, up to 28 characters, passed on the launch line. This is the correct place for it, not the JSON file. Leave it off and the server is open to anyone with the game ID. Quote it if it contains spaces.(none)Set one if the game ID could leak
-ipThe address the server binds to, default 0.0.0.0, meaning all interfaces. You almost never change this. The only time it matters is a machine with multiple network interfaces where you need to pin the server to a specific one.0.0.0.00.0.0.0 unless you have a specific reason
-allowonlyplatformRestricts who can join by store platform: 1 Steam, 2 Epic, 3 Microsoft/Xbox, 4 GOG. Omit it and any platform can connect, which is usually what you want for a crossplay server. Set it only if you deliberately want to lock the server to one storefront's players.(any platform)Omit it for open crossplay

Core Keeper Server Settings FAQ

How do I host a Core Keeper dedicated server?
Install the Core Keeper Dedicated Server tool (Steam app 1963720, free, Windows and Linux) or spin one up on a host. Launch it once and it writes a default ServerConfig.json plus a GameID.txt. Stop the server, edit the JSON for world, difficulty, and seasons, put your port and password on the launch command, then start it again. Our generator builds the file and the launch line so you are not counting braces by hand.
Where is the Core Keeper ServerConfig.json file?
On Linux it lives at ~/.config/unity3d/Pugstorm/Core Keeper/DedicatedServer/ServerConfig.json. On Windows it is at %USERPROFILE%\AppData\LocalLow\Pugstorm\Core Keeper\DedicatedServer\ServerConfig.json. Managed hosts usually surface it as DedicatedServer/ServerConfig.json in their file manager. The server only writes it after its first launch, so boot once before you go looking.
Why doesn't my Core Keeper server password work?
Because the password is not a ServerConfig.json setting. Core Keeper reads it from the launch command as -password "yourpassword", and the same goes for the port and bind IP. Anything you type into the JSON file for a password is ignored. Put it on the start command, host panel launch-parameters box, or systemd ExecStart line instead. The generator's launch section assembles the exact arguments.
How do players join my Core Keeper server?
Core Keeper joins through a relay keyed to the world's game ID, not an IP address, which is why it works through most home routers with no port forwarding. Grab the string from GameID.txt (or the server console log on boot) and have players use Join Game then Join With Game ID. If you launched with -port, Direct Connect is also available via Join With IP for crossplay or port-forwarded setups. Default port is UDP 27015, and the game uses a pair, so open 27015-27016 UDP for direct joins.
How many players can a Core Keeper server hold?
Eight. The maxNumberPlayers key ships at 100 and looks like a big-server setting, but Core Keeper's co-op session cap is 8 on the current build and raising the number does not add usable slots. Plan for up to 8 and, if you like a tidy file, set the value to 8 so it reflects reality.
Can I change the difficulty or seed on an existing Core Keeper world?
No. worldMode and worldSeed are read once, when a world is first generated on that slot, and then baked into the save. Editing them afterward does nothing to an existing world. To actually apply a new difficulty or seed, generate a fresh world: use a new save slot or delete the old save for that slot first. On top of that, you cannot convert a world between Creative and non-Creative at all, so use separate slots if you want both.
What does seasonOverride do on a Core Keeper server?
It controls holiday events. Set it to -1 and events follow the real-world calendar the way the base game does. Set it to 0 to switch events off entirely. Values 1 through 6 force a specific one: Easter, Halloween, Christmas, Valentine's Day, Anniversary, and Cherry Blossom. It is how you run a Halloween server in the middle of summer, or keep seasonal decorations off a build server year-round.