Dedicated Server (KillingFloor): Difference between revisions

From Tripwire Interactive Wiki
Jump to navigation Jump to search
(Wrong page, my searching skills are bad.)
 
(34 intermediate revisions by 10 users not shown)
Line 1: Line 1:
= About =
== About ==
SteamCMD Update Tool is a new mwthod of updating game servers under Steam, all games are switching to this method, some of them are faster, like KillingFloor.


''There is some mis-understanding of the new steamcmd update tool happening here, let me just clear things up:''
[http://developer.valvesoftware.com/wiki/SteamCMD ''SteamCMD Update Tool''] is a new method of updating game servers under Steam. All games are gradually switching to this method.
''- steamcmd is used for updating of dedicated servers using the new Steam Pipe content system, newly released games on Steam use this system and older games are being switched over.''


''- currently steamcmd requires a steam login to perform an update, we plan on adding a no-login mode in the future for free to download titles.''
{{quote|style="margin:10px; border: 1px dashed grey"||text=There is some misunderstanding of the new steamcmd update tool happening here, let me just clear things up:<br/>
<br/>
* steamcmd is used for updating of dedicated servers using the new Steam Pipe content system, newly released games on Steam use this system and older games are being switched over.<br/>
* Currently steamcmd requires a steam login to perform an update, we plan on adding a no-login mode in the future for free to download titles.<br/>
* The login you use for steamcmd just needs rights to the game you are updating, so for the majority of dedicated server applications you CAN use a free account. So you could currently make an account per machine you wish to run the tool on. You do NOT need to buy the full game client to update if the dedicated server is free.<br/>
* CS:GO is a special case because it is in closed beta, access to its dedicated server is limited to blessed accounts which is why you need a special login. If you are having problems running CS:GO servers and are in the beta email the team and ask for access to another account for your dedicated servers.<br/>
<br/>
With Steam Pipe you should see an improvement in download speeds and more robust response during high demand. It uses HTTP as the content delivery method, so you could set up a local HTTP proxy to cache all steamcmd requests, making updates from multiple machines stay on your local network.|source=Alfred, Valve}}


''- the login you use for steamcmd just needs rights to the game you are updating, so for the majority of dedicated server applications you CAN use a free account. So you could currently make an account per machine you wish to run the tool on. You do NOT need to buy the full game client to update if the dedicated server is free.''
==Windows==
 
===Installing SteamCmd ===
 
# Go to https://store.steampowered.com/join/ and make new Steam account - no need for any games on it, this account will be needed later.
# Download the SteamCMD Update Tool - [http://blog.counter-strike.net/wp-content/uploads//2012/04/steamcmd.zip Windows Installer] ''(MD5: 1aa2b3206b9626f20dface42b9bcf7f0)'' to the destination directory, for example c:\SteamCmd.<p>
# Unpack it.{{note|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.}}</p>
# Run command prompt (start->run->[http://en.wikipedia.org/wiki/Command_Prompt cmd]).
# Change to the install directory:<br/><blockquote><code>cd /d c:\SteamCmd</code></blockquote>
# Run steamcmd to update itself:<br/><blockquote><code>steamcmd</code></blockquote><p>{{note|If you have a Steam running on the same machine you want to install server, then first of all close and exit Steam - you will avoid errors with SteamCmd thinking that another copy of Steam is already running.}}</p><p>{{note|Make sure you have "automatically detect settings" selected in the network options tab of Internet Explorer, else you may receive an error stating that you can't connect.}}</p><p>You can see extra info by using the ''help''  command:<br/><blockquote><code>help</code></blockquote>Notice that you are in Steam prompt, since there is ''Steam>'' in front of the line.<br/><br/>
# Log in with your Steam account created at the beginning:<br/><blockquote><code>login <username> <password></code></blockquote>You should see something like this on successful login<br/><blockquote>''Logging in user <username> to Steam Public...Success.''</blockquote>
# If you receive a Steam Guard error, check your e-mail for your access code and execute the following commands (you'll only need to do this once):<br/><blockquote><code>set_steam_guard_code yourcodehere<br/>login <username> <password></code></blockquote>
 
{{troubleshoot begin}}
* I am getting the following error when I run <code>steamcmd</code>:<br/><blockquote><code>SteamUpdater: Error: Steam needs to be online to update. Please confirm your network connection and try again.<br/>[ 0%] !!! Fatal Error: Steam needs to be online to update. Please confirm your network connection and try again.</code></blockquote>'''Solution''': Make sure you have "automatically detect settings" selected in the network options tab of Internet Explorer.
{{troubleshoot end}}


''- CS:GO is a special case because it is in closed beta, access to its dedicated server is limited to blessed accounts which is why you need a special login. If you are having problems running CS:GO servers and are in the beta email the team and ask for access to another account for your dedicated servers.''
===Installing KillingFloor server===


# For now it is assumed that your game server will be in c:\KFServer\ (more about it in [[#Installation paths]]). You must tell SteamCmd to force install the game in that directory:<br/><blockquote><code>force_install_dir c:\KFServer\</code></blockquote>
# Install game server. If you selected the directory that already contains the game, it will be updated:<br/><blockquote><code>app_update 215350 validate</code></blockquote>{{note|You must turn off the server before trying to update, otherwise it will fail.}}You should see progress of game server installation or update.<br/><br/>
# Once finished, type '''quit''' at the '''Steam>''' prompt to properly log off of the Steam servers.<br/>
<br/>
Now you may turn on the server.


''With Steam Pipe you should see an improvement in download speeds and more robust response during high demand. It uses HTTP as the content delivery method, so you could setup a local HTTP proxy to cache all steamcmd requests, making updates from multiple machines stay on your local network.''
{{troubleshoot begin}}
* I am getting the following error when I run <code>app_update</code><br/><blockquote><code>ERROR! Failed to request AppInfo update, not online or not logged into Steam</code></blockquote>'''Solution''': Remove the Steam folder from root directory (rd /s c:\Steam).
{{troubleshoot end}}


''- Alfred''
===Automation===


{{Notice
There are two ways to automate SteamCmd:
|title=WARNING
|text= 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.
}}


=Windows=
* Via direct use of command prompt
==Installing SteamCmd ==
* Via use of a script
* First, go to http://store.steampowered.com and make new Steam Account - no need for any games on it, it will be needed later.
* Download the SteamCMD Update Tool - [http://blog.counter-strike.net/wp-content/uploads//2012/04/steamcmd.zip Windows Installer]
MD5SUM
<code><pre>
1aa2b3206b9626f20dface42b9bcf7f0 *steamcmd.zip
</pre></code>
* Download the steamcmd.zip to the destinatnnion directory, for example c:\SteamCmd
* Unpack it.
* Run command prompt (menu Start, Run, cmd)
* Change to the install directory
cd /d c:\SteamCmd
* Run steamcmd to update itself:
steamcmd
* You can see extra info by using help command
help
* Notice that you are in Steam prompt, there is ''Steam>'' in front of the line
* Log in with your Steam Account created on the beginning
login username password
You should see something like this o successful login
Logging in user 'username ' to Steam Public...Success.


* If you receive a Steam Guard error, check your e-mail for your access code and execute the following commands (you'll only need to do this once):
====Command prompt====
set_steam_guard_code yourcodehere
login username password


==Installing KillingFloor server==
Simply enter the commands directly into command prompt, for example:
* Let's say your game server will be in c:\KFServer\ (more about it in [[#force_install_dir Paths]]) , so we must say to the SteamCmd to force install game in that directory, remember, you're still in Steam prompt
force_install_dir c:\KFServer\
* Now we install game server, if you selected the directory that already contains the game, it will be updated:
app_update 215350 validate


<blockquote><code>SteamCmd +login user password +force_install_dir c:\KFServer\ +app_update 215350 validate</code></blockquote>


{{Notice
This will first login to Steam and try to update game server.
|title=Error recieved
|text=If you encountered "ERROR! Failed to request AppInfo update, not online or not logged into Steam" you must remove Steam folder from root directory (rm -rf Steam)
}}


====Using a script====


You should see progress of game server installation or update.
Alternately, you can create a script that will perform a series of actions:
* Once finished, type '''quit''' at the '''Steam>''' prompt to properly log off of the Steam servers.


==Automation==
<blockquote><code>
There are two ways to automate SteamCmd:
// update_kf_ds.txt<br/>
* all set in command prompt
//<br/>
* use script
login user password<br/>
force_install_dir c:\KFServer\<br/>
app_update 215350 validate<br/>
exit</code></blockquote>


==All in command prompt==
Now you can issue SteamCmd to execute the script:
Add commands to the command line. Example:
SteamCmd +login user password +force_install_dir c:\KFServer\ +app_update 215350 validate


It should first login to steam and try to update game server.
<blockquote><code>SteamCmd +runscript C:\SteamCmd\update_kf_ds.txt</code></blockquote>


== Use script==
Place the script anywhere you want, just make sure to update the paths when invoking ''SteamCmd +runscript''.
*Create a script that will be executed by SteamCmd, it will be a simple .txt file, in C:\SteamCmd\update_kf_ds.txt
// update_kf_ds.txt
//
login user password
force_install_dir c:\KFServer\
app_update 215350 validate
exit


*Now you can issue SteamCmd to execute script:
==Linux==
SteamCmd +runscript C:\SteamCmd\update_kf_ds.txt


*you can place script file anywhere you want, just make sure to update the paths when invoking SteamCmd +runscript.
===Installing SteamCmd ===


=Linux=
# Go to https://store.steampowered.com/join/ and make new Steam account - no need for any games on it, this account will be needed later.
==Installing SteamCmd ==
# Create installation directory for SteamCmd, example ''home/unreal/steamcmd'':<br/><blockquote><code>mkdir -p /home/unreal/steamcmd<br/>cd /home/unreal/steamcmd</code/></blockquote>
* First, go to http://store.steampowered.com and make new Steam Account - no need for any games on it, it will be needed later.
# Download the SteamCMD Update Tool - [http://blog.counter-strike.net/wp-content/uploads//2012/04/steamcmd.tar.gz Linux Installer] ''(MD5: b803e6adc6dd051039cbbfdd846d804d)''.
* Create installation dir just for new SteamCMD, example: /home/unreal/steamcmd
# Unpack it.<br/><blockquote><code>tar zxf steamcmd.tar.gz</code></blockquote>
mkdir -p /home/unreal/steamcmd
# Run the shell script:<blockquote><code>./steam.sh</code></blockquote>This should make the ~/Steam directory and update the Steam framework.<br/>You can see extra info by using the ''help'' command:<br/><blockquote><code>help</code></blockquote>Notice that you are in Steam prompt, since there is ''Steam>'' in front of the line.<br/><br/>
cd /home/unreal/steamcmd
# Log in with your Steam account created at the beginning:<br/><blockquote><code>login <username> <password></code></blockquote>You should see something like this on successful login<br/><blockquote>''Logging in user <username> to Steam Public...Success.''</blockquote>
* Download the SteamCMD Update Tool [http://blog.counter-strike.net/wp-content/uploads//2012/04/steamcmd.tar.gz Linux Installer]
# If you receive a Steam Guard error, check your e-mail for your access code and execute the following commands (you'll only need to do this once):<br/><blockquote><code>set_steam_guard_code yourcodehere<br/>login <username> <password></code></blockquote>
wget http://blog.counter-strike.net/wp-content/uploads//2012/04/steamcmd.tar.gz
* Optional: check if the file was downloaded correctly by comparing MD5 Checksum
  md5sum steamcmd.tar.gz
It should be:
<code><pre>
b803e6adc6dd051039cbbfdd846d804d *steamcmd.tar.gz
</pre></code>
* Unpack it
tar zxf steamcmd.tar.gz


* run the command
{{troubleshoot begin}}
./steam.sh
* On certain Linux distributions you will see error message that something cannot be found etc.<br/><br/>'''Solution''': Try this instead:<br/><blockquote><code>STEAMEXE=steamcmd ./steam.sh</code></blockquote>If this still fails try:<br/><blockquote><code>export LD_LIBRARY_PATH=/home/unreal/steamcmd/linux32/<br/>STEAMEXE=steamcmd ./steam.sh</code></blockquote>
Notice, it should make ~/Steam directory
* On 64-bit systems you may get the following error:<br/><blockquote><code>steamcmd: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory</code></blockquote>'''Solution''': Install lib32stdc++6:
**Debian-based systems:<blockquote><code>apt-get install lib32stdc++6</code></blockquote>
**Red Hat-based systems:<blockquote><code>yum install libstdc++ libstdc++-4.4.6-4.el6.i686</code></blockquote>


* You can see extra infor by using help command
{{troubleshoot end}}
help
* Notice that you are in Steam prompt, there is ''Steam>'' in front of the line


===Installing KillingFloor server===


{{Notice
# For now it is assumed that your game server will be in /home/unreal/killingfloor (more about it in [[#Installation paths]]). You must tell SteamCmd to force install the game in that directory:<br/><blockquote><code>force_install_dir /home/unreal/killingfloor</code></blockquote>
|title=Errors?
# Install game server. If you selected the directory that already contains the game, it will be updated:<br/><blockquote><code>app_update 215360 validate</code></blockquote>{{note|You must turn off the server before trying to update, otherwise it will fail.}}You should see progress of game server installation or update.<br/><br/>
|text=
# Once finished, type '''quit''' at the '''Steam>''' prompt to properly log off of the Steam servers.<br/>
On certain Linux distributions you will see error message that something cannot be found etc, then try this instead
<br/>
STEAMEXE=steamcmd ./steam.sh
Now you may turn on the server.
if this still fails try:
export LD_LIBRARY_PATH=/home/unreal/steamcmd/linux32/
STEAMEXE=steamcmd ./steam.sh
}}


{{troubleshoot begin}}
* I am getting the following error when I run <code>app_update</code><br/><blockquote><code>ERROR! Failed to request AppInfo update, not online or not logged into Steam</code></blockquote>'''Solution''': Remove the Steam folder from root directory (rm -rf ~/Steam).
{{troubleshoot end}}


It should update the Steam framework, then you should be able to run it in order to install games.
===Automation===


* You can see extra info by using help command
There are two ways to automate SteamCmd:
help
* Notice that you are in Steam prompt, there is ''Steam>'' in front of the line
* Log in with your Steam Account created on the beginning
login username password
You should see something like this o successful login
Logging in user 'username ' to Steam Public...Success.
* If you receive a Steam Guard error, check your e-mail for your access code and execute the following commands (you'll only need to do this once):
set_steam_guard_code yourcodehere
login username password


==Installing KillingFloor server==
* Via direct use of command prompt
* Let's say your game server will be in /home/unreal/killingfloor (more about it in [[#force_install_dir Paths]]) , so we must say to the SteamCmd to force install game in that directory, remember, you're still in Steam prompt
* Via use of a script
force_install_dir /home/unreal/killingfloor
* Now we install game server, if you selected the directory that already contains the game, it will be updated:
app_update 215360 validate


{{Notice
====Command prompt====
|title=Error recieved
|text=If you encountered "ERROR! Failed to request AppInfo update, not online or not logged into Steam" you must remove Steam folder from root directory
rm -rf ~/Steam
}}


You should see progress of game server installation or update.
Simply enter the commands directly into command prompt, for example:
* Once finished, type '''quit''' at the '''Steam>''' prompt to properly log off of the Steam servers.


==Automation==
<blockquote><code>SteamCmd +login user password +force_install_dir /home/unreal/killingfloor +app_update 215360 validate</code></blockquote>
There are two ways to automate SteamCmd:
* all set in command prompt
* use script


==All in command prompt==
This will first login to Steam and try to update game server.
Add commands to the command line. Example:
SteamCmd +login user password +force_install_dir /home/unreal/killingfloor +app_update 215360 validate


It should first login to steam and try to update game server.
====Using a script====


== Use script==
Alternately, you can create a script that will perform a series of actions:
*Create a script that will be executed by SteamCmd, it will be a simple .txt file, in /home/unreal/steamcmd/update_kf_ds.txt
// update_kf_ds.txt
//
login user password
force_install_dir /home/unreal/killingfloor
app_update 215360 validate
exit


*Now you can issue SteamCmd to execute script:
<blockquote><code>
SteamCmd +runscript /home/unreal/killingfloor/update_kf_ds.txt
// update_kf_ds.txt<br/>
//<br/>
login user password<br/>
force_install_dir /home/unreal/killingfloor<br/>
app_update 215360 validate<br/>
exit</code></blockquote>


*you can place script file anywhere you want, just make sure to update the paths when invoking SteamCmd +runscript.
Now you can issue SteamCmd to execute the script:


<blockquote><code>SteamCmd +runscript /home/unreal/killingfloor/update_kf_ds.txt</code></blockquote>


{{Notice
Place the script anywhere you want, just make sure to update the paths when invoking ''SteamCmd +runscript''.
|title=Errors
|text=On some Linux distribution you may recieve errors with not loading some .so files, so try this (alter paths)


#!/bin/bash
{{troubleshoot begin}}
DIR=/home/unreal/steamcmd
* I am getting errors.<br/><br/>'''Solution''': On some Linux distribution you may recieve errors with not loading some .so files, so try this (alter paths):<blockquote><code>#!/bin/bash<br/>DIR=/home/unreal/steamcmd<br/>export LD_LIBRARY_PATH="${DIR}/linux32:$LD_LIBRARY_PATH"<br/>cd ${DIR}/linux32<br/>./steamcmd +runscript ${DIR}/update_kf_ds.txt</code></blockquote>
export LD_LIBRARY_PATH="${DIR}/linux32:$LD_LIBRARY_PATH"
{{troubleshoot end}}
cd ${DIR}/linux32
./steamcmd +runscript ${DIR}/update_kf_ds.txt


}}
==Installation paths==


=force_install_dir Paths=
You can specify installation directory in various ways:
You can specify installation directory in various ways:
==Windows==
*Absolute Path:
force_install_dir c:\KFServer\


*Up one folder:
===Windows===
force_install_dir ..\KFServer\
 
* Absolute Path:
<blockquote><code>force_install_dir c:\KFServer\</code></blockquote>
 
* Up one folder:
<blockquote><code>force_install_dir ..\KFServer\</code></blockquote>
 
* In the Steam Command folder:
<blockquote><code>force_install_dir .\KFServer\</code></blockquote>
 
===Linux===
 
* Absolute Path:
<blockquote><code>force_install_dir /home/unreal/killingfloor/</code></blockquote>


*In the Steam Command folder:
* Up one folder:
force_install_dir .\KFServer\
<blockquote><code>force_install_dir ../killingfloor/</code></blockquote>
==Linux==
*Absolute Path:
force_install_dir /home/unreal/killingfloor/


*Up one folder:
* In the Steam Command folder:
force_install_dir ../killingfloor/
<blockquote><code>force_install_dir ./killingfloor/</code></blockquote>


*In the Steam Command folder:
==Beta versions==
force_install_dir ./killingfloor/


=Beta versions=
If Tripwire is currently running a beta update of the dedicated server files:
If Tripwire is currently running a beta update of the dedicated server files:
app_update 215350 -beta "branch name"
<blockquote><code>app_update 215350 -beta "branch name"</code></blockquote>
Where "branch name" is the current beta branch.  Currently there is not a live dedicated server beta branch.
Where "branch name" is the current beta branch.  Currently there is not a live dedicated server beta branch.


== Starting the server ==
Use the batch file downloaded with the server or create your own. To launch a server with default settings on BioticsLab use the following batch script:
Windows
<blockquote><code>ucc server KF-bioticslab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6</code></blockquote>
Linux
<blockquote><code>./ucc-bin server KF-bioticslab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6 -nohomedir</code></blockquote>
==Server ports==
The following list of ports need to be open for a server to run successfully:
* 7707 UDP/IP (Game Port)
* 7708 UDP/IP (Query Port)
* 7717 UDP/IP (GameSpy Query Port)
* 28852 TCP/IP and UDP (Allows your Server to Connect to the Master Server Browser)
* 8075 TCP/IP (Port set via ListenPort that your WebAdmin will run on)
* 20560 UDP/IP (Steam Port)
Since the game is running with the Steam backend, if you are running more than 1 server per IP, you will need to make sure that you have some additional ports open beyond the default KF ports. If you change the default Game Port from 7707, this change will be reflected in the Master Server Port (28852) and the Steam Port (20560) as well.
You must also change OldQueryPortNumber=7717 under [IpDrv.UdpGamespyQuery] in the KillingFloor.ini to match the increase of the 7707 port. So if you change 7707 to 7807, then 7717 would change to 7817. If this is not done, the server will crash when starting.
==Advanced admin settings==
Admins looking to made changes from the default settings will find most options available in the Killingfloor.ini (or in WebAdmin once enabled in the Killingfloor.ini).
===Server name and passwords===
<blockquote><code>ServerName=Killing Floor Server<br/>
GamePassword=<br/>
Adminpassword=</code></blockquote>
===Difficulty and Length===
<blockquote><code>GameDifficulty=</code></blockquote>
Valid inputs:
* 1.0 = Beginner - Your grandma can play the game
* 2.0 = Normal - Quite challenging with lower level perks
* 4.0 = Hard - Very challenging even with mid level perks
* 5.0 = Suicidal - Incredibly difficult, even with high level perks
* 7.0 = Hell on Earth - You'll be wishing you were one of them
<blockquote><code>KFGameLength=</code></blockquote>


Valid inputs:
* 0 = Short - A 4 wave game
* 1 = Normal - The standard 7 wave game
* 2 = Long - The longer 10 wave game
* 3 = Custom - uses the custom sandbox settings for waves, monster counts, etc (which i won't go into here, but we'll talk about in another post).


= Automating SteamCmd =
===Map voting===
In the [xVoting.XvotingHandler] section of the killingfloor.ini admins need to set ''bMapVote'' to ''true'' in order to enable map voting.


There are two ways to automate SteamCmd.
Admins can can also configure how soon a map can be re-voted for with ''RepeatLimit''. The numerical value determined the number of previously played maps that should not be selectable. 0 - Map can be voted for right away. 4(Default) - Four maps must be played before the map becomes available again.


: 1. Add commands to the command line. Example:
===WebAdmin===
To enable WebAdmin, admins need to locate the [UWeb.WebServer] section of the Killingfloor.ini and set ''bEnable'' to ''true''.


SteamCmd +login user password +force_install_dir ./kf_ds +app_update 215350 validate
The default webadmin port is 8075 and once enabled Admins can log into it by navigating to


: 2. Create a script.
<blockquote><code>YOUR_SERVER_IP:8075</code></blockquote>


:: a. Put your SteamCmd commands in a text file. Example:
in their favorite web browser and logging in with the admin name (default: admin if not set) and password.


// update_kf_ds.txt
===In-game admin===
//
When you're in game press your ~ key to open the command console and type:
login user password
force_install_dir ./kfserver
app_update 215350 validate
exit


:: b. Run SteamCmd with the +runscript option. Example:
<blockquote><code>adminlogin <yourpassword></code></blockquote>
SteamCmd +runscript kf_ds.txt


== Starting the Server ==
This will log you in as admin and will give you access to admin commands such as ''map'', ''kick'', and ''ban''.


Use the batch file downloaded with the server or create your own.  To launch a server with default settings on BioticsLab use the following batch script:
[[Category:Killing Floor]]
ucc server KF-bioticslab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6

Latest revision as of 03:35, 17 June 2017

About

SteamCMD Update Tool is a new method of updating game servers under Steam. All games are gradually switching to this method.

“There is some misunderstanding of the new steamcmd update tool happening here, let me just clear things up:


  • steamcmd is used for updating of dedicated servers using the new Steam Pipe content system, newly released games on Steam use this system and older games are being switched over.
  • Currently steamcmd requires a steam login to perform an update, we plan on adding a no-login mode in the future for free to download titles.
  • The login you use for steamcmd just needs rights to the game you are updating, so for the majority of dedicated server applications you CAN use a free account. So you could currently make an account per machine you wish to run the tool on. You do NOT need to buy the full game client to update if the dedicated server is free.
  • CS:GO is a special case because it is in closed beta, access to its dedicated server is limited to blessed accounts which is why you need a special login. If you are having problems running CS:GO servers and are in the beta email the team and ask for access to another account for your dedicated servers.


With Steam Pipe you should see an improvement in download speeds and more robust response during high demand. It uses HTTP as the content delivery method, so you could set up a local HTTP proxy to cache all steamcmd requests, making updates from multiple machines stay on your local network.”

– Alfred, Valve

Windows

Installing SteamCmd

  1. Go to https://store.steampowered.com/join/ and make new Steam account - no need for any games on it, this account will be needed later.
  2. Download the SteamCMD Update Tool - Windows Installer (MD5: 1aa2b3206b9626f20dface42b9bcf7f0) to the destination directory, for example c:\SteamCmd.

  3. Unpack it.
    Note: 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.

  4. Run command prompt (start->run->cmd).
  5. Change to the install directory:

    cd /d c:\SteamCmd

  6. Run steamcmd to update itself:

    steamcmd

    Note: If you have a Steam running on the same machine you want to install server, then first of all close and exit Steam - you will avoid errors with SteamCmd thinking that another copy of Steam is already running.

    Note: Make sure you have "automatically detect settings" selected in the network options tab of Internet Explorer, else you may receive an error stating that you can't connect.

    You can see extra info by using the help command:

    help

    Notice that you are in Steam prompt, since there is Steam> in front of the line.

  7. Log in with your Steam account created at the beginning:

    login <username> <password>

    You should see something like this on successful login

    Logging in user <username> to Steam Public...Success.

  8. If you receive a Steam Guard error, check your e-mail for your access code and execute the following commands (you'll only need to do this once):

    set_steam_guard_code yourcodehere
    login <username> <password>

Troubleshooting

  • I am getting the following error when I run steamcmd:

    SteamUpdater: Error: Steam needs to be online to update. Please confirm your network connection and try again.
    [ 0%] !!! Fatal Error: Steam needs to be online to update. Please confirm your network connection and try again.

    Solution: Make sure you have "automatically detect settings" selected in the network options tab of Internet Explorer.

Installing KillingFloor server

  1. For now it is assumed that your game server will be in c:\KFServer\ (more about it in #Installation paths). You must tell SteamCmd to force install the game in that directory:

    force_install_dir c:\KFServer\

  2. Install game server. If you selected the directory that already contains the game, it will be updated:

    app_update 215350 validate

    Note: You must turn off the server before trying to update, otherwise it will fail.
    You should see progress of game server installation or update.

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


Now you may turn on the server.

Troubleshooting

  • I am getting the following error when I run app_update

    ERROR! Failed to request AppInfo update, not online or not logged into Steam

    Solution: Remove the Steam folder from root directory (rd /s c:\Steam).

Automation

There are two ways to automate SteamCmd:

  • Via direct use of command prompt
  • Via use of a script

Command prompt

Simply enter the commands directly into command prompt, for example:

SteamCmd +login user password +force_install_dir c:\KFServer\ +app_update 215350 validate

This will first login to Steam and try to update game server.

Using a script

Alternately, you can create a script that will perform a series of actions:

// update_kf_ds.txt
//
login user password
force_install_dir c:\KFServer\
app_update 215350 validate

exit

Now you can issue SteamCmd to execute the script:

SteamCmd +runscript C:\SteamCmd\update_kf_ds.txt

Place the script anywhere you want, just make sure to update the paths when invoking SteamCmd +runscript.

Linux

Installing SteamCmd

  1. Go to https://store.steampowered.com/join/ and make new Steam account - no need for any games on it, this account will be needed later.
  2. Create installation directory for SteamCmd, example home/unreal/steamcmd:

    mkdir -p /home/unreal/steamcmd
    cd /home/unreal/steamcmd

  3. Download the SteamCMD Update Tool - Linux Installer (MD5: b803e6adc6dd051039cbbfdd846d804d).
  4. Unpack it.

    tar zxf steamcmd.tar.gz

  5. Run the shell script:

    ./steam.sh

    This should make the ~/Steam directory and update the Steam framework.
    You can see extra info by using the help command:

    help

    Notice that you are in Steam prompt, since there is Steam> in front of the line.

  6. Log in with your Steam account created at the beginning:

    login <username> <password>

    You should see something like this on successful login

    Logging in user <username> to Steam Public...Success.

  7. If you receive a Steam Guard error, check your e-mail for your access code and execute the following commands (you'll only need to do this once):

    set_steam_guard_code yourcodehere
    login <username> <password>

Troubleshooting

  • On certain Linux distributions you will see error message that something cannot be found etc.

    Solution: Try this instead:

    STEAMEXE=steamcmd ./steam.sh

    If this still fails try:

    export LD_LIBRARY_PATH=/home/unreal/steamcmd/linux32/
    STEAMEXE=steamcmd ./steam.sh

  • On 64-bit systems you may get the following error:

    steamcmd: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

    Solution: Install lib32stdc++6:
    • Debian-based systems:

      apt-get install lib32stdc++6

    • Red Hat-based systems:

      yum install libstdc++ libstdc++-4.4.6-4.el6.i686

Installing KillingFloor server

  1. For now it is assumed that your game server will be in /home/unreal/killingfloor (more about it in #Installation paths). You must tell SteamCmd to force install the game in that directory:

    force_install_dir /home/unreal/killingfloor

  2. Install game server. If you selected the directory that already contains the game, it will be updated:

    app_update 215360 validate

    Note: You must turn off the server before trying to update, otherwise it will fail.
    You should see progress of game server installation or update.

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


Now you may turn on the server.

Troubleshooting

  • I am getting the following error when I run app_update

    ERROR! Failed to request AppInfo update, not online or not logged into Steam

    Solution: Remove the Steam folder from root directory (rm -rf ~/Steam).

Automation

There are two ways to automate SteamCmd:

  • Via direct use of command prompt
  • Via use of a script

Command prompt

Simply enter the commands directly into command prompt, for example:

SteamCmd +login user password +force_install_dir /home/unreal/killingfloor +app_update 215360 validate

This will first login to Steam and try to update game server.

Using a script

Alternately, you can create a script that will perform a series of actions:

// update_kf_ds.txt
//
login user password
force_install_dir /home/unreal/killingfloor
app_update 215360 validate

exit

Now you can issue SteamCmd to execute the script:

SteamCmd +runscript /home/unreal/killingfloor/update_kf_ds.txt

Place the script anywhere you want, just make sure to update the paths when invoking SteamCmd +runscript.

Troubleshooting

  • I am getting errors.

    Solution: On some Linux distribution you may recieve errors with not loading some .so files, so try this (alter paths):

    #!/bin/bash
    DIR=/home/unreal/steamcmd
    export LD_LIBRARY_PATH="${DIR}/linux32:$LD_LIBRARY_PATH"
    cd ${DIR}/linux32
    ./steamcmd +runscript ${DIR}/update_kf_ds.txt

Installation paths

You can specify installation directory in various ways:

Windows

  • Absolute Path:

force_install_dir c:\KFServer\

  • Up one folder:

force_install_dir ..\KFServer\

  • In the Steam Command folder:

force_install_dir .\KFServer\

Linux

  • Absolute Path:

force_install_dir /home/unreal/killingfloor/

  • Up one folder:

force_install_dir ../killingfloor/

  • In the Steam Command folder:

force_install_dir ./killingfloor/

Beta versions

If Tripwire is currently running a beta update of the dedicated server files:

app_update 215350 -beta "branch name"

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

Starting the server

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

Windows

ucc server KF-bioticslab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6

Linux

./ucc-bin server KF-bioticslab.rom?game=KFmod.KFGameType?VACSecured=true?MaxPlayers=6 -nohomedir

Server ports

The following list of ports need to be open for a server to run successfully:

  • 7707 UDP/IP (Game Port)
  • 7708 UDP/IP (Query Port)
  • 7717 UDP/IP (GameSpy Query Port)
  • 28852 TCP/IP and UDP (Allows your Server to Connect to the Master Server Browser)
  • 8075 TCP/IP (Port set via ListenPort that your WebAdmin will run on)
  • 20560 UDP/IP (Steam Port)

Since the game is running with the Steam backend, if you are running more than 1 server per IP, you will need to make sure that you have some additional ports open beyond the default KF ports. If you change the default Game Port from 7707, this change will be reflected in the Master Server Port (28852) and the Steam Port (20560) as well.

You must also change OldQueryPortNumber=7717 under [IpDrv.UdpGamespyQuery] in the KillingFloor.ini to match the increase of the 7707 port. So if you change 7707 to 7807, then 7717 would change to 7817. If this is not done, the server will crash when starting.

Advanced admin settings

Admins looking to made changes from the default settings will find most options available in the Killingfloor.ini (or in WebAdmin once enabled in the Killingfloor.ini).

Server name and passwords

ServerName=Killing Floor Server

GamePassword=

Adminpassword=

Difficulty and Length

GameDifficulty=

Valid inputs:

  • 1.0 = Beginner - Your grandma can play the game
  • 2.0 = Normal - Quite challenging with lower level perks
  • 4.0 = Hard - Very challenging even with mid level perks
  • 5.0 = Suicidal - Incredibly difficult, even with high level perks
  • 7.0 = Hell on Earth - You'll be wishing you were one of them

KFGameLength=

Valid inputs:

  • 0 = Short - A 4 wave game
  • 1 = Normal - The standard 7 wave game
  • 2 = Long - The longer 10 wave game
  • 3 = Custom - uses the custom sandbox settings for waves, monster counts, etc (which i won't go into here, but we'll talk about in another post).

Map voting

In the [xVoting.XvotingHandler] section of the killingfloor.ini admins need to set bMapVote to true in order to enable map voting.

Admins can can also configure how soon a map can be re-voted for with RepeatLimit. The numerical value determined the number of previously played maps that should not be selectable. 0 - Map can be voted for right away. 4(Default) - Four maps must be played before the map becomes available again.

WebAdmin

To enable WebAdmin, admins need to locate the [UWeb.WebServer] section of the Killingfloor.ini and set bEnable to true.

The default webadmin port is 8075 and once enabled Admins can log into it by navigating to

YOUR_SERVER_IP:8075

in their favorite web browser and logging in with the admin name (default: admin if not set) and password.

In-game admin

When you're in game press your ~ key to open the command console and type:

adminlogin <yourpassword>

This will log you in as admin and will give you access to admin commands such as map, kick, and ban.