Running a Ground Branch dedicated server is only officially supported on Windows at this time.
Hopefully a plan to support running a dedicated server on Linux comes some time in the future.
While it has been confirmed that the game will run under Proton, we have no idea about the server or it's configuration.
There are no plans to support running a dedicated server on a Mac that we're aware of.
Make sure that your Windows firewall and router are configured to open the following ports:
Configuration file(s) locations,
System | Location |
---|---|
Windows | %LOCALAPPDATA%\GroundBranch\Saved\Config\WindowsNoEditor\ |
Steam Play (Linux) | <Steam-folder>/steamapps/compatdata/16900/pfx/ |
Save game data location,
System | Location |
---|---|
Windows | %USERPROFILE%\Documents\GroundBranch\ |
Steam Play (Linux) | <Steam-folder>/steamapps/compatdata/16900/pfx/ |
A stand alone version of the dedicated server can be obtained using SteamCMD and the appid 476400.
For information on downloading and installing SteamCMD, please visit the official page:
SteamCMD - Valve Developer Community
The command used to download the server is as follows:
steamcmd +login anonymous +force_install_dir <InstallDirectory> +app_update 476400 +exit
Note: You will need to replace <InstallDirectory>
with the directory of your choosing.
For instance, to install the dedicated server to c:\gbserver
:
steamcmd +login anonymous +force_install_dir c:\gbserver +app_update 476400 +exit
The easiest way to start the server is to use the included batch file:
<Steam Library Location>\steamapps\common\Ground Branch\DedicatedServer.bat
For example:
C:\Program Files (x86)\Steam\steamapps\common\Ground Branch\DedicatedServer.bat
It will automatically find the correct server binary and automatically restart the server if required.
To manually run a server, use the command line:
GroundBranchServer-Win64-Shipping.exe <optional map & mission>?<option>?<option> <setting> <switch>
The recommended command line is :
GroundBranchServer-Win64-Shipping.exe ?MaxPlayers=8?MaxAI=30 MultiHome=X.X.X.X Port=XXXX QueryPort=XXXX -log
By adding the MaxPlayer
& MaxAI
values directly to the command line, it ensures they are set globally, regardless of admin command, voting or game settings.
This binary is located in:
<Steam Library Location>\steamapps\common\Ground Branch\Binaries\Win64\
Commands | Description |
---|---|
Maplist | If a maplist is present, the server will automatically begin using it upon startup. |
<MapName>?Mission=<Mission Name> |
If no maplist is present, any map and mission combination specified in the command line will be used. Note: If either option is missing from the command line, Server Default will be used instead (see below). For example: SmallTown?Mission=IntelRetrieval |
Server Default | If both the above fail, the server will use a map name Server Default, which displays a message to all prompting the admin to create a valid map list. |
Command line options can be added after the map name.
Options must be prefaced with ?
and the value must be set using =
.
For example:
GroundBranchServer-Win64-Shipping.exe SmallTown?Mission=IntelRetrieval?MaxPlayers=8 -log
Commands | Description |
---|---|
admin motd |
Will broadcast the server MOTD (message of the day) to all players on the server. |
admin resurrect |
Command has been altered to respawn a player at their death location always (rather than where they might be spectating, if their body has disappeared). |
admin resurrect all |
This command does what it says and revives all players. |
admin resurrectnear |
Will respawn players in the vicinity of a teammate rather than where they died. Also accessible using admin resnear . You can also add all to the end of either command. Eg, admin resnear all to resurrect all players in the vicinity of a teammate. |
Mission |
Required when specifying a map via the command line or in a maplist entry. Tells the game which mission to use. Missions contain information about which game mode script to run as well as any associated actors. Available missions vary from map to map, but by default may include: Deathmatch, IntelRetrieval, TeamElimination, TerroristHunt, Uplink. To manually see which missions are available for what map, look in the following directory: GroundBranch\Content\GroundBranch\Mission |
MaxPlayers |
Maximum amount of players this server should allow (8-16) Currently, there is hard limit of 16 for dedicated servers. We recommended a maxium of 8 for coop and 16 for PvP. |
MaxAI |
Absolute limit of any AI used in any game mode (0-50). Note: Setting this to 0 would essentially prevent cooperate game modes from working. |
TimeOfDay |
Time of day in military time. 0000-2400 |
TimeLimit |
After how many minutes until the game ends and the map changes (0+ min) |
ReadyCountdownTime |
Delay between declaring ready and everyone being sent to the play area in seconds (5+) |
PreRoundWaitTime |
How long keep people frozen before the round begins in seconds (5+) |
RoundTime |
How long each round should last in minutes (3+) |
PostRoundWaitTime |
End of round delay before everyone is sent back to the ready room in seconds (5+) |
OpForCount |
How many AI to spawn in the Intel Retrieval or Terrorist Hunt (1-MaxAI) |
Difficulty |
What settings to use for any AI in Intel Retrieval or Terrorist Hunt (1-4, 0 for custom) |
SpectateFreeCam |
Can spectators to fly around freely without following anyone? (0/1) |
SpectateEnemies |
Can spectators follow members of the enemy teams? (0/1) |
SpectateForceFirstPerson |
Should spectators be restricted to first person only view mode? (0/1) |
These are optional arguments that can be used to control various aspects of the engine.
The are not case sensitive, but their spelling is important.
Settings are key=value
pairs.
Switches use -
prefix.
For example:
GroundBranchServer-Win64-Shipping.exe TE-PowerStation?RoundTime=10 MultiHome=192.168.1.254 Port=7779 QueryPort=27017 -log
Commands | Description |
---|---|
MultiHome=<ip address> |
Tells the engine to use a specific IP address for networking. This is only useful if server supports multiple IP's. |
Port=<number> |
Tells the engine to use a specific port number. This is only useful if running multiple dedicated server instances on one IP. |
QueryPort=<number> |
Tells the engine to use a specific query port number. This is only useful if running multiple dedicated server instances on one IP. |
-Log |
Opens console/log contents in new window. |
Log=<filename.log> |
Same as -Log, but saves contents to file specified by "filename.log". |
If no admins are specified, a file called AdminSetupPassword.txt
will be generated the first time the server is started.
This file holds a unique password that allows you to become an admin remotely and will displayed in the console window until used.
To use, you must connect to the server and type the command admin setup <password>
into the console.
For example:
admin setup 1234asdf
Once used, you will be added as a "SuperAdmin" on the server and be presented with the admin menu.
The admin menu can be accessed in multiple ways:
admin
into the console.Depending on the level of access, you will have sections for:
Watch a breakdown of "ZooKeeper" admin tool on Youtube (~4min clip)
All the .ini files used for configuring the server are located under GroundBranch\ServerConfig
.
For example:
C:\Program Files (x86)\Steam\steamapps\common\Ground Branch\GroundBranch\ServerConfig\Server.ini
If no .ini files exist, they will be generated automatically the first time the server is started.
Settings are key=value
pairs.
For example:
ServerPassword=password
Commenting is done using a semicolon.
For example:
; This is a comment.
--- | ---
ServerName | Name of the server (64 characters max)
ServerMOTD | The message of the day (512 characters max) <br>
= line break. <b>
= bold line. <h1 - 3>
= heading 1, 2, 3 etc
ServerPassword | Password required to join the server.
MaxPlayers | Maximum number of players allowed on this server (if not already set by command line)
MOTD Example:
<h1>Awesome Heading!
<br>Another line!
<br><b>Some bold text!
Contains a list of admin groups and the admins themselves.
The admin groups are used to help separate admins into different tiers.
For example:
An admin that is part of the "SuperAdmin" group can do everything.
An admin that is part of the "Moderator" group can only kick, ban or change the map.
To add an admin, you need to add a new line based on the following:
Admins=(Name="<name>",UniqueId="<SteamId>",ContactInfo="<optional>",Group="<admin group>")
For example:
Admins=(Name="JoeBlow",UniqueId="12345678901234567",ContactInfo="",Group="SuperAdmin")
Note: The :0
(colon zero) that was mentioned in the previous versions of this guide is no longer required.
Command | Description |
---|---|
VoteDuration |
Hold long a vote will last for. |
VoteSucceededTimeout |
How long (in seconds) to wait after a vote has passed before allowing another vote. |
VoteFailedTimeout |
How long (in seconds) to wait after a vote has failed before allowing another vote. |
MinPlayers |
The minimum number of players required to cast a vote. |
VotingCommands |
The commands that can be voted for. |
For example:
VotingCommands=changemap
VotingCommands=nextmap
VotingCommands=kick
By far the easiest way to creating a map list is via the admin menu. Using the menu you can select a map, configure it's settings and click "add" so that it now appears on the right-slide list. You can repeat this process to add several configured maps/modes into the game roster to play one after another (in the order you add them to the list).
Basically this menu is how you generate the MapList.ini
(you're seeing in the second half of the screenshot) so it doesn't need to be made manually. However, if you want to manually make the MapList.ini
then use the following section as a guide.
To create a maplist.ini file manually, create a text file called MapList.ini
under /GroundBranch/ServerConfig
.
Add a section called [/script/rbzookeeper.zkmaplist]
.
Under this section, add a MapList=
entry for each map that you wish to include.
Each entry should begin with a map and mission option, followed by any additional options you may wish for that particular map.
Note: Any command line option will work here.
Coop/PvE example:
[/script/rbzookeeper.zkmaplist]
MapList=/Game/GroundBranch/Maps/747/747?Mission=/Game/GroundBranch/Mission/747/IntelRetrieval?opforcount=30?difficulty=2?roundtime=60?teamexfil=1?timeofday=0800?timelimit=60?readycountdowntime=60
MapList=/Game/GroundBranch/Maps/City/City?Mission=/Game/GroundBranch/Mission/City/IntelRetrieval?opforcount=30?difficulty=2?roundtime=60?teamexfil=1?timeofday=0800?timelimit=60?readycountdowntime=60
MapList=/Game/GroundBranch/Maps/Creek/Creek?Mission=/Game/GroundBranch/Mission/Creek/IntelRetrieval?opforcount=30?difficulty=2?roundtime=60?teamexfil=1?timeofday=0800?timelimit=60?readycountdowntime=60
MapList=/Game/GroundBranch/Maps/Depot/Depot?Mission=/Game/GroundBranch/Mission/Depot/IntelRetrieval?opforcount=30?difficulty=2?roundtime=60?teamexfil=1?timeofday=0800?timelimit=60?readycountdowntime=60
MapList=/Game/GroundBranch/Maps/PowerStation/PowerStation?Mission=/Game/GroundBranch/Mission/PowerStation/IntelRetrieval?opforcount=30?difficulty=2?roundtime=60?teamexfil=1?timeofday=0800?timelimit=60?readycountdowntime=60
MapList=/Game/GroundBranch/Maps/RunDown/RunDown?Mission=/Game/GroundBranch/Mission/RunDown/IntelRetrieval?opforcount=30?difficulty=2?roundtime=60?teamexfil=1?timeofday=0800?timelimit=60?readycountdowntime=60
MapList=/Game/GroundBranch/Maps/Tanker/Tanker?Mission=/Game/GroundBranch/Mission/Tanker/IntelRetrieval?opforcount=30?difficulty=2?roundtime=60?teamexfil=1?timeofday=0800?timelimit=60?readycountdowntime=60
PvP example:
[/script/rbzookeeper.zkmaplist]
MapList=/Game/GroundBranch/Maps/Arena/Arena?Mission=/Game/GroundBranch/Mission/Arena/TeamElimination?roundtime=10?timeofday=0800?timelimit=60?readycountdowntime=60?spectatefreecam=0?spectateenemies=0?spectateforcefirstperson=1?useteamrestrictions=1
MapList=/Game/GroundBranch/Maps/Arena2/Arena2?Mission=/Game/GroundBranch/Mission/Arena2/TeamElimination?roundtime=10?timeofday=0800?timelimit=60?readycountdowntime=60?spectatefreecam=0?spectateenemies=0?spectateforcefirstperson=1?useteamrestrictions=1
MapList=/Game/GroundBranch/Maps/747/747?Mission=/Game/GroundBranch/Mission/747/Uplink?roundtime=60?defendersetuptime=30?timeofday=0800?timelimit=60?readycountdowntime=60?spectatefreecam=0?spectateenemies=0?spectateforcefirstperson=1?useteamrestrictions=1
MapList=/Game/GroundBranch/Maps/City/City?Mission=/Game/GroundBranch/Mission/City/Uplink?roundtime=60?defendersetuptime=30?timeofday=0800?timelimit=60?readycountdowntime=60?spectatefreecam=0?spectateenemies=0?spectateforcefirstperson=1?useteamrestrictions=1
MapList=/Game/GroundBranch/Maps/Creek/Creek?Mission=/Game/GroundBranch/Mission/Creek/Uplink?roundtime=60?defendersetuptime=30?timeofday=0800?timelimit=60?readycountdowntime=60?spectatefreecam=0?spectateenemies=0?spectateforcefirstperson=1?useteamrestrictions=1
MapList=/Game/GroundBranch/Maps/PowerStation/PowerStation?Mission=/Game/GroundBranch/Mission/PowerStation/Uplink?roundtime=60?defendersetuptime=30?timeofday=0800?timelimit=60?readycountdowntime=60?spectatefreecam=0?spectateenemies=0?spectateforcefirstperson=1?useteamrestrictions=1
MapList=/Game/GroundBranch/Maps/RunDown/RunDown?Mission=/Game/GroundBranch/Mission/RunDown/Uplink?roundtime=60?defendersetuptime=30?timeofday=0800?timelimit=60?readycountdowntime=60?spectatefreecam=0?spectateenemies=0?spectateforcefirstperson=1?useteamrestrictions=1
MapList=/Game/GroundBranch/Maps/SmallTown/SmallTown?Mission=/Game/GroundBranch/Mission/SmallTown/Uplink?roundtime=60?defendersetuptime=30?timeofday=0800?timelimit=60?readycountdowntime=60?spectatefreecam=0?spectateenemies=0?spectateforcefirstperson=1?useteamrestrictions=1