Dedicated Server (KillingFloor)

From Tripwire Interactive Wiki
Jump to navigation Jump to search

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.