Dedicated Server Guide
From Unofficial Stationeers Wiki
Contents
Requirements
- Linux or Windows system, either physical or virtualised,
- must NOT be being used to run a Stationeers client (the game will not permit this).
- if running on Windows you must have the Microsoft Visual C++ 2015, 2017 and 2019 runtime installed, click here to download it.
- ~16GB RAM (Tested and confirmed on Linux). 8GB or less and the server won't load.
Getting the server files
SteamCmd on Windows and Linux
https://developer.valvesoftware.com/wiki/SteamCMD
This is a command line tool
For the stable branch:
steamcmd +login anonymous +app_update 600760 validate +quit
For the beta branch:
steamcmd +login anonymous +app_update 600760 -beta beta validate +quit
For getting back from beta to public use -beta public ,steamcmd has trouble with caching
Default ports
8081: Meta Server port (TCP).
27016: Game port (UDP).
27015: Steam update port (UDP).
Legacy Server Startup Arguments
String parameters can take space with double quotes.
parameter | value | etc |
---|---|---|
-NEW | Worldtype (string) | Starts a new game at specific world automatically from launch. Must provide world type as argument
|
-NEWGAME | ||
-LOAD | savefolder (string) | Loads a saved world file, a second argument can be given with worldtype when loading fails it will make a new world instead. |
-LOADGAME | ||
-LOADLATEST | Loads the last save or backup from the save name\folder specified (checking world.xml datestamp), second argument is worldtype to fallback to when loading fails. | |
-JOIN | [address]:[port] | Joins a client to the server |
-JOINGAME | ||
-SETTINGSPATH | "path" | Absolute base directory for custom profile Ex) -basedirectory C:\Profile\Player1 Config Path : default.ini C:\Profile\Player1\ Save Path : C:\Profile\Player1\saves\[worldname]
|
-logfile | "path" | If no output_log.txt use this parameter. Check examples below for syntax. |
batchmode, nographics and logfile are Unity3D commands.
https://docs.unity3d.com/Manual/CommandLineArguments.html
Logging Alternates
Logging seems to be broken, here are some old skool alternatives.
Small downside is they break the input of the console but it doesn't seem to throw warnings like usual.
- Linux
rocketstation_DedicatedServer.x86_64 2>&1 | tee filename.txt
- extra options would be --a or --append in front of the filename to keep appending to the logfile
- Windows (powershell)
rocketstation_DedicatedServer.exe &> | tee -file filename.txt
- extra options would be -Append at the end to keep appending to the logfile
- Command Prompt
powershell rocketstation_DedicatedServer.exe ^| tee -File filename.txt
Examples
Dedicated server starts new Mars world. Autosave every 5 mins to Mars1.
rocketstation_DedicatedServer.exe -LOAD Mars1 Mars -SETTINGSPATH "C:\Server\User1" -settings StartLocalHost true ServerVisible true GamePort 27016 UpdatePort 27015 AutoSave true SaveInterval 300
Load Mothership file. Autosave every 5 mins.
rocketstation_DedicatedServer.exe -LOAD Mothership -settings StartLocalHost true ServerVisible true GamePort 27016 UpdatePort 27015 AutoSave true SaveInterval 300
Load Mothership file. Autosave every 5 mins. C:\Profile\Player1\saves\Mothership
rocketstation_DedicatedServer.exe -LOAD Mothership -SETTINGSPATH "C:\Profile\Player1" -settings StartLocalHost true ServerVisible true GamePort 27016 UpdatePort 27015 AutoSave true SaveInterval 300
Example -logfile
syntax
-logFile "C:\Server_Path\rocketstation_DedicatedServer_Data\output_log.txt"
Example -LOAD "myworld"
directory structure.
Note: BaseDirectory is by default in SteamApps/common/Stationeers Dedicated Server/<Contents of BaseDirectory> if installed with SteamCMD
Linux:
-LOAD "myworld"
will look for a folder named "myworld" in the saves directory like this:
BaseDirectory/saves/myworld/
Windows:
-LOAD "myworld"
will look for a folder named "myworld" in the saves directory like this:
BaseDirectory\saves\myworld\
Details:
In the world directory named "myworld", these files must be present:
- world.bin
- world.xml
- world_meta.xml
Note: The names of these files do not correspond to your custom world name. These will always be called world.bin etc..
The server will automatically generate these upon first start. If you are importing another world, make sure these are in place in the correct directory for the server to load them.
There is also one more file that will be created:
- worldsettings.xml
Configuration from setting.xml
setting.xml will be created once you start it up for the first time. Command parameters override setting.xml
The server is mostly a stripped down client as such it inherits certain features
Example Setting.xml
<?xml version="1.0" encoding="utf-8"?> <SettingData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <AutoSave>true</AutoSave> <SaveInterval>300</SaveInterval> <SavePath /> <StartingConditions>Default</StartingConditions> <RespawnCondition>Easy</RespawnCondition> <HungerRate>0.5</HungerRate> <SunOrbitPeriod>1</SunOrbitPeriod> <ResearchPoolKey>ResearchOff</ResearchPoolKey> <RoomControlTickSpeed>1</RoomControlTickSpeed> <WorldOrigin>false</WorldOrigin> <ServerName>Stationeers</ServerName> <StartLocalHost>true</StartLocalHost> <ServerVisible>true</ServerVisible> <ServerPassword /> <AdminPassword>randomstringhere</AdminPassword> <ServerMaxPlayers>10</ServerMaxPlayers> <UpdatePort>27015</UpdatePort> <GamePort>27016</GamePort> <UPNPEnabled>true</UPNPEnabled> <DisconnectTimeout>10000</DisconnectTimeout> <NetworkDebugFrequency>500</NetworkDebugFrequency>
XML Attribute | Parameter Case Sensitive |
Details |
---|---|---|
<RespawnCondition> | Easy, Normal, Stationeer | Or a custom key from a mod. Seems to be used as spawn conditions instead for new players |
<StartingConditions> | Default, Minimal, Vulcan, Venus, BareBones | Or a custom key from a mod. Server ignores this, define custom worldtype |
<ResearchPoolKey> | ResearchOff, ResearchOn | Or a custom key from a mod. Server ignores this |
<SunOrbitPeriod> | default=1 | Multiplier on the time it takes for the sun to orbit, default is 20 minutes, 10 minute day 10 night. |
Undocumented | ||
<UseCustomWorkThreadsCount>false</UseCustomWorkThreadsCount> | true, false | |
<MinWorkerThreads> | number | default=8 |
<MinCompletionPortThreads> | number | default=8 |
<MaxWorkerThreads>100</MaxWorkerThreads> | number | default=100 |
<MaxCompletionPortThreads>50</MaxCompletionPortThreads> | number | default=50 |
<CoroutineTimeBudget>1</CoroutineTimeBudget> | number | default=1 |
Savegames
Configuration from worldsettings.xml
Undocumented feature
The server is mostly a stripped down client as such it inherits certain features
XML Attribute | Parameter | Details |
---|---|---|
<GameMode> | Creative, Survival | |
<HungerRate> | default=0.25 | Multiplier on the amount of hunger generated per game tick. |
<StartingCondition> | N/A | Can only be defined in custom world before generation |
Configuration from world.xml
XML Attribute | Parameter | Details |
---|---|---|
<ResearchKey> | ResearchOff, ResearchOn | Or a custom key from a mod. |
<RespawnCondition> | Easy, Normal, Stationeer | Or a custom key from a mod. Seems to be used as spawn conditions instead for new players |
Server Administrator
In Game Admin
ADMINPASSWORD parameter must be added to setting.xml and set a password.
All commands are typed in the chat (enter) by default, starting with /login
Server Program Console
You can type commands in the running application which acts like a console
Command Lists
Command | Details | Parameter |
---|---|---|
HELP | Displays helpful stuff | Arguments:
|
CLEAR | Clears all console text | |
QUIT | immediately quits the game without any prompts | |
EXIT | Leaves a game session and goes back to 'StartMenu' | |
LEAVE | ||
NEW | Starts a new game at specific world automatically from launch.Must provide world name as argument | worldName |
NEWGAME | ||
LOAD | Loads a saved world file | <foldername> |
LOADGAME | ||
LOADLATEST | Loads the latest saved file, including auto saves | <foldername> |
JOIN | Joins a client to the server | [address]:[port] |
JOINGAME | ||
STEAM | Commands to test Facepunch API. Just checks if steam is initialised and if DLC is purchased | |
LISTNETWORKDEVICES | No help text :( | id |
TESTBYTEARRAY | Tests every item in world to check its network read/write functions are parallel. Only enabled in Editor.
Supply a reference Id to check ONLY that item |
|
ROCKETBINARY | Starts logging the size of each section of a delta update. | Arguments:
|
IMGUI | Toggles ImguiInWorldTestCube on/off | |
ATMOS | Enables atmosphere debugging | Arguments:
|
THING | Thing related commands | Arguments:
|
KEYBINDINGS | Displays all the keybindings bound to LocalHuman | Arguments:
|
RESET | Restarts the application | |
VERSION | Returns the game version | |
LOGTOCLIPBOARD | Copies the content of the console buffer to the system clipboard buffer | |
KICK | Kick clients from server commands | clientId - disconnects the client from the game |
BAN | Bans a client from the server (server only command) | clientId |
UPNP | returns universal plug and play (upnp) state | |
NETWORK | returns the current network status | |
PAUSE | will pause/unpause the game (including for clients) | Arguments:
|
SAY | sends a message to all connected players | |
SAVE | Saves the current game to specified path | Arguments:
|
LOG | Dumps all the logs to a file | Arguments:
<logname> (optional) clear |
DISCORD | Interaction with the Discord SDK | |
SETTINGS | Change the settings.xml. e.g settings servermaxplayers 5 | Arguments:
<PropertyName> <Value> |
NETCONFIG | Change the master server setting in NetConfig.xml. e.g netconfig ip 127.0.0.1 | Arguments:
|
SETTINGSPATH | Sets the default settings path to a new location. Launch command only. If none found default is used. | <full-directory-path> |
debugthreads | Show the times that the worker threads take to run. | GameTick |
status | Displays a bunch of info to give insight into state of server. | |
masterserver | Commands to help with interacting with the Master Server. | refresh |
TEST | No help text :( |
Modding on Servers
Undocumented feature
Mods are supported on Dedicated servers, however it requires additional manual configuration - Necessitating direct file access and editing on the dedicated server. To install mods, you'll need to manually obtain the mod data first - Either from the Steam Workshop, or built yourself. Upload/Store the mods in a specific folder on the server - You will also likely want to edit default.ini on the server to point to a particular server folder rather then the default directory, defined below. Then manually add ModConfig.xml in the root directory of the server executible files, and manually edit the file to add each individual mod.
modconfig.xml
Place a modconfig.xml in the serverfiles root (next to executable). Filename case is significant on Linux.
<?xml version="1.0" encoding="utf-8"?> <ModConfig xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Mods> <ModData> <Id>1</Id> <IsEnabled>true</IsEnabled> <LocalPath /> </ModData> <ModData> <Id>0</Id> <IsEnabled>true</IsEnabled> <LocalPath>YourFirstModFolderHere</LocalPath> </ModData> <ModData> <Id>0</Id> <IsEnabled>true</IsEnabled> <LocalPath>YourSecondModFolderHere</LocalPath> </ModData> </Mods> </ModConfig>
Local mods have Id 0.
So try and keep the same structure in the server to prevent complications.
1 is core file and always need to be enabled
Storing Mods
WIN: C:\Users\USERNAME_HERE\Documents\My Games\Stationeers\mods\ LIN: /home/USERNAME_HERE/My Games/Stationeers/mods/ OSX: /Users/USERNAME_HERE/My Games/Stationeers/mods/
\Modname or workshopid\About\
(file containing description about mod and thumbnail)
\Modname or workshopid\GameData\
(files you want to append to the core gamedata)
It's recommended to only put entries in the mod files you want to add or replace,
do not try and replace the whole file for compatibility issues and errors.
There are some examples of how to make your own mods in:
\Steam\steamapps\common\Stationeers\rocketstation_Data\StreamingAssets\
Look for ExampleMod.zip and AttributesExampleMod.zip .