Difference between revisions of "Server Hosting"

From Holdfast: Nations At War
Jump to navigation Jump to search
(36 intermediate revisions by 2 users not shown)
Line 13: Line 13:
 
<pre>
 
<pre>
 
C:\Steam\steamapps\common\Holdfast Nations At War
 
C:\Steam\steamapps\common\Holdfast Nations At War
 +
</pre>
 +
Copy the files to the following location:
 +
<pre>
 +
C:\holdfastserver
 
</pre>
 
</pre>
  
Line 22: Line 26:
 
$ steamcmd +login [LOGINNAME] [PASSWORD] +force_install_dir "C:\holdfastserver" +app_update 589290 +quit
 
$ steamcmd +login [LOGINNAME] [PASSWORD] +force_install_dir "C:\holdfastserver" +app_update 589290 +quit
 
</pre>
 
</pre>
 +
 +
Notes:
 +
: ''+anonymous'' will fail because the account requires to own a copy of the game to download the game files!
 +
: You might need to enter a ''2-Factor Auth Code'' during this step.
 +
: In case the server ever  stops working you can run the command with ''+app_update 589290 validate'' to verify the game files.
  
 
===Obtaining the server files===
 
===Obtaining the server files===
 +
 +
Download the server files from the link below and extract them over to the ‘C:\holdfastserver’ folder on your server box.
 +
 +
[https://www.dropbox.com/sh/ppkfny3r9kcnz8x/AADiIXOrlAWPh-XbhPpimw0ja?dl=0 From Dropbox]
 +
 +
You can also download the folder from Baidu. This is especially useful for server hosts located in China were access to Dropbox might be blocked.This might not always be up to date with the latest version.
 +
 +
[https://pan.baidu.com/s/1qYqNnty From Baidu]
 +
 +
'''''Note:''' These files change from time to time but not necessarily every update, only reapply them if the server stops working after an update.''
 +
 +
===Basic Configuration & Starting the Server===
 +
[[File:FolderStructure.jpg|thumb|Holdfast merged server & game files folder structure]]
 +
 +
The server files come with a selection of example serverconfigs that show off how to setup various maps and gamemodes. Consult the [[Server_Configuration|Server Configuration]] page to find out more about modifying the server config.
 +
 +
Duplicate one of the example configs and one of the server .bats, for example:
 +
 +
<pre>
 +
serverconfig_server1_armybattlefield.txt -> serverconfig_server1_newserver.txt
 +
start_server1_armybattlefield_headless.bat -> start_server1_newserver_headless.bat
 +
</pre>
 +
 +
This will make sure that if you ever have to reapply the server files, the server config will not be overwritten. Open the new config file using your favorite ''Notepad'' or ''Notepad++'' and configure the basic server settings:
 +
 +
<pre>
 +
### Server & Steam Ports (All 3 ports must be unique per server instance).
 +
server_port 20100
 +
steam_communications_port 8700
 +
steam_query_port 27000
 +
</pre>
 +
 +
Notes:
 +
:Make sure to open the appropriate firewall ports both for TCP and UDP!
 +
:[[Holdfast: Nations At War|Holdfast]] gameservers respond, when correctly configured, to [https://developer.valvesoftware.com/wiki/Server_queries A2S Queries] on the ''steam_query_port''. Returning map, player count and player information when requested.
 +
 +
Basic trivial variables:
 +
<pre>
 +
server_name New Server - Army Battlefield
 +
server_welcome_message Welcome to my new game server!
 +
server_region europe
 +
server_admin_password ChangeThisPassword
 +
#server_password ChangeThisPassword
 +
</pre>
 +
 +
Networking setup (loosely "low / high tick" settings):
 +
<pre>
 +
# LowLatency = Reduced packet rate on close-range (high player count)
 +
# HighAccuracy = Increased packet rate on close-range (low player count)
 +
network_broadcast_mode LowLatency
 +
</pre>
 +
 +
Edit the ''start_server1_newserver_headless.bat'' to mount your newly created config:
 +
<pre>
 +
start "New Server" /affinity 3 "vapuriloadtester.exe" -s --serverConfigFilePath "serverconfig_server1_newserver.txt" --outputLog "logs_output\outputlog_server1_newserver.txt" --adminCommandLogFilePath "logs_adminactions\adminactions_server1_newserver.txt" --logArchivesDirectory "logs_archive" --framerate 120 --serverheadless
 +
</pre>
 +
 +
You can now launch gameserver by starting the ''start_server1_newserver_headless.bat''.
  
 
==Linux==
 
==Linux==
Line 49: Line 116:
 
</pre>
 
</pre>
  
If you want to perform a cleanup run the following command:
+
If you want to perform a cleanup run the following command (recommended if run inside of container):
 
<pre>
 
<pre>
 
$ apt-get clean autoclean \
 
$ apt-get clean autoclean \
        && apt-get autoremove -y \
+
&& apt-get autoremove -y \
        && rm -rf /var/lib/{apt,dpkg,cache,log}/
+
&& rm -rf /var/lib/apt/lists/*
 
</pre>
 
</pre>
  
Line 73: Line 140:
 
: ''+anonymous'' will fail because the account requires to own a copy of the game to download the game files!
 
: ''+anonymous'' will fail because the account requires to own a copy of the game to download the game files!
 
: You might need to enter a ''2-Factor Auth Code'' during this step.
 
: You might need to enter a ''2-Factor Auth Code'' during this step.
: In case the server ever  stops working you can run the command with ''+app_update 589290 validate'' to verify the game files
+
: In case the server ever  stops working you can run the command with ''+app_update 589290 validate'' to verify the game files.
  
 
===Obtaining the server files===
 
===Obtaining the server files===
Line 84: Line 151:
 
</pre>
 
</pre>
 
This will place the server files in the install directory of the [[Holdfast: Nations At War|Holdfast]] game files.<br>
 
This will place the server files in the install directory of the [[Holdfast: Nations At War|Holdfast]] game files.<br>
'''''Note:''' These files change from time to time but not necessarily every update, only update them if the server stops working.''
+
'''''Note:''' These files change from time to time but not necessarily every update, only reapply them if the server stops working after an update.''
  
 
===Basic Configuration & Starting the Server===
 
===Basic Configuration & Starting the Server===
 +
The server files come with a selection of example serverconfigs that show off how to setup various maps and gamemodes. Consult the [[Server_Configuration|Server Configuration]] page to find out more about modifying the server config.
 +
 +
Duplicate one of the example configs using the following command:
 +
 +
<pre>
 +
$ cp serverconfig_server1_armybattlefield.txt serverconfig_server1_newserver.txt
 +
</pre>
 +
 +
This will make sure that if you ever have to reapply the server files, the server config will not be overwritten. Open the new config file using your favorite ''vim, nano'' or ''emacs'' and configure the basic server settings:
 +
 +
<pre>
 +
### Server & Steam Ports (All 3 ports must be unique per server instance).
 +
server_port 20100
 +
steam_communications_port 8700
 +
steam_query_port 27000
 +
</pre>
 +
 +
Notes:
 +
:Make sure to open the appropriate firewall ports both for TCP and UDP!
 +
:[[Holdfast: Nations At War|Holdfast]] gameservers respond, when correctly configured, to [https://developer.valvesoftware.com/wiki/Server_queries A2S Queries] on the ''steam_query_port''. Returning map, player count and player information when requested.
 +
 +
Basic trivial variables:
 +
<pre>
 +
server_name New Server - Army Battlefield
 +
server_welcome_message Welcome to my new game server!
 +
server_region europe
 +
server_admin_password ChangeThisPassword
 +
#server_password ChangeThisPassword
 +
</pre>
 +
 +
Networking setup (loosely "low / high tick" settings):
 +
<pre>
 +
# LowLatency = Reduced packet rate on close-range (high player count)
 +
# HighAccuracy = Increased packet rate on close-range (low player count)
 +
network_broadcast_mode LowLatency
 +
</pre>
 +
 +
You can then start the server using the following commands:
 +
 +
<pre>
 +
# Remove old screens
 +
rm /tmp/.X0-lock 2> /dev/null
 +
 +
# Create new screen
 +
Xvfb :0 -screen 0 1024x768x16 &
 +
 +
# Start holdfast server on new display
 +
DISPLAY=:0.0 WINEDEBUG=-all wine "Holdfast NaW.exe" \
 +
        -startserver \
 +
        -batchmode \
 +
        -screen-width 640 \
 +
        -screen-height 480 \
 +
        -screen-quality Fastest \
 +
        -framerate 120 \
 +
        --serverheadless \
 +
        --servercarbonplayers 0 \
 +
        -serverConfigFilePath serverconfig_server1_newserver.txt \
 +
        -logFile logs_output/outputlog_server.txt \
 +
        -logArchivesDirectory logs_archive \
 +
        -s [INSERTSERVERIP] \
 +
        -p 20100 \
 +
        -l "94.130.66.231" \
 +
        -o 7101
 +
</pre>
 +
 +
Note:
 +
:"94.130.66.231" - is the holdfast lobby server IP (masterserver).

Revision as of 12:03, 5 February 2020

The following documentation details how to host a public or private gameserver for Holdfast: Nations At War. The game is currently in its Alpha stage and therefor doesn't have a dedicated server steamappID. The only officially supported game build is currently compiled for Windows x64, this means that hosting a server on Linux requires library-level virtualization (e.g. Wine).

To host a gameserver, you will require a Steam account that owns a copy of the game.

Windows

Obtaining the game files

Downloading using Steam Client

Holdfast game files folder structure

Obtaining the game files can be done via the regular Steam Client. Download the game and copy the files to another folder. It's not recommended to use the SteamApps location as a base for the gameserver, as this might lead to file corruption if a game update overwrites files whilst the server is running.

This is the default directory where the Holdfast: Nations At War game files are located:

C:\Steam\steamapps\common\Holdfast Nations At War

Copy the files to the following location:

C:\holdfastserver

Downloading using SteamCMD

The Steam Console Client or SteamCMD is a command-line version of the Steam client. Its primary use is to install and update various dedicated servers available on Steam using a command-line interface. It works with games that use the SteamPipe content system. All games have been migrated from the deprecated HLDSUpdateTool to SteamCMD. This is usually required if you are forced to use a terminal for your server setup. You can find instructions on how to download SteamCMD here: https://developer.valvesoftware.com/wiki/SteamCMD#Windows

The files can then be obtain using the following batch command:

$ steamcmd +login [LOGINNAME] [PASSWORD] +force_install_dir "C:\holdfastserver" +app_update 589290 +quit

Notes:

+anonymous will fail because the account requires to own a copy of the game to download the game files!
You might need to enter a 2-Factor Auth Code during this step.
In case the server ever stops working you can run the command with +app_update 589290 validate to verify the game files.

Obtaining the server files

Download the server files from the link below and extract them over to the ‘C:\holdfastserver’ folder on your server box.

From Dropbox

You can also download the folder from Baidu. This is especially useful for server hosts located in China were access to Dropbox might be blocked.This might not always be up to date with the latest version.

From Baidu

Note: These files change from time to time but not necessarily every update, only reapply them if the server stops working after an update.

Basic Configuration & Starting the Server

Holdfast merged server & game files folder structure

The server files come with a selection of example serverconfigs that show off how to setup various maps and gamemodes. Consult the Server Configuration page to find out more about modifying the server config.

Duplicate one of the example configs and one of the server .bats, for example:

serverconfig_server1_armybattlefield.txt -> serverconfig_server1_newserver.txt
start_server1_armybattlefield_headless.bat -> start_server1_newserver_headless.bat

This will make sure that if you ever have to reapply the server files, the server config will not be overwritten. Open the new config file using your favorite Notepad or Notepad++ and configure the basic server settings:

### Server & Steam Ports (All 3 ports must be unique per server instance).
server_port 20100
steam_communications_port 8700
steam_query_port 27000

Notes:

Make sure to open the appropriate firewall ports both for TCP and UDP!
Holdfast gameservers respond, when correctly configured, to A2S Queries on the steam_query_port. Returning map, player count and player information when requested.

Basic trivial variables:

server_name New Server - Army Battlefield
server_welcome_message Welcome to my new game server!
server_region europe
server_admin_password ChangeThisPassword
#server_password ChangeThisPassword

Networking setup (loosely "low / high tick" settings):

# LowLatency = Reduced packet rate on close-range (high player count)
# HighAccuracy = Increased packet rate on close-range (low player count)
network_broadcast_mode LowLatency

Edit the start_server1_newserver_headless.bat to mount your newly created config:

start "New Server" /affinity 3 "vapuriloadtester.exe" -s --serverConfigFilePath "serverconfig_server1_newserver.txt" --outputLog "logs_output\outputlog_server1_newserver.txt" --adminCommandLogFilePath "logs_adminactions\adminactions_server1_newserver.txt" --logArchivesDirectory "logs_archive" --framerate 120 --serverheadless

You can now launch gameserver by starting the start_server1_newserver_headless.bat.

Linux

As there is no dedicated server and no Linux build, setting up a Holdfast: Nations At War game server requires the usage of Wine or some other sort of library-level virtualization. This will always incur performance looses, so it's not recommended to use Wine to host large player servers (> 60 players). One can observe such behaviour if players start continuously sliding and jittering on the server, this can't be observed on non-virtualized game servers

Download Requirements

Ubuntu & Debian

Make sure no previous version of Wine has been installed, if it has, uninstall it completely and don't forget to run apt-get autoremove to clean up the remaining files. This command will install all required packages and Wine for you:

$ dpkg --add-architecture i386 \
        && apt-get update \
        && apt-get install -y \
            gnupg \
            gnupg1 \
            gnupg2 \
            curl \
            unzip \
            xvfb \
        && curl -o Release.key https://dl.winehq.org/wine-builds/Release.key \
        && apt-key add Release.key \
        && echo "deb http://dl.winehq.org/wine-builds/debian stretch main" >> /etc/apt/sources.list \
        && apt-get update \
        && apt-get install -y --install-recommends winehq-stable \
        && rm Release.key \
        && curl http://dl.winehq.org/wine/wine-mono/4.7.1/wine-mono-4.7.1.msi | wine msiexec /i; exit 0

If you want to perform a cleanup run the following command (recommended if run inside of container):

$ apt-get clean autoclean \
	&& apt-get autoremove -y \
	&& rm -rf /var/lib/apt/lists/*

Obtaining the game files

Downloading using SteamCMD

The Steam Console Client or SteamCMD is a command-line version of the Steam client. Its primary use is to install and update various dedicated servers available on Steam using a command-line interface. It works with games that use the SteamPipe content system. All games have been migrated from the deprecated HLDSUpdateTool to SteamCMD. This is usually required if you are forced to use a terminal for your server setup. You can find instructions on how to download SteamCMD here: https://developer.valvesoftware.com/wiki/SteamCMD#Linux

The files can then be obtain using the following bash command:

$ steamcmd.sh \
        +@sSteamCmdForcePlatformType windows \
        +login [LOGINNAME] [PASSWORD] \
        +force_install_dir /opt/holdfastserver \
        +app_update 589290 +quit

Notes:

This will download the Windows game files. Library-level virtualization is required to run them (e.g. Wine).
+anonymous will fail because the account requires to own a copy of the game to download the game files!
You might need to enter a 2-Factor Auth Code during this step.
In case the server ever stops working you can run the command with +app_update 589290 validate to verify the game files.

Obtaining the server files

You can obtain the server files, hosted here, using the following command:

$ cd /opt/holdfastserver \
        && curl -L -o holdfast_naw_public_servers.zip https://www.dropbox.com/sh/ppkfny3r9kcnz8x/AADiIXOrlAWPh-XbhPpimw0ja?dl=1 \
        && unzip -o holdfast_naw_public_servers.zip \
        && rm holdfast_naw_public_servers.zip

This will place the server files in the install directory of the Holdfast game files.
Note: These files change from time to time but not necessarily every update, only reapply them if the server stops working after an update.

Basic Configuration & Starting the Server

The server files come with a selection of example serverconfigs that show off how to setup various maps and gamemodes. Consult the Server Configuration page to find out more about modifying the server config.

Duplicate one of the example configs using the following command:

$ cp serverconfig_server1_armybattlefield.txt serverconfig_server1_newserver.txt

This will make sure that if you ever have to reapply the server files, the server config will not be overwritten. Open the new config file using your favorite vim, nano or emacs and configure the basic server settings:

### Server & Steam Ports (All 3 ports must be unique per server instance).
server_port 20100
steam_communications_port 8700
steam_query_port 27000

Notes:

Make sure to open the appropriate firewall ports both for TCP and UDP!
Holdfast gameservers respond, when correctly configured, to A2S Queries on the steam_query_port. Returning map, player count and player information when requested.

Basic trivial variables:

server_name New Server - Army Battlefield
server_welcome_message Welcome to my new game server!
server_region europe
server_admin_password ChangeThisPassword
#server_password ChangeThisPassword

Networking setup (loosely "low / high tick" settings):

# LowLatency = Reduced packet rate on close-range (high player count)
# HighAccuracy = Increased packet rate on close-range (low player count)
network_broadcast_mode LowLatency

You can then start the server using the following commands:

# Remove old screens
rm /tmp/.X0-lock 2> /dev/null

# Create new screen
Xvfb :0 -screen 0 1024x768x16 &

# Start holdfast server on new display
DISPLAY=:0.0 WINEDEBUG=-all wine "Holdfast NaW.exe" \
        -startserver \
        -batchmode \
        -screen-width 640 \
        -screen-height 480 \
        -screen-quality Fastest \
        -framerate 120 \
        --serverheadless \
        --servercarbonplayers 0 \
        -serverConfigFilePath serverconfig_server1_newserver.txt \
        -logFile logs_output/outputlog_server.txt \
        -logArchivesDirectory logs_archive \
        -s [INSERTSERVERIP] \
        -p 20100 \
        -l "94.130.66.231" \
        -o 7101

Note:

"94.130.66.231" - is the holdfast lobby server IP (masterserver).