Dedicated Server (Killing Floor 2): Difference between revisions

From Tripwire Interactive Wiki
Jump to navigation Jump to search
Tag: New redirect
 
(38 intermediate revisions by 10 users not shown)
Line 1: Line 1:
#REDIRECT [[kf2:Dedicated_Server_(Killing_Floor_2)]]
Creating Dedicated Server (Killing Floor 2)
Creating Dedicated Server (Killing Floor 2)


Line 65: Line 67:
  SteamCmd +runscript kf2_ds.txt
  SteamCmd +runscript kf2_ds.txt


=== Automating server updates and restart ===
: 3. Batch script using SteamCMD


==== Windows ====
:: a. Put your commands in a bat file (e.g.) server-update.bat to call the SteamCMD. Example:


Before we can automate we need something to automate from. First we need to create startup scripts we can run after updates.
..\steamcmd\SteamCmd.exe +login anonymous +force_install_dir ../kf2server +app_update 232130 +exit


TODO:
::: where "..\steamcmd\SteamCmd.exe" can either be a path relative to the bat file or an absolute path (e.g. G:\steamcmd\SteamCmd.exe)
: 1. Create a script to: Start individual servers. Edit with your config!
::: and "../kf2server" is the path to the server installation relative to the SteamCmd location (compare to 1. Add commands to the command line)
: 2. Create a script that: Combines individual startup scripts in order to start all servers.
: (Individual startup scripts because if you want to test on just one server or group them in batches for updates and restart!)
: 3. Create a script which: Terminates ALL servers, run SteamCMD and re-launch servers again.
: 4. Rejoice.


=== Linux ===


'''1. Create a script to: Start individual servers. Edit with your config!'''
: 1. First install steamcmd either via direct download or through your package manager:
sudo apt install steamcmd


Create a text file.
: 2. Create a script file for steamcmd to run(replace with your username if you are installing in your home directory):
Give it the extension ".CMD" e.g. '''runServer01.cmd''' (.BAT is the old way of doing things, but works as well.)
login anonymous
Add the following to the file:
force_install_dir /home/username/games/killingfloor
<pre>
app_update 232130 validate
start .\Binaries\win64\kfserver kf-bioticslab -ConfigSubDir=<server01> -WebAdminPort=40000 -Port=41000 -QueryPort=41001
quit
</pre>
 
OR FULL-PATH:
 
runServer01.cmd
<pre>
start C:\kf2servers\Binaries\win64\kfserver kf-bioticslab -ConfigSubDir=<server01> -WebAdminPort=40000 -Port=41000 -QueryPort=41001
</pre>
 
OR IF MULTIPLE SERVERS CREATE 2 FILES:
 
runServer01.cmd
<pre>
start .\Binaries\win64\kfserver kf-bioticslab -ConfigSubDir=<server01> -WebAdminPort=40000 -Port=41000 -QueryPort=41001
</pre>
runServer02.cmd
<pre>
start .\Binaries\win64\kfserver kf-bioticslab -ConfigSubDir=<server02> -WebAdminPort=40001 -Port=41002 -QueryPort=41003
</pre>
 
'''2. Create a script that: Combines individual startup scripts in order to start all servers.'''
 
Create a new file e.g. startALL.cmd
(use FULL-PATH because Command prompt starts in C:\Windows\System32)
Add all your individual startup scripts like so:
 
startALL.cmd
<pre>
start cmd /c C:\kf2servers\runServer01.cmd
start cmd /c C:\kf2servers\runServer02.cmd
</pre>
 
'''3. Create a script which: Terminates ALL servers, run SteamCMD and re-launch servers again.'''
 
As stated earlier about SteamCMD automation. Create 2 files. One for execution (.CMD file) and one with SteamCMD information (.TXT file)
E.g. '''updateKF2.cmd''' AND '''updateKF2_info.txt'''
 
Contents of the 2 files:
 
updateKF2.cmd
<pre>
start cmd /c TASKKILL /IM KFServer.exe /T
start "" /wait "C:\SteamCMD\steamcmd.exe" +runscript C:\kf2servers\updateKF2_info.txt
cd c:\kf2servers
start cmd /c c:\kf2servers\startALL.cmd
</pre>
 
updateKF2_info.txt
<pre>
@ShutdownOnFailedCommand 0 //set to 0 if updating multiple servers at once
@NoPromptForPassword 1
login anonymous
force_install_dir c:\KF2servers
app_update 232130 validate
quit
</pre>


 
: 3. Run this directly or through a shell script(again replace username):
'''4. Rejoice.'''
steamcmd +runscript /home/username/games/killingfloor/update.txt
 
Almost...
 
You now have scripts to start individual servers, groups of servers and have automated updates.
If you want to go further you can proceed to add the '''updateKF2.cmd''' to Windows Task Scheduler (taskschd.msc)
 
BUT!
 
Windows Task Scheduler's performance isn't that great. Tasks run at a lower than normal performance.
CPU Affinity value 7 (below-normal). Where normal is 5. (Value 5 being the same as a double click on your scripts.)
RAM allocation is also slow. A normal startup taking 15 seconds for 5 server instead take 2-3 minutes to allocate memory.
When scheduled here, it takes a long time for your servers to update and startup!
 
Workaround:
 
Schedule a task, export your task, edit the .xml file from the export changing the CPU affinity value to 5 up from 7, import your scheduled task.
 
Info:
 
<pre>
http://serverfault.com/questions/151824/process-runs-slower-as-a-scheduled-task-than-it-does-interactively
http://stackoverflow.com/questions/2427142/is-there-any-way-for-a-win2k8-scheduled-task-to-have-normal-priority-io
https://social.technet.microsoft.com/Forums/windowsserver/en-US/2812f4ce-9524-4943-92d7-85b9b1e16cf2/robocopy-slow-when-running-in-task-scheduler-in-windows-2008-r2
https://bdbits.wordpress.com/2010/04/29/setting-a-scheduled-task-process-priority/
</pre>


== Starting the Server ==
== Starting the Server ==
Line 175: Line 94:
Use the batch file downloaded with the server or create your own.  To launch a server with default settings on Survival Biotics Lab use the following batch script:
Use the batch file downloaded with the server or create your own.  To launch a server with default settings on Survival Biotics Lab use the following batch script:
  start .\Binaries\win64\kfserver kf-bioticslab
  start .\Binaries\win64\kfserver kf-bioticslab
For Linux Dedicated Servers the included bat file will not work as it is for the windows distribution. Instead run the following:
./Binaries/Win64/KFGameSteamServer.bin.x86_64 kf-bioticslab


=Pre-Requisites=
=Pre-Requisites=
Line 183: Line 105:


{| class="wikitable"
{| class="wikitable"
!style="width:15%"|Port
! style="width:15%" |Port
!style="width:20%"|Default
! style="width:20%" |Default
!style="width:15%"|Protocol
! style="width:15%" |Protocol
!style="width:65%"|What this option controls
! style="width:65%" |What this option controls
|-
|-
|Game Port
|Game Port
Line 206: Line 128:
|20560
|20560
|UDP
|UDP
|-
|NTP Port
|123
|UDP
|'''Weekly Outbreak Only''' - Internet time lookup to determine correct Outbreak
|
|
|}
|}
=Game Modes=
By default the game will launch into the '''Survival''' coop game mode which is a 6 player game mode.
===Versus Survival===
Admins can have the server launch into '''Versus Survival''' competitive game mode (an up to 12 player game mode) by using the following launch script:
..\Binaries\Win64\KFGame.exe Server KF-BurningParis'''?Game=KFGameContent.KFGameInfo_VersusSurvival?maxplayers=12'''
To make this change in webadmin admins just need to select the game mode '''"VersusSurvival"''' from the ''Change Map'' tab.
Support maps for Versus Survival at this time are:
BurningParis
BioticsLab
Prison
VoltorManor
Farmhouse
===Weekly Outbreaks===
Admins can also launch the server into the '''Weekly Outbreaks''' coop game mode (also a 6 player game mode) by using the following launch script:
..\Binaries\Win64\KFGame.exe Server KF-BurningParis'''?Game=KFGameContent.KFGameInfo_WeeklySurvival'''
To make this change in webadmin admins just need to select the game mode '''"Weekly"''' from the ''Change Map'' tab.
===Endless===
Admins can also launch the server into the '''Endless''' game mode (also a 6 player game mode) by using the following launch script:
..\Binaries\Win64\KFGame.exe Server KF-BurningParis'''?Game=KFGameContent.KFGameInfo_Endless'''
To make this change in webadmin admins just need to select the game mode '''"Endless"''' from the ''Change Map'' tab.


= Advanced Configuration =
= Advanced Configuration =
Line 214: Line 174:


'''Please note:  You will need to launch your server once for it to generate config files (based of the default config files that come with the install. It is strongly recommended you do NOT ever edit one of the default config files).'''
'''Please note:  You will need to launch your server once for it to generate config files (based of the default config files that come with the install. It is strongly recommended you do NOT ever edit one of the default config files).'''
===Endless===
Admins can also launch the server into the '''Endless''' coop game mode (also a 6 player game mode) by using the following launch script:
..\Binaries\Win64\KFGame.exe Server KF-DieSector'''?Game=KFGameContent.KFGameInfo_Endless'''


=== Command Line Launch Options ===
=== Command Line Launch Options ===
Line 220: Line 184:


{| class="wikitable"
{| class="wikitable"
!style="width:15%"|Url Arguments
! style="width:15%" |Url Arguments
!style="width:20%"|Valid Entries
! style="width:20%" |Valid Entries
!style="width:65%"|What this option controls
! style="width:65%" |What this option controls
|-
|-
|AdminName=
|AdminName=
|Alpha numeric character combinations. Example: Admin
|Alpha numeric character combinations. Example: Admin
|This is the admin username for WebAdmin if youre configuring WebAdmin via Commandline
|This is the admin username for WebAdmin if you're configuring WebAdmin via Commandline
|-
|-
|AdminPassword=
|AdminPassword=
Line 242: Line 206:


{| class="wikitable"
{| class="wikitable"
!style="width:15%"|Switches
! style="width:15%" |Switches
!style="width:20%"|Valid Entries
! style="width:20%" |Valid Entries
!style="width:65%"|What this option controls
! style="width:65%" |What this option controls
|-
|-
|Port=
|Port=
Line 283: Line 247:
: [Engine.AccessControl] in PCServer-KFGame.ini:
: [Engine.AccessControl] in PCServer-KFGame.ini:
{| class="wikitable"
{| class="wikitable"
!style="width:15%"|Option Name
! style="width:15%" |Option Name
!style="width:20%"|Valid Entries
! style="width:20%" |Valid Entries
!style="width:65%"|What this option controls
! style="width:65%" |What this option controls
|-
|-
|AdminPassword
|AdminPassword
Line 299: Line 263:
: [Engine.GameReplicationInfo] in PCServer-KFGame.ini:
: [Engine.GameReplicationInfo] in PCServer-KFGame.ini:
{| class="wikitable"
{| class="wikitable"
!style="width:15%"|Option Name
! style="width:15%" |Option Name
!style="width:20%"|Valid Entries
! style="width:20%" |Valid Entries
!style="width:65%"|What this option controls
! style="width:65%" |What this option controls
|-
|-
|ServerName
|ServerName
Line 311: Line 275:
|This is the displayed admin contact in the server browser
|This is the displayed admin contact in the server browser
|}
|}


==== Maps ====
==== Maps ====
Line 319: Line 281:
  GameLength=1 - This sets the number of rounds per game. 0 -> {short, 4 rounds}  1 -> {normal, 7 rounds}  2 -> {long, 10 rounds}
  GameLength=1 - This sets the number of rounds per game. 0 -> {short, 4 rounds}  1 -> {normal, 7 rounds}  2 -> {long, 10 rounds}


Maps can be set to run by gametype and amount of rounds played. The following is an example map list that can be put in your rogame.ini:
Maps can be set to run by gametype and amount of rounds played. The following is an example map list that can be put in your PCServer-KFGame.ini:


{| class="wikitable"
{| class="wikitable"
!style="width:100%"|Game Map Cycle
! style="width:100%" |Game Map Cycle
|-
|-
|GameMapCycles=(Maps=("KF-BurningParis","KF-Bioticslab","KF-Outpost","KF-VolterManor","KF-Catacombs","KF-EvacuationPoint"))
|GameMapCycles=(Maps=("KF-BurningParis","KF-Bioticslab","KF-Outpost","KF-VolterManor","KF-Catacombs","KF-EvacuationPoint"))
Line 333: Line 295:
The Engine.ini is where most port related changes can be made to a server, including the game port and query port.
The Engine.ini is where most port related changes can be made to a server, including the game port and query port.


== IP Blocks ==
NetServerMaxTickRate - This setting changes the server tickrate. The default is 30.
 
If you want to make a country specific server or want to exclude entire countries from accessing your server.
 
First get a zone file(s) for your need, whether that being for a allow or deny policy.
Credit to '''IPdeny.com''' for providing the lists
http://www.ipdeny.com/ipblocks/
 
Copy all the IPs with netmasks to a TEXT file. E.g. blocklist.txt
Edit this file using Notepad++
https://notepad-plus-plus.org/
 
Example or format in your text file:
<pre>
192.198.1.0/24
172.16.0.0/16
10.0.0.0/8
</pre>
 
This need to be formatted so that the server understands what type of policy these are individually.
: 1. In Notepad++ open replace [CTRL + H]
: 2. Enable regular expressions at the bottom-left in the new window.
: 3. In the "Find what:" Type: ^
:: 3.1. If a DENY list: In the "Replace with:" Type: IPPolicies=DENY;
:: 3.2. If an ALLOW list: In the "Replace with:" Type: IPPolicies=ALLOW;
: 4. Press "Replace All"
 
The result should be the entire file has now been converted like so:
<pre>
IPPolicies=DENY;192.198.1.0/24
IPPolicies=DENY;172.16.0.0/16
IPPolicies=DENY;10.0.0.0/8
</pre>
 
Copy these entries into your PCServer-KFGame.ini file '''just below''' the: [Engine.AccessControl] as the first lines underneath!
 
Like so:
 
PCServer-KFGame.ini
<pre>
[Engine.AccessControl]
IPPolicies=DENY;192.198.1.0/24
IPPolicies=DENY;172.16.0.0/16
IPPolicies=DENY;10.0.0.0/8
IPPolicies=ACCEPT;*
bAuthenticateClients=True
bAuthenticateServer=True
bAuthenticateListenHost=True
MaxAuthRetryCount=3
AuthRetryDelay=5
AdminPassword=
GamePassword=
</pre>
 
=== Suggestions! ===
The web interface gets slow with a big list! (At the page: /policy/ip)
Not having to paste into the server config file itself, but having a blocklist file or directory that gets scanned for zone files at server launch.
Not have a per entry block or allow, but maybe pr. file. In order to avoid formatting.


= Setting Up Web Admin =
= Setting Up Web Admin =
Line 412: Line 317:
Open KFWebAdmin.ini and add the following under [WebAdmin.WebAdmin]:
Open KFWebAdmin.ini and add the following under [WebAdmin.WebAdmin]:
  AuthenticationClass=WebAdmin.MultiWebAdminAuth
  AuthenticationClass=WebAdmin.MultiWebAdminAuth
NOTE: It should be inserted after "QueryHandlers=" in the section [WebAdmin.WebAdmin]. It wont load MultiAdmin if you add it just below [WebAdmin.WebAdmin]
Add it like so:
<pre>
[WebAdmin.WebAdmin]
bHttpAuth=false
bChatLog=True
sessionOctetValidation=3
startpage=/current
QueryHandlers=WebAdmin.QHCurrentKF
QueryHandlers=WebAdmin.QHDefaultsKF
QueryHandlers=WebAdmin.WebAdminSystemSettings
AuthenticationClass=WebAdmin.MultiWebAdminAuth
SessionHandlerClass=
bUseStrictContentType=False
DataStoreCacheClass=
cfgver=0
MaxAuthFails=5
</pre>


Start the server once to generate a new MultiAdmin.ini.  Now you can either add new admin names and passwords from within the Web Admin itself, or you can add them manually in the file.  To do so add the following information for each admin under [Admin MultiAdminData] in MultiAdmin.ini
Start the server once to generate a new MultiAdmin.ini.  Now you can either add new admin names and passwords from within the Web Admin itself, or you can add them manually in the file.  To do so add the following information for each admin under [Admin MultiAdminData] in MultiAdmin.ini
Line 438: Line 323:
  Order= "DenyAllow"
  Order= "DenyAllow"
  bEnabled= "True" // This enables this admin
  bEnabled= "True" // This enables this admin
=== Bugs ===
MultiAdmin logins not working
Credit to '''jorgamun''' on Reddit for writing the following.
Link: https://www.reddit.com/r/killingfloor/comments/33qzya/multiple_web_admins/
<pre>
Yeah, it's very temperamental at the moment. What you should do to get it working is:
Remove AuthenticationClass=WebAdmin.MultiWebAdminAuth from KFWebadmin.ini and restart your server.
Re-add AuthenticationClass=WebAdmin.MultiWebAdminAuth to KFWebadmin.ini but change nothing else. Restart your server.
Login with the default Webadmin. Change nothing before this step. The username is Admin, not admin (case matters).
Use the interface under Administration in your logged in session to add the other admins.
</pre>


== How To Use Web Admin ==
== How To Use Web Admin ==
Line 464: Line 335:
# For each Workshop item you want the server to download, add a ServerSubscribedWorkshopItems=<number> line in that section. You can find the number by looking for the id= part of the the URL of the Workshop item in Steam. For example, the URL of the Workshop Test map is http://steamcommunity.com/sharedfiles/filedetails/?id=535769647, so the line will be "ServerSubscribedWorkshopItems=535769647". There might be other text=number parts of the URL, so be sure to use only the number after "id=".
# For each Workshop item you want the server to download, add a ServerSubscribedWorkshopItems=<number> line in that section. You can find the number by looking for the id= part of the the URL of the Workshop item in Steam. For example, the URL of the Workshop Test map is http://steamcommunity.com/sharedfiles/filedetails/?id=535769647, so the line will be "ServerSubscribedWorkshopItems=535769647". There might be other text=number parts of the URL, so be sure to use only the number after "id=".


Example [OnlineSubsystemSteamworks.KFWorkshopSteamworks] section (not all ids are real workshop items):
Example [OnlineSubsystemSteamworks.KFWorkshopSteamworks] section (These ID's are for Grindhouse Contest Maps):


  [OnlineSubsystemSteamworks.KFWorkshopSteamworks]
  [OnlineSubsystemSteamworks.KFWorkshopSteamworks]
  ServerSubscribedWorkshopItems=535769647
  ServerSubscribedWorkshopItems=605633924
  ServerSubscribedWorkshopItems=535769453
  ServerSubscribedWorkshopItems=605551918
  ServerSubscribedWorkshopItems=535769678
  ServerSubscribedWorkshopItems=605549089
ServerSubscribedWorkshopItems=605532351
 
 
'''Make clients download the Workshop item from Steam when connecting to the server:'''


Make clients download the Workshop item from Steam when connecting to the server:'''
'''
This will only work for Workshop items that the server downloads itself, that are listed in the [OnlineSubsystemSteamworks.KFWorkshopSteamworks] section as described above.
This will only work for Workshop items that the server downloads itself, that are listed in the [OnlineSubsystemSteamworks.KFWorkshopSteamworks] section as described above.


Line 479: Line 352:
# Add the line "DownloadManagers=OnlineSubsystemSteamworks.SteamWorkshopDownload" to that section. If there are other "DownloadManagers=" lines, make sure this one is the first.
# Add the line "DownloadManagers=OnlineSubsystemSteamworks.SteamWorkshopDownload" to that section. If there are other "DownloadManagers=" lines, make sure this one is the first.
# Do not delete anything from this section, except (optionally) other DownloadManagers= lines.
# Do not delete anything from this section, except (optionally) other DownloadManagers= lines.
'''Steam Workshop map location in server and map names'''
Start the server and wait it to download Steam Workshop maps you added earlier.
This can take several minutes.
After server has downloaded all the maps stop the server and make sure that it is not running.
Navigate into server install location and go into folder KFGame\Cache\XXX\0\BrewedPC where XXX is one of the ServerSubscribedWorkshopItems you added earlier. For example (KF-BikiniAtoll):
KFGame\Cache\643383080\0\BrewedPC
Copy paste the map file name (excluding the .kfm extension).
See [[#Maps]] and [[#Get Custom Maps To Show In Web Admin]] where you can paste it.
'''Known issue on Linux servers:'''
Linux servers currently do not create the proper cache folder, you must create it inside your server install directory:
mkdir -p KFGame/Cache


== Setting Up Redirect - Depreciated by SteamWorkshop ==
== Setting Up Redirect - Depreciated by SteamWorkshop ==
Line 516: Line 407:


A redirect server needs fast speeds and as much bandwidth as possible, but little else.
A redirect server needs fast speeds and as much bandwidth as possible, but little else.
* Hosting too many maps
A server should not have more than 519 maps in rotation or it will cause the server to break
= Setting Up Server Welcome Screen =
#  Make sure the game server isn't running
#  Edit PCServer-KFGame.ini:
Find this part and edit it, here is the default one
Code:
BannerLink=http://art.tripwirecdn.com/TestItemIcons/MOTDServer.png
ServerMOTD=Welcome to our server. \n \n Have fun and good luck!
WebsiteLink=http://killingfloor2.com/
#  BannerLink should be a PNG (save it > 8bit) image
#  ServerMOTD is the message display under the BannerLink image. You can usesome "\n" to create a new line like in the default message, I personally add two lines before my MOTD message to add space between image and text
#  WebsiteLink is the url of your website (if you edit this from the webadmin, it resets to a blank value after saving)
#  Save, start the server, enjoy you welcome screen.
= Server Takeover =
== What it is ==
Server Takeover is a feature that allows players who are matchmaking and choosing to start their own private game to "grab" a server that has not opted out for them to use during their play time.  This will change the settings on the server to those that the players want and make it private.  However it will not expose any of the private information about that server (such as admin passwords) to them.  At the end of their stay in the server, the server will open back up again and await new players or another takeover request.
== How to opt out ==
To remove your server from the take over list you can use this line in the KFEngine.ini:
[Engine.GameEngine]
bUsedForTakeover=FALSE

Latest revision as of 15:25, 3 August 2018

Creating Dedicated Server (Killing Floor 2)

Downloading and Running the SteamCMD Update Tool

  1. Download the SteamCMD Update Tool:
  2. Extract the contents to a directory (Windows example: C:\SteamCmd\).
    Do not extract the contents of the updater tool to the regular Steam Client folder or to a folder that has the older HLDSUpdateTool program.
  3. Launch SteamCmd (NOTE: To automate this process for future updates, see #Automating SteamCmd).
  4. Open a command prompt in that directory and start SteamCmd. On Windows, type steamcmd. The program will automatically update and enter you in to a Steam> prompt. Type help for more information.
  5. Log in with the username "anonymous", by typing: "login anonymous". Do not use your Steam login!
  6. You should see a message stating that you have successfully logged in anonymously.

Downloading the Killing Floor 2 Server

This describes the process of updating the KF2 dedicated server application. These steps are required every time the game is updated. To automate this process for future updates, see #Automating SteamCmd.
1. If you aren't proceeding from the previous set of instructions, first launch SteamCmd.
2. At the Steam> prompt, set your KF2 Dedicated Server install directory.
Examples:
Absolute Path:
force_install_dir c:\KF2Server\
Up one folder:
force_install_dir ..\KF2Server\
In the Steam Command folder (suggested):
force_install_dir .\KF2Server\
3. Install or Update KF2.
If this is your first time installing or if you are trying to verify the integrity of the server files:
app_update 232130 validate
If this is simply an update to an existing KF2 dedicated server:
app_update 232130
If Tripwire is currently running a beta update of the dedicated server files:
app_update 232130 -beta "branch name"

Where "branch name" is the current beta branch. Currently there is not a live dedicated server beta branch.

4. Once finished, type quit at the Steam> prompt to properly log off of the Steam servers.

Automating SteamCmd

There are two ways to automate SteamCmd.

1. Add commands to the command line. Example:
SteamCmd +login anonymous +force_install_dir ./kf2_ds +app_update 232130 +exit
2. Create a script.
a. Put your SteamCmd commands in a text file. Example:
// update_kf2_ds.txt
//
login anonymous
force_install_dir ./kf2server
app_update 232130 validate
exit
Note: Using the validate option in your SteamCmd script will overwrite the KF2Server.bat file every time you update your server. If you edited this file for launching your server, either create a separate batch file to launch your server or remove the validate option from your SteamCmd script.
b. Run SteamCmd with the +runscript option. Example:
SteamCmd +runscript kf2_ds.txt
3. Batch script using SteamCMD
a. Put your commands in a bat file (e.g.) server-update.bat to call the SteamCMD. Example:
..\steamcmd\SteamCmd.exe +login anonymous +force_install_dir ../kf2server +app_update 232130 +exit
where "..\steamcmd\SteamCmd.exe" can either be a path relative to the bat file or an absolute path (e.g. G:\steamcmd\SteamCmd.exe)
and "../kf2server" is the path to the server installation relative to the SteamCmd location (compare to 1. Add commands to the command line)

Linux

1. First install steamcmd either via direct download or through your package manager:
sudo apt install steamcmd
2. Create a script file for steamcmd to run(replace with your username if you are installing in your home directory):
login anonymous
force_install_dir /home/username/games/killingfloor
app_update 232130 validate
quit
3. Run this directly or through a shell script(again replace username):
steamcmd +runscript /home/username/games/killingfloor/update.txt

Starting the Server

Use the batch file downloaded with the server or create your own. To launch a server with default settings on Survival Biotics Lab use the following batch script:

start .\Binaries\win64\kfserver kf-bioticslab

For Linux Dedicated Servers the included bat file will not work as it is for the windows distribution. Instead run the following:

./Binaries/Win64/KFGameSteamServer.bin.x86_64 kf-bioticslab

Pre-Requisites

Currently the server has several dependencies. As such we have shipped the UE3Redist.exe with the server files and it can be found in the "\Binaries\Redist" sub folder of where you have installed the server from SteamCMD.

Ports

By default the server will use the following ports:

Port Default Protocol What this option controls
Game Port 7777 UDP This is the main port the game will send connections over
Query Port 27015 UDP This port is used to communicate with the Steam Master Server
Web Admin 8080 TCP This port is used to connect to your servers web admin page (if turned on)
Steam Port 20560 UDP
NTP Port 123 UDP Weekly Outbreak Only - Internet time lookup to determine correct Outbreak

Game Modes

By default the game will launch into the Survival coop game mode which is a 6 player game mode.


Versus Survival

Admins can have the server launch into Versus Survival competitive game mode (an up to 12 player game mode) by using the following launch script:

..\Binaries\Win64\KFGame.exe Server KF-BurningParis?Game=KFGameContent.KFGameInfo_VersusSurvival?maxplayers=12

To make this change in webadmin admins just need to select the game mode "VersusSurvival" from the Change Map tab.

Support maps for Versus Survival at this time are:

BurningParis
BioticsLab
Prison
VoltorManor
Farmhouse


Weekly Outbreaks

Admins can also launch the server into the Weekly Outbreaks coop game mode (also a 6 player game mode) by using the following launch script:

..\Binaries\Win64\KFGame.exe Server KF-BurningParis?Game=KFGameContent.KFGameInfo_WeeklySurvival


To make this change in webadmin admins just need to select the game mode "Weekly" from the Change Map tab.


Endless

Admins can also launch the server into the Endless game mode (also a 6 player game mode) by using the following launch script:

..\Binaries\Win64\KFGame.exe Server KF-BurningParis?Game=KFGameContent.KFGameInfo_Endless


To make this change in webadmin admins just need to select the game mode "Endless" from the Change Map tab.

Advanced Configuration

Configuring your new Killing Floor 2 server will be very similar to those who have set up any Unreal Engine 3 server (such as UT 3). However to those who are from other engines such as IdTech and Source there are many differences, which we'll cover here. Those who are also looking for specific sever config settings will likely find what they are looking for below.

Please note: You will need to launch your server once for it to generate config files (based of the default config files that come with the install. It is strongly recommended you do NOT ever edit one of the default config files).

Endless

Admins can also launch the server into the Endless coop game mode (also a 6 player game mode) by using the following launch script:

..\Binaries\Win64\KFGame.exe Server KF-DieSector?Game=KFGameContent.KFGameInfo_Endless

Command Line Launch Options

You can use several command line launch options to help quickly launch a server. These include url arguments attached to the command line itself (example ...bioticslab?optionhere=x?option2here=x) as well as switches which are included after the main line (example ...bioticslab -switchhere -switch2here)

Url Arguments Valid Entries What this option controls
AdminName= Alpha numeric character combinations. Example: Admin This is the admin username for WebAdmin if you're configuring WebAdmin via Commandline
AdminPassword= Alpha numeric character combinations. Example: Abd32Sdn53 This is the master server administrator password
MaxPlayers= Alpha numeric character combinations. Example: 6 This is how many maximum players the server is set to support
Difficulty= Numeric characters 0-3 This sets the server difficulty. 0 = Normal, 1 = Hard, 2 = Suicidal, 3 = Hell on Earth
Switches Valid Entries What this option controls
Port= Alpha numeric character combinations. Example: 7787 This is the game port. Changing this without changing the query port will automatically change the query port as well (up/down the same number from the default game port)
QueryPort= Alpha numeric character combinations. Example: 27015 This is the query port. Changing this will change the port the server uses to communicate with Steam. Default is 27015. Change this in your launch will make it different from the automatic change that happens if you change the default port.
WebAdminPort= Alpha numeric character combinations. Example: 8080 This is the web admin port. Changing this will change the port used to connect to the servers webadmin panel if that functionality is turned on. This switch is still in Beta, use at your own risk.
Multihome= An IP that can resolve to the server machine. Example: 192.168.0.1 If a server machine can resolve to multiple IP's, this command can tie a server to a specific IP on that machine.
PREFERREDPROCESSOR= Numeric characters. Example: 2 This will tie a server process to a single core/thread on the hosting machine.
ConfigSubDir= Alpha numeric character combinations. Example: KF2Server-Normal-Long1 Creates and reads settings from a sub directory under ./KFGame/Config which allows you to configure .INI settings on a per server basis.

PCServer-KFGame.ini

The PCServer-KFGame.ini file can be found under \KFGame\Config\

This file controls all the various game elements that can be configured by admins in Killing Floor2. From game modes to spectating options and more, everything can be set up to the admins liking from this file.

First admins will want to configure this file to update the WebAdmin, server password and other settings that you do have access to. Here is an example of a very simple PCServer-KFGame.ini settings admins will want to change first:

Server Passwords

[Engine.AccessControl] in PCServer-KFGame.ini:
Option Name Valid Entries What this option controls
AdminPassword Alpha numeric character combinations. Example: Abd32Sdn53 This is the master server administrator password
GamePassword Alpha numeric character combinations. Example: cl4ng4m3 This sets a password players will need to enter to join the server

Server Name and Admin Contact

[Engine.GameReplicationInfo] in PCServer-KFGame.ini:
Option Name Valid Entries What this option controls
ServerName Alpha numeric character combinations. Example: Yoshi's House of 32 Compressed Pancakes This is the displayed server name to all players in the server and the server browser
AdminContact Alpha numeric character combinations. Example: [email protected] This is the displayed admin contact in the server browser

Maps

bUseMapList=True - This sets the server to use a custom map list you specify instead of the entire default map list.
GameLength=1 - This sets the number of rounds per game. 0 -> {short, 4 rounds}  1 -> {normal, 7 rounds}  2 -> {long, 10 rounds}

Maps can be set to run by gametype and amount of rounds played. The following is an example map list that can be put in your PCServer-KFGame.ini:

Game Map Cycle
GameMapCycles=(Maps=("KF-BurningParis","KF-Bioticslab","KF-Outpost","KF-VolterManor","KF-Catacombs","KF-EvacuationPoint"))

The first part specifies the exact maps and their game types.

PCServer-KFEngine.ini

The Engine.ini is where most port related changes can be made to a server, including the game port and query port.

NetServerMaxTickRate - This setting changes the server tickrate.  The default is 30.

Setting Up Web Admin

To enable webadmin: Open KFWeb.ini. In the [IpDrv.WebServer] section set

bEnabled=true

By default webadmin will listen on port 8080 on the IP of the game server using, but you'll want to customize this port for multiple servers on the same IP. To change this, open KFweb.ini and modify the following line:

ListenPort=8080

Admins will now be able to log into their servers web admin panel. They can do by either connecting via a local address (if the server is local) or web address (the servers IP) followed by the port. They can use any of their favorite modern internet browsers such as Chrome, Firefox, and IE. An example of what to put in the address bar of the browser is:

192.168.0.100:8080

They will be presented with a login screen. The default user is: Admin. The password will be whatever was set as the admin pass in PCServer-KFGame.ini. If no admin pass was set, the admin will not be able to log in.


Setting up multiple web admins

Open KFWebAdmin.ini and add the following under [WebAdmin.WebAdmin]:

AuthenticationClass=WebAdmin.MultiWebAdminAuth

Start the server once to generate a new MultiAdmin.ini. Now you can either add new admin names and passwords from within the Web Admin itself, or you can add them manually in the file. To do so add the following information for each admin under [Admin MultiAdminData] in MultiAdmin.ini

DisplayName=			"AdminNameHere" // Punctuation does matter for these names
Password=			"123" // Any alpha numeric set of characters will work here
Order=				"DenyAllow"
bEnabled=			"True" // This enables this admin

How To Use Web Admin

Go to web admin to find out more details on how to use the system.

Setting Up Steam Workshop For Servers

Configuring the server to download files from Workshop:

  1. Make sure that the server is not running. If it is running, the Workshop setup will be overridden the next time you restart the server.
  2. Add a new section to the PCServer-KFEngine.ini config file: [OnlineSubsystemSteamworks.KFWorkshopSteamworks]
  3. For each Workshop item you want the server to download, add a ServerSubscribedWorkshopItems=<number> line in that section. You can find the number by looking for the id= part of the the URL of the Workshop item in Steam. For example, the URL of the Workshop Test map is http://steamcommunity.com/sharedfiles/filedetails/?id=535769647, so the line will be "ServerSubscribedWorkshopItems=535769647". There might be other text=number parts of the URL, so be sure to use only the number after "id=".

Example [OnlineSubsystemSteamworks.KFWorkshopSteamworks] section (These ID's are for Grindhouse Contest Maps):

[OnlineSubsystemSteamworks.KFWorkshopSteamworks]
ServerSubscribedWorkshopItems=605633924
ServerSubscribedWorkshopItems=605551918
ServerSubscribedWorkshopItems=605549089
ServerSubscribedWorkshopItems=605532351


Make clients download the Workshop item from Steam when connecting to the server:

This will only work for Workshop items that the server downloads itself, that are listed in the [OnlineSubsystemSteamworks.KFWorkshopSteamworks] section as described above.

  1. Make sure that the server is not running. If it is running, the Workshop setup will be overridden the next time you restart the server.
  2. Find the section [IpDrv.TcpNetDriver] in the PCServer-KFEngine.ini config file.
  3. Add the line "DownloadManagers=OnlineSubsystemSteamworks.SteamWorkshopDownload" to that section. If there are other "DownloadManagers=" lines, make sure this one is the first.
  4. Do not delete anything from this section, except (optionally) other DownloadManagers= lines.


Steam Workshop map location in server and map names

Start the server and wait it to download Steam Workshop maps you added earlier. This can take several minutes. After server has downloaded all the maps stop the server and make sure that it is not running.

Navigate into server install location and go into folder KFGame\Cache\XXX\0\BrewedPC where XXX is one of the ServerSubscribedWorkshopItems you added earlier. For example (KF-BikiniAtoll):

KFGame\Cache\643383080\0\BrewedPC

Copy paste the map file name (excluding the .kfm extension).

See #Maps and #Get Custom Maps To Show In Web Admin where you can paste it.

Known issue on Linux servers:

Linux servers currently do not create the proper cache folder, you must create it inside your server install directory:

mkdir -p KFGame/Cache

Setting Up Redirect - Depreciated by SteamWorkshop

To enable redirect for third party custom maps to be able to run on their server, admins needs to install the "cooked server" files in their "\KFGame\BrewedPC" directory on the dedicated server.

Now unless users already have the cooked client map files installed manually or previously downloaded in their clients cache, the server will need to be set up to redirect clients without the map to download it from a redirect server. To enable this, the admin must open the PCServer-KFEngine.ini file and add a new section near the bottom of the file. The section is called [IpDrv.HTTPDownload] and should look like this:

[IpDrv.HTTPDownload]
RedirectToURL=http://kf2.tripwirecdn.com/

Where the RedirectToURL is a web location that is a repository of the client map files. The example above is the location of Tripwire's public redirect server which will host several near complete and complete custom maps. The client map file must be named as a .kfm file.


For Windows Server users if you use IIS for the redirect please make sure to go to Server Manager and check that you have Anonymous Authentication or Basic Authentication enabled. Next be sure that the File Extension .kfm is added to the list in MIME Types. You will see two fields when you add a new MIME Type, File name extension and MIME type. Here is an example on how it should look

http://i.imgur.com/hGsJuId.png (Can't find out how to embed the image so here is the link)

Get Custom Maps To Show In Web Admin

To get custom maps to show up in the change level section of web admin, admins will need to add a data store for the game in PCServer-KFGame.ini. A data store looks like the following example:

[KF-Default KFMapSummary]
MapName=KF-Default
ScreenshotPathName=UI_MapPreview_TEX.UI_MapPreview_Placeholder

Please note the use of lowercase in the map name and read the Known Issues to Avoid section for more information on the topic. This holds true for the mapcycle as well.

Known Issues to Avoid

  • Linux Redirect

As a redirect server can be a Linux machine, it is very important admins have the closing forward slash in the URL as well as spell all map names in lowercase. Failure to do so will result in a broken redirect and clients will only obtain a 1kb file of the proper name but not the actual files. Also take care when adding the map data store to the PCServer-KFGame.ini to use lowercase as well as the server will use those file names over any typed in as an admin.

  • Traveling from a custom map to a custom map

When a server goes from a custom map to a custom map, clients will download the second custom map, however there is a bug where the client will just see the "connecting" screen without any updated information about downloading the custom map until it is downloaded and begins to load.

A redirect server needs fast speeds and as much bandwidth as possible, but little else.

  • Hosting too many maps

A server should not have more than 519 maps in rotation or it will cause the server to break

Setting Up Server Welcome Screen

  1. Make sure the game server isn't running
  2. Edit PCServer-KFGame.ini:

Find this part and edit it, here is the default one

Code:

BannerLink=http://art.tripwirecdn.com/TestItemIcons/MOTDServer.png
ServerMOTD=Welcome to our server. \n \n Have fun and good luck!
WebsiteLink=http://killingfloor2.com/
  1. BannerLink should be a PNG (save it > 8bit) image
  2. ServerMOTD is the message display under the BannerLink image. You can usesome "\n" to create a new line like in the default message, I personally add two lines before my MOTD message to add space between image and text
  3. WebsiteLink is the url of your website (if you edit this from the webadmin, it resets to a blank value after saving)
  4. Save, start the server, enjoy you welcome screen.


Server Takeover

What it is

Server Takeover is a feature that allows players who are matchmaking and choosing to start their own private game to "grab" a server that has not opted out for them to use during their play time. This will change the settings on the server to those that the players want and make it private. However it will not expose any of the private information about that server (such as admin passwords) to them. At the end of their stay in the server, the server will open back up again and await new players or another takeover request.

How to opt out

To remove your server from the take over list you can use this line in the KFEngine.ini:

[Engine.GameEngine]
bUsedForTakeover=FALSE