Dedicated server
A dedicated server runs a world with nobody playing on it: players join it like a friend's game, and it keeps going when they leave. It is the normal game, started with a few extra options.
A dedicated server runs a world with nobody playing on it: players join it like a friend's game, and it keeps going when they leave. It is the normal game, started with a few extra options.
Starting it
The easiest way is the dedicated server download (Downloads page, under the game): it is smaller, has no graphics
or sound, and starts as a server by itself. Unzip it and run start-server.bat (Windows) or start-server.sh (Linux).
The normal game can run as a server too:
"Seeds & Circuits.exe" -batchmode -nographics -dedicated
./"Seeds & Circuits.x86_64" -batchmode -nographics -dedicated
-batchmode -nographics: no window, no graphics card needed. Add-logFile -to see the log in the console (or-logFile <file>to keep it in a file).- The first start writes
server.jsonnext to the game with the default settings (below). Edit it and start again. - When the world is up the log says
[Server] Ready.
Joining
- Direct (the default): the server listens on
address:port(UDP, default0.0.0.0:7777) and answers status checks on the next port (7778). Open both UDP ports in the firewall and router. Players add it under Play ▸ Servers (Add Server: name, address, port); the game checks that a server answers there and then shows its players and ping. - The public server list: set
"list": true(or start with-list "<server name>") to show it under Play ▸ Servers for everyone. The server needs a website account for that: the first time, its log says which page to open and which code to approve; after that it stays signed in. One listing per account. - Relay (
"relay": trueor-relay): no ports to open, but the game shows no join codes, so players can only reach it through the public server list. - Joining needs a website account with play access, the same game version and the same mods as the server.
server.json
| Setting | Default | What it does |
|---|---|---|
world | "Server" | The world (save) to load; made new when there is none. |
name | world's name | The name in the server list. |
description | "" | A line under the name in the server list. |
list | false | Show it on the public server list. |
publicAddress | "" | The address players should join (empty = the one the website sees). |
queryPort | 0 | UDP port for status checks: 0 = the game port + 1, -1 = none. |
maxPlayers | 0 | Players at once; 0 = as many as the edition allows. |
relay | false | Through Unity Relay instead of listening on address:port. |
address, port | "0.0.0.0", 7777 | Where to listen without Relay. |
frameRate | 60 | Server updates per second. |
autosaveMinutes | 10 | Minutes between saves; 0 = off. |
friendlyFire | false | Players can hurt each other. |
movementChecks | true | Players moving faster than a player can (speed or teleport cheats) are put back; the log says who. |
seed, creative, generation | random, false | A new world's seed, game mode and world settings. |
sharing | all "individual" | What players share (below). Counts for loaded worlds too. |
admins | [] | Player ids that get the console when they join. |
savesFolder | "" | Where the worlds are saved: empty = Saves next to the server; a relative path is next to it too. |
autoUpdate | true | Get new versions from the website by itself (see Updates). |
updateCheckMinutes | 30 | Minutes between checks for a new version. |
updateWarningMinutes | 5 | Minutes players are warned before it restarts for an update; 0 = right away. |
Command line flags win over the file: -world <name>, -seed <text>, -creative, -maxplayers <n>,
-relay / -norelay, -address <ip>, -port <n>, -list "<name>", -publicaddress <host>, -description <text>, -saves <folder>, -sharing <mode> (all three at once), -config <file> (another settings file).
What players share
sharing has three entries, each "shared", "individual" or "group":
blueprints: researched blueprints and data drives.towns: who owns a town. A placed town banner claims its town: only its owners build there, collect its taxes, use its storehouses and job board, run its homes and change the banner. Breaking the banner ends the claim.world: waypoint flags (only their owners see and change them) and visited islands.
"group" shares among players a mod puts in the same group (guilds); without such a mod it is the same as individual.
Change it while running with the console: world.sharing towns shared.
The console and admins
- Type commands into the server's console window: they run with full rights.
stop(orquit) saves and stops. op <name or client id>gives a joined player the console;deoptakes it away. It is saved with the world.- When a player joins, the log shows
[Server] <name> joined (player id <id>, ...). Put that id inadminsto make them an admin every time they join.
Who may join
net.kick <player>disconnects a player.net.ban <player> [reason]bans a player (by name or client id, or by player id when they aren't on) and disconnects them;net.unban <name or id>,net.banslists them.net.whitelist onlets in only players on the whitelist (and admins):net.whitelist add <player>,net.whitelist remove <player>,net.whitelistlists it,net.whitelist off.- Bans and the whitelist are saved with the world. A player id follows the player's website account.
Mods
- Put mods in
Modsnext to the game (or in the data folder'sMods); the server's own mods are on unless turned off. The log lists the running ones at start. modslists the installed mods;mods.enable <id>/mods.disable <id>change them from the next start.- Joining players download the server's mods when they join.
Saves
Worlds are saved in Saves/<world>.json next to the server (the log shows the folder at start: [Server] Saves:), so
the whole server, settings and worlds together, can be copied, backed up or moved as one folder. savesFolder (or
-saves <folder>) keeps them somewhere else. To host a world played in the game, copy its .json (and its other files
with the same name) from the game's Saves folder into the server's.
The server saves every autosaveMinutes and when it stops. Back that folder up; copy a world file there to host it.
Updates
Players can only join a server with the same game version, so a server started with start-server.bat /
start-server.sh keeps itself up to date:
- It needs a website account with play access. The first time, the log says which page to open and which code to approve (the same sign-in the public server list uses).
- Every
updateCheckMinutesit asks the website for the newest server version. When there is one, it downloads it while running, warns the players (updateWarningMinutes, or right away when nobody is on), saves and stops. The start script copies the new files in and starts it again.server.json,Saves,Modsand the start scripts stay. - Started any other way (the exe itself, the normal game) it only says in the log that a new version is out.
"autoUpdate": falseturns it off. To update by hand, stop the server and unzip the new download over it.