| Engine: | Unreal Engine 3 (Modified) |
| Developer: | Tripwire Interactive |
| App ID: | 232130 |
| Game Port: | 7777 UDP (default) |
| Query Port: | 27015 UDP (default) |
| Web Admin: | 8080 TCP (default) |
| Max Players: | 6 (standard), up to 32 with mods |
| Game Modes: | Survival, Endless, Weekly Outbreak, Versus Survival |
| Perks: | 10 unique classes (Berserker, Commando, Medic, etc.) |
| Platform: | Windows, Linux |
Killing Floor 2 is a brutal wave-based co-op FPS where teams of up to 6 players fight through hordes of genetically engineered monsters (Zeds) developed by the Horzine Biotech Corporation. Each player selects a unique Perk class with specialized weapons and abilities.
The game features a sophisticated economy system where players earn "Dosh" during waves to buy weapons, ammo, and armor. Between waves, players strategically shop at Trader Pods scattered across maps. The action culminates in an epic boss battle after the final wave.
💡 Note: Port numbers are configurable. Defaults shown above. Multiple servers require unique port combinations (e.g., Game: 7777, 7778; Query: 27015, 27016).
# Allow KF2 game port
sudo ufw allow 7777/udp
# Allow query port (server browser)
sudo ufw allow 27015/udp
# Allow Web Admin (if using)
sudo ufw allow 8080/tcp
# Steam port (optional)
sudo ufw allow 20560/udp
# Enable firewall
sudo ufw enable
sudo ufw status
# Add KF2 ports
sudo firewall-cmd --permanent --add-port=7777/udp
sudo firewall-cmd --permanent --add-port=27015/udp
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --permanent --add-port=20560/udp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports
# Game server
New-NetFirewallRule -DisplayName "KF2 Game Port" -Direction Inbound -LocalPort 7777 -Protocol UDP -Action Allow
# Query port
New-NetFirewallRule -DisplayName "KF2 Query Port" -Direction Inbound -LocalPort 27015 -Protocol UDP -Action Allow
# Web Admin
New-NetFirewallRule -DisplayName "KF2 Web Admin" -Direction Inbound -LocalPort 8080 -Protocol TCP -Action Allow
# Allow KF2 ports
iptables -A INPUT -p udp --dport 7777 -j ACCEPT
iptables -A INPUT -p udp --dport 27015 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -p udp --dport 20560 -j ACCEPT
# Save rules (Ubuntu/Debian)
netfilter-persistent save
# Save rules (CentOS/RHEL)
service iptables save
# Create server directory
mkdir -p ~/kf2_server
cd ~/kf2_server
# Install required libraries (Ubuntu/Debian)
sudo apt-get update
sudo apt-get install libstdc++6:i386 lib32gcc1 libcurl4-gnutls-dev:i386
# Download server files with SteamCMD
steamcmd +force_install_dir ~/kf2_server +login anonymous +app_update 232130 validate +quit
# Note: App ID 232130 is for Killing Floor 2 Dedicated Server
# Download size is approximately 25-30 GB
# Download SteamCMD for Windows
# Extract to C:\steamcmd\
# Create server directory
mkdir C:\kf2_server
# Run SteamCMD
C:\steamcmd\steamcmd.exe +force_install_dir C:\kf2_server +login anonymous +app_update 232130 validate +quit
KF2 server configuration is split across multiple .ini files in KFGame/Config/:
Edit KFGame/Config/PCServer-KFEngine.ini:
[Engine.GameReplicationInfo]
ServerName=My Killing Floor 2 Server
ShortName=KF2
[IpDrv.TcpNetDriver]
AllowDownloads=True
ConnectionTimeout=60.0
InitialConnectTimeout=120.0
MaxClientRate=20000
MaxInternetClientRate=10000
NetServerMaxTickRate=30
LanServerMaxTickRate=35
[OnlineSubsystemSteamworks.KFWorkshopSteamworks]
ServerSubscribedWorkshopItems= # Add Workshop item IDs here
[IpDrv.TcpNetDriver]
DownloadManagers=IpDrv.HTTPDownload
[IpDrv.HTTPDownload]
# Set up FastDL (optional)
# RedirectToURL=http://yourfastdl.com/kf2/
[Engine.AccessControl]
AdminPassword=YourAdminPassword
GamePassword= # Leave empty for public server
[SystemSettings]
ResX=800
ResY=600
Edit KFGame/Config/PCServer-KFGame.ini:
[KFGame.KFGameInfo]
ServerName=My KF2 Server
GameDifficulty=1 # 0=Normal, 1=Hard, 2=Suicidal, 3=Hell on Earth
GameLength=1 # 0=4 waves, 1=7 waves, 2=10 waves
bDisableMapVote=False
MapVoteDuration=30
[Engine.Game]
MaxPlayers=6
MaxSpectators=2
[KFGame.KFGameReplicationInfo]
bAllowGrenade=True
[SystemSettings]
bAllowBulletHitDecals=True
bAllowBloodDecals=True
# Map Rotation
[KFGame.KFMapSummary]
MapAssociation=(Name="KF-BurningParis",bUsesAuth=False)
MapAssociation=(Name="KF-BlackForest",bUsesAuth=False)
MapAssociation=(Name="KF-ContainmentStation",bUsesAuth=False)
# Add more maps as needed
[KFGame.KFGameInfo_Survival]
GameLengthOptions=(Name="Short", Weight=0)
GameLengthOptions=(Name="Medium", Weight=1)
GameLengthOptions=(Name="Long", Weight=2)
| Difficulty | Value | Zed Health | Recommended For |
|---|---|---|---|
| Normal | 0 |
100% | New players, casual play |
| Hard | 1 |
135% | Intermediate players |
| Suicidal | 2 |
185% | Experienced teams |
| Hell on Earth | 3 |
255% | Elite players, competitive |
Edit KFGame/Config/KFWeb.ini:
[IpDrv.WebServer]
bEnabled=True
ListenPort=8080
[WebAdmin.WebAdmin]
bEnabled=True
AuthenticationClass=WebAdmin.MultiWebAdminAuth
[WebAdmin.Chatlog]
Filename=../Logs/chat.log
bIncludeTimeStamp=True
# First admin created automatically at first Web Admin access
# Or manually edit: KFGame/Config/KFWebAdmin.ini
[WebAdmin.WebAdminSettings]
AdminName=admin
Password=yourpassword # Will be hashed on first use
Open browser to: http://your-server-ip:8080
| Mode | Description | Waves |
|---|---|---|
| Survival | Standard wave-based mode with boss at the end | 4, 7, or 10 + Boss |
| Endless | Continuous waves with periodic boss fights | Infinite |
| Weekly Outbreak | Rotating special modifiers (Poundemonium, Bobble Zed, etc.) | 4 waves |
| Versus Survival | PvP mode - players control Zeds vs Survivors | 4 rounds |
Subscribe to Workshop items and add to PCServer-KFEngine.ini:
[OnlineSubsystemSteamworks.KFWorkshopSteamworks]
ServerSubscribedWorkshopItems=123456789 # Workshop item ID
ServerSubscribedWorkshopItems=987654321 # Add multiple lines for multiple items
| Perk | Role | Primary Weapons |
|---|---|---|
| Berserker | Tank/Melee DPS | Eviscerator, Pulverizer, Katana |
| Commando | Trash Killer | SCAR, AK-12, M16 M203 |
| Medic | Healer/Support | Medic Assault Rifle, HMTech-501 |
| Demolitionist | Explosive Specialist | RPG-7, M79, C4 |
| Firebug | Area Denial/DoT | Flamethrower, Microwave Gun |
| Gunslinger | Precision DPS | Dual Magnums, AF2011-A1 |
| Sharpshooter | Long-range Sniper | M14 EBR, Railgun, Crossbow |
| Support | Ammo/Armor Specialist | AA-12, Doomstick |
| SWAT | Close-range Tank | Kriss, P90, MP7 |
| Survivalist | Flexible/Hybrid | Any weapon type |
#!/bin/bash
# start_kf2.sh
cd ~/kf2_server/Binaries/Win64
./KFGameSteamServer.bin.x86_64 \
KF-BurningParis \
?Game=KFGameContent.KFGameInfo_Survival \
?Difficulty=1 \
?GameLength=1 \
?MaxPlayers=6 \
-Port=7777 \
-QueryPort=27015 \
-WebAdminPort=8080
@echo off
REM start_kf2.bat
cd C:\kf2_server\Binaries\Win64
KFServer.exe KF-BurningParis ^
?Game=KFGameContent.KFGameInfo_Survival ^
?Difficulty=1 ^
?GameLength=1 ^
?MaxPlayers=6 ^
-Port=7777 ^
-QueryPort=27015 ^
-WebAdminPort=8080
KF-MapName - Starting map?Game= - Game mode class path?Difficulty= - 0-3 (Normal, Hard, Suicidal, Hell on Earth)?GameLength= - 0-2 (Short 4 waves, Medium 7, Long 10)?MaxPlayers=6 - Maximum players-Port=7777 - Game port-QueryPort=27015 - Server browser port-WebAdminPort=8080 - Web Admin port# Check ports are open
netstat -an | grep 7777
netstat -an | grep 27015
# Verify GamePassword is empty in PCServer-KFEngine.ini
[Engine.AccessControl]
GamePassword=
# Restart server and wait 5-10 minutes for Steam registration
# Verify KFWeb.ini settings
[IpDrv.WebServer]
bEnabled=True
ListenPort=8080
# Check firewall allows TCP 8080
# Access via: http://server-ip:8080
MaxPlayers to 4 or lowerNetServerMaxTickRate=20 in PCServer-KFEngine.iniResX=640, ResY=480bAllowBloodDecals=False# Verify Workshop item IDs in PCServer-KFEngine.ini
[OnlineSubsystemSteamworks.KFWorkshopSteamworks]
ServerSubscribedWorkshopItems=123456789
# Check KFGame/Cache/ for downloaded content
# Restart server after adding new Workshop items
MaxPlayers settingKFGame/Logs/