RE:NODE

Guides11 min read

Core Keeper dedicated server: setup and saves

Set up a Core Keeper dedicated server: SteamCMD install, ServerConfig.json and launch flags, Game ID or direct connect, world modes, saves and backups.

0 readers

A Core Keeper dedicated server is a free SteamCMD download (the Core Keeper Dedicated Server tool, app id 1963720) that runs one world, stored as a single file such as 0.world.gzip. By default it needs no port forwarding at all: it registers with Steam's relay network and prints a Game ID - a long string of letters - that players type into Join Game. If you start it with -port, it switches to direct connect mode, where players join by address and port and you have to open that port yourself. Settings live in ServerConfig.json and in launch flags, with port and password only accepted on the command line. A small group runs comfortably in 2 to 4 GB of memory; it grows with how much of the underground has been dug out. This guide covers the install, every setting worth knowing, the two ways to connect, moving a world onto the server and keeping it safe.

What the dedicated server does#

Core Keeper's multiplayer normally runs with one player as host: the world lives on their PC and exists only while they play. The dedicated server is a headless build of the game that holds the world on its own, so anyone in the group can play at any time and nobody's frame rate is everybody's simulation.

Some things that shape how you run it:

  • The world is server-side, characters are not. Each player's character, inventory and skills live on their own PC and travel between worlds with them. The server holds the map, everything built and everything stored in chests. Someone can arrive with gear from another world, and nobody's character is lost if a server goes away.
  • One world per server process. The config picks a world slot by number; changing worlds means changing that number and restarting.
  • It is a Unity server. Expect a -batchmode launch, a log file rather than an interactive console, and behaviour that tracks the game's own updates closely - Unity dedicated server basics covers the general pattern.
  • The client and server versions must match. After a game update, update the server before anybody tries to join.

Requirements and resource usage#

Core Keeper's world is generated as you explore, and the server's memory use follows the explored and built area rather than the player count. These are practical starting points, not official figures:

GroupRAMCPUNotes
1-4 players, new world2 GB1 coreComfortable early on
4-8 players, mid game3-4 GB1.5-2 coresSeveral biomes open, automation running
8+ players, large world6-8 GB2+ coresHeavy automation and wide exploration
  • CPU: one dominant thread does the simulation. Automation - conveyor belts, drills, farms - runs whether anybody is near it or not, so a base full of machinery is the main CPU cost.
  • Disk: the server is a few gigabytes; a world file is compressed and usually small, megabytes rather than gigabytes. Keep space for backups.
  • Network: modest. Relay mode adds a hop; direct connect is usually a little quicker for players near the server.

If you are planning for a bigger community, how many players fit on a server makes the general argument that game design runs out before hardware does.

Installing with SteamCMD#

The server tool installs anonymously:

bash
$ steamcmd +force_install_dir /home/corekeeper/server +login anonymous \    +app_update 1963720 validate +quit

On Windows, the folder contains a Launch.bat that starts the server with sensible defaults. On Linux it contains a _launch.sh script. Older Linux builds needed a virtual display through Xvfb and a few extra libraries; the launch script handles the display, but if the server exits at once on a minimal Linux install, missing libraries are the first thing to check. SteamCMD explained covers validate, updates and scripting the install.

Run it once. The first start creates the data folder with ServerConfig.json, a worlds folder, logs and a file containing the Game ID. On Linux the data folder is typically:

code
~/.config/unity3d/Pugstorm/Core Keeper/DedicatedServer/

On Windows it is the equivalent under the user's AppData\LocalLow\Pugstorm\Core Keeper\DedicatedServer\. The -datapath flag moves it, which is what you want when you run more than one server on a machine or want the data next to the install.

ServerConfig.json#

The file is written on first start. Edit it with the server stopped:

ServerConfig.json
{  "gameId": "",  "world": 0,  "worldName": "The Core",  "worldSeed": 0,  "worldMode": 0,  "seasonOverride": -1,  "maxNumberPlayers": 8}
KeyWhat it does
gameIdThe Game ID players join with. Empty means generate one
worldWorld slot to load: 0 loads 0.world.gzip, 3 loads 3.world.gzip
worldNameThe name shown for the world
worldSeedSeed for a new world. 0 is random
worldMode0 normal, 1 hard, 2 creative, 4 casual
seasonOverrideForces a seasonal event or none; -1 follows the calendar on builds that support it
maxNumberPlayersPlayer limit

A few notes from experience:

  • Set a fixed `gameId` if you do not want the code to change. A custom ID has to meet the game's format rules - long, alphanumeric, and avoiding characters that are easily confused, such as 0 and O. If the server rejects yours, the log says so and generates one instead. Leaving it empty and reading the generated code from the data folder is fine for a private group.
  • `worldMode` matters at creation. A creative world cannot be turned into a normal one or back, so choose before the first start of a new slot. Hard mode is a real difficulty increase and the game's achievements care about it.
  • `worldSeed` only matters for a new world. Changing it on an existing slot does nothing.
  • Season values have changed between versions. If you set seasonOverride, check the current list in the game's documentation rather than copying an old number.

New keys appear with updates. If yours has keys not shown here, they came with your build and the generated defaults are the safe starting point.

Launch flags#

Most settings can also be passed as flags, and some only work that way:

FlagWhat it does
-batchmodeRuns headless. Always present
-logfileWrites the log to a file
-worldSame as world
-worldnameSame as worldName
-worldseedSame as worldSeed
-worldmodeSame as worldMode
-gameidSame as gameId
-maxplayersSame as maxNumberPlayers
-datapathWhere the data folder lives
-portEnables direct connect on this port
-ipAddress to bind in direct connect mode
-passwordJoin password, used with direct connect

Port, address and password are command-line only - putting them in ServerConfig.json does nothing. And when a flag and the file disagree, the flag wins, which is the usual reason an edit to the file appears to be ignored.

Game ID or direct connect#

types Game IDaddress and portautosavePlayerJoin GameSteam relayGame ID modeDirect connect-port, open UDPCore Keeper serverone worldWorlds folderN.world.gzip
Two ways into a Core Keeper server

Game ID mode is the default. The server connects out to Steam's relay network, so no inbound port needs to be open, and players type the ID in Join Game. It works behind home routers, behind carrier-grade NAT and on hosts that do not forward ports. The costs are a relay hop of extra latency and dependence on the relay service being up. The ID is printed to a file in the data folder and to the log; if it is not fixed in the config, it can change, so re-check it after a restart before telling people it is wrong.

Direct connect starts when you pass -port. Players connect to the server's address and port instead, so the port must be reachable - UDP, and several hosting guides advise opening the next port up as well. -password sets a join password for this mode. On recent builds direct connect is also how players on other PC stores reach a server, so if your group is not all on Steam, check the current patch notes for which mode supports crossplay. Game server ports explained covers testing that a port is actually open, and NAT and CGNAT for game hosts explains why relay modes exist at all.

For a group of friends where one person runs the server at home, Game ID mode is almost always the right choice. For a hosted server with a public address, direct connect gives slightly better latency and a stable address to hand out.

Worlds, slots and moving a save#

Worlds are numbered files in the server's worlds folder: 0.world.gzip, 1.world.gzip and so on. The world setting picks one. A player's own worlds are in the same format on their PC:

code
%USERPROFILE%\AppData\LocalLow\Pugstorm\Core Keeper\Steam\<SteamID64>\worlds\

To move a world you have been playing locally onto the server:

  1. Close the game so the world file is fully written.
  2. Stop the server.
  3. Back up the server's worlds folder, even if you think it is empty.
  4. Upload your world file into the server's worlds folder. Either give it the number of the slot the server already loads, replacing what is there, or give it a free number and change world (or -world) to match.
  5. Start the server and check the log for the world loading by name rather than a new one being generated.

Characters do not need moving: they are on each player's PC and come with them. The world brings its map, buildings, chests and automation. Going the other way - taking a server world home - is the same in reverse: stop the server, download the numbered file, rename it to a free slot number locally, and it appears in the game's world list.

Slots double as save states. Before a risky boss attempt or a large rebuild, stop the server, copy the current world file to a spare number, and start again. If it goes wrong, point world at the copy. Game server save files explained puts this layout next to other games'.

Backups, updates and restarts#

The world is held in memory and written to its file periodically and on a clean shutdown. A killed process loses whatever happened since the last write. So:

  • Stop the server cleanly before copying a world file, and before any update.
  • Back up the `worlds` folder on a schedule, off the machine, while the group is active. The file is small, so daily copies cost nothing.
  • Take a manual backup before every game update. Major updates have changed world content before; a world that loaded yesterday is worth keeping a copy of.
  • Restore once on purpose. Load a backup into a spare slot, join and look at your base. Backups that actually restore explains why this step is the one that counts.

Updates come through SteamCMD with the same app_update command. The game patches on its own schedule, and the client updates automatically, so a group will usually find out about a patch by failing to connect. Updating the server on restart avoids that, at the cost of occasionally picking up a patch before you have backed up - schedule a backup before the restart and you have both. Restart schedules that help covers choosing the hour.

Core Keeper has official mod support through mod.io. Mods that change gameplay usually need to be present on the server as well as on every client, at the same versions; check each mod's page for dedicated server instructions rather than assuming. A world played with a mod can depend on it, so back up before adding or removing one - what to do when a mod update breaks is the recovery order when that goes wrong.

Hosting it#

Core Keeper is not in the RE:NODE game catalogue, so there is no Core Keeper plan or pre-built install. The server is a Linux-friendly SteamCMD app, though, and runs well on a general-purpose machine. A dedicated server gives you root access to install SteamCMD, run _launch.sh under a service manager, and open a UDP port for direct connect if you want it; VDS plans are prepared by hand and delivered within 24 hours. If you have never set one up, your first hour on a new VDS covers the basics, and systemd services for your apps shows how to keep a process like this running across reboots. For the games that do have catalogue lines, see game servers.

Troubleshooting#

Players cannot find the server with the Game ID. Copy the ID again from the current log or ID file - it changes if not fixed. Check that the server has finished starting, and that the client and server versions match.

Direct connect times out. The port is not open on UDP, -port was not passed, or players are using the relay ID instead of address and port.

A new world appeared instead of my upload. The file number does not match world, or a -world flag overrides the config. The uploaded file is still there.

Settings in `ServerConfig.json` are ignored. A launch flag sets the same value, or the setting is one of the command-line-only ones: port, IP and password.

The server exits immediately on Linux. Missing libraries or display support on a minimal install. Read the first lines of the log.

Memory grows over days. Exploration and automation add state. A daily restart keeps it predictable; steady growth to the limit within hours means the world has outgrown the machine.

FAQ#

Do I need to open ports for a Core Keeper server?

Not in the default Game ID mode, which uses Steam's relay. Only direct connect mode, started with -port, needs the port open on UDP.

Where is the Core Keeper Game ID?

The server writes it to a file in its data folder and prints it in the log at startup. Set gameId in ServerConfig.json if you want it to stay the same.

Can I move my single-player world to a dedicated server?

Yes. Copy the numbered .world.gzip file from your local worlds folder into the server's worlds folder and set world to its number. Characters stay on each player's PC and come with them.

Do characters belong to the server?

No. Characters and their inventories are saved on each player's own PC. The server holds the world, buildings and chests.

Can I change a world from creative to normal?

No. The world mode is fixed when a world is created, and creative and non-creative worlds cannot be converted. Start a new slot with the mode you want.

How many players can join?

maxNumberPlayers sets the limit. The game is designed around small co-op groups, and performance depends more on automation and explored area than on the number of players.


Comments

Completely anonymous: no account, no email, no cookie. We store the name you type, the text and the time - nothing else. Links are limited and markup is not rendered.

0/2000