Выделенный сервер KF2: справка по официальной вики (порты, параметры запуска, INI, Workshop, Takeover)
Это сжатая версия страницы официальной вики Killing Floor 2 о выделенных серверах, переложенная в формат справочника. Пошаговые руководства — в статьях Выделенный сервер KF2 через SteamCMD и Запуск выделенного сервера KF2.
Установка и обновление через SteamCMD
Аккаунт с купленной KF2 не нужен: входите анонимно.
Steam> login anonymous
Steam> force_install_dir .\KF2Server\
Steam> app_update 232130 validate
Steam> quit
app_update 232130обновляет существующую установку;validateдополнительно проверяет файлы.app_update 232130 -beta "имя ветки"ставит бета-ветку, если Tripwire её запускает.
Автоматизация одной строкой:
SteamCmd +force_install_dir ./KF2Server +login anonymous +app_update 232130 validate +exit
Или скрипт, который запускается через SteamCmd +runscript kf2_ds.txt:
force_install_dir ./KF2Server
login anonymous
app_update 232130 validate
exit
validate при каждом обновлении перезаписывает KF2Server.bat. Если вы его правили, запускайте сервер своим bat-файлом.
В Linux: sudo apt install steamcmd, те же команды в скрипт с абсолютным путём в force_install_dir, запуск steamcmd +runscript /путь/update.txt.
Запуск сервера
start .\Binaries\win64\kfserver kf-bioticslab
./Binaries/Win64/KFGameSteamServer.bin.x86_64 kf-bioticslab
Входящий в комплект .bat в Linux не работает.
Чтобы сервер на Windows сам поднимался после падения, запускайте его в цикле (скрипт SuSpeCT с форума killingfloor.ru):
@echo off
title KF2 ANTICRASH
:loop
echo (%time%) Server started.
start /wait .\Binaries\win64\kfserver.exe kf-bioticslab?MaxPlayers=6?Difficulty=1
echo (%time%) WARNING: server closed or crashed, restarting.
goto loop
Чтобы остановить сервер насовсем, сначала закройте окно скрипта, потом окно сервера.
Если в логе повторяется Attempting server re-register now... и Waiting for Steam Server UID: закройте игры Steam на этой машине, проверьте файлы и установите UE3Redist.exe из Binaries\Redist.
Порты
| Порт | По умолчанию | Протокол | Назначение |
|---|---|---|---|
| Игровой | 7777 | UDP | Основной игровой трафик |
| Query | 27015 | UDP | Мастер-сервер Steam |
| Web Admin | 8080 | TCP | Веб-админка, если включена |
| Steam | 20560 | UDP | Steam |
| NTP | 123 | UDP | Только Weekly Outbreak: время из интернета, чтобы выбрать нужный ивент |
Режимы игры
По умолчанию запускается Survival (6 игроков). Остальные выбираются через ?Game= или во вкладке Change Map в WebAdmin:
| Режим | Добавка к URL запуска | Игроков |
|---|---|---|
| Versus Survival | ?Game=KFGameContent.KFGameInfo_VersusSurvival?maxplayers=12 | до 12 |
| Weekly Outbreak | ?Game=KFGameContent.KFGameInfo_WeeklySurvival | 6 |
| Endless | ?Game=KFGameContent.KFGameInfo_Endless | 6 |
На момент написания вики Versus поддерживал карты BurningParis, BioticsLab, Prison, VolterManor и Farmhouse.
Параметры командной строки
Сначала запустите сервер один раз: он создаст файлы конфигурации из шаблонов. Файлы Default* никогда не правьте.
URL-аргументы (kf-bioticslab?AdminPassword=x?MaxPlayers=6):
| Аргумент | Смысл |
|---|---|
AdminName= | Имя пользователя WebAdmin при настройке из командной строки |
AdminPassword= | Пароль администратора сервера |
MaxPlayers= | Лимит игроков |
Difficulty= | 0 Нормально, 1 Сложно, 2 Самоубийственно, 3 Ад на земле |
Ключи (kf-bioticslab -Port=7787):
| Ключ | Смысл |
|---|---|
-Port= | Игровой порт. При смене query-порт сдвигается на ту же величину, если не задан -QueryPort |
-QueryPort= | Порт запросов Steam (по умолчанию 27015) |
-WebAdminPort= | Порт WebAdmin (в вики помечен как бета) |
-Multihome= | Привязывает сервер к одному IP на машине с несколькими адресами |
-PREFERREDPROCESSOR= | Привязывает процесс к одному ядру/потоку |
-ConfigSubDir= | Читает INI из подпапки KFGame/Config, чтобы у нескольких серверов были свои настройки |
PCServer-KFGame.ini
| Секция | Ключ | Смысл |
|---|---|---|
[Engine.AccessControl] | AdminPassword | Пароль администратора, он же пароль WebAdmin для пользователя Admin |
[Engine.AccessControl] | GamePassword | Пароль для входа игроков |
[Engine.GameReplicationInfo] | ServerName | Название в браузере и в игре |
[Engine.GameReplicationInfo] | AdminContact | Контакт, который показывается в браузере |
| секция игры | bUseMapList=True | Использовать свой список карт вместо всех |
| секция игры | GameLength= | 0 короткая (4 волны), 1 обычная (7), 2 длинная (10) |
Пример цикла карт:
GameMapCycles=(Maps=("KF-BurningParis","KF-Bioticslab","KF-Outpost","KF-VolterManor","KF-Catacombs","KF-EvacuationPoint"))
Больше 519 карт в ротации не ставьте: вики предупреждает, что это ломает сервер.
PCServer-KFEngine.ini: тикрейт и защита от DDoS
В секции [IpDrv.TcpNetDriver]:
| Ключ | По умолчанию | Смысл |
|---|---|---|
NetServerMaxTickRate | 30 | Тикрейт сервера |
EnableDDOSProtection | Должен быть True, чтобы работали настройки ниже | |
MaxUnverifiedConnections | 1500 | Одновременные непроверенные подключения, после которых новые игнорируются |
HandShakeTimeOutSec | 1 | Таймаут рукопожатия в секундах |
EnableBlockList | Блокировать IP со слишком большим числом непроверенных подключений | |
MaxUnverifiedConsWithSameIpToBlock | 16 | Непроверенных подключений с одного IP до блокировки |
BlockListTimeSeconds | 60 | На сколько секунд блокируется IP |
Подробнее о тикрейте: гайд по тикрейту KF2.
WebAdmin
- В
KFWeb.ini, секция[IpDrv.WebServer], поставьтеbEnabled=true. Если на одном IP несколько серверов, поменяйтеListenPort=8080. - Откройте в браузере
http://ip-сервера:8080. ПользовательAdmin, пароль —AdminPasswordизPCServer-KFGame.ini. Если пароль администратора не задан, войти не сможет никто.
Несколько админов: в KFWebAdmin.ini в секцию [WebAdmin.WebAdmin] добавьте AuthenticationClass=WebAdmin.MultiWebAdminAuth, запустите сервер один раз и добавляйте админов в WebAdmin или в созданном MultiAdmin.ini.
Карты из Workshop
При остановленном сервере (работающий сервер затрёт изменения):
; PCServer-KFEngine.ini
[OnlineSubsystemSteamworks.KFWorkshopSteamworks]
ServerSubscribedWorkshopItems=605633924
ServerSubscribedWorkshopItems=605551918
[IpDrv.TcpNetDriver]
DownloadManagers=OnlineSubsystemSteamworks.SteamWorkshopDownload
- Число — это
id=из адреса страницы в Workshop. - Строка
DownloadManagersдолжна быть первой в своей секции. Больше ничего там не удаляйте. - Запустите сервер, дождитесь загрузки, остановите его, затем найдите имя файла карты в
KFGame\Cache\<id>\0\BrewedPC(без.kfm) и добавьте в цикл карт. - В Linux папка кэша сама не создаётся:
mkdir -p KFGame/Cache.
Чтобы кастомная карта появилась в списке Change Map в WebAdmin, добавьте в PCServer-KFGame.ini запись:
[KF-Default KFMapSummary]
MapName=KF-Default
ScreenshotPathName=UI_MapPreview_TEX.UI_MapPreview_Placeholder
Старый HTTP-редирект ([IpDrv.HTTPDownload] с RedirectToURL=) вытеснен Workshop. Если вы всё ещё используете его на Linux, заканчивайте URL слешем и пишите имена карт в нижнем регистре, иначе клиенты получат пустые файлы по 1 КБ. См. также кастомные карты через nginx-редирект.
Экран приветствия
В PCServer-KFGame.ini при остановленном сервере:
BannerLink=http://example.com/banner.png
ServerMOTD=Welcome to our server. \n \n Have fun and good luck!
WebsiteLink=http://example.com/
Баннер должен быть в PNG. \n переносит строку. Если задать WebsiteLink через WebAdmin, после сохранения он обнуляется, поэтому правьте его в файле.
Server Takeover
Server Takeover позволяет игрокам из матчмейкинга, которые запускают приватную игру, «одолжить» свободный сервер, не отказавшийся от этой функции: сервер переключается на их настройки и становится приватным на время сессии, не раскрывая паролей администратора, а потом снова открывается. Чтобы отказаться:
; PCServer-KFEngine.ini
[Engine.GameEngine]
bUsedForTakeover=FALSE
Отключить можно и в общих настройках WebAdmin.
Вопросы и ответы
- Как запретить игрокам захватывать мой сервер KF2 (Server Takeover)?
- Добавьте bUsedForTakeover=FALSE в секцию [Engine.GameEngine] файла PCServer-KFEngine.ini. Сервер исключается из пула Server Takeover.
- Почему сервер KF2 постоянно пишет 'Waiting for Steam Server UID'?
- Закройте игры Steam на этой машине, проверьте файлы сервера через app_update 232130 validate и установите UE3Redist.exe из Binaries\Redist.