Свой сервер

KF2: секреты выделенного сервера - советы, WebAdmin и карты

Эта страница сжимает очень длинный справочник сообщества от владельца нескольких серверов Hell on Earth. Он закрывает то, что официальная настройка не объясняет: что означают состояния Workshop, как обновлять сервер одним щелчком, как запускать несколько серверов из одной установки, как попасть в браузер серверов, правки WebAdmin, настройки сервера, управление картами и установка мутаторов. В примерах путь установки C:\KF2Server, у вас он может отличаться. О базовой установке читайте в материалах выделенный сервер через SteamCMD и частые проблемы хоста.

Состояния элементов Workshop и предупреждения

После добавления карт Workshop в PCServer-KFEngine.ini консоль сервера выводит Item State для каждой карты.

СостояниеЗначение
4Пользовательская карта установлена и актуальна.
0Пока не установлена, сервер скачает её впервые.
12Установлена, но нужно обновление: будет скачана и заменит старый файл.
20Скорее всего, проверка обновлений не удалась или ненадолго пропало соединение с Workshop. Перезапустите сервер и проверьте соединение.
8Неизвестно, возможно проблема загрузки или проверки, как и в 20.
36Неизвестно, всегда проходит само без видимых проблем. Автор заметил, что карты в этом состоянии в основном от одного автора.

Item State 4 в консоли сервера. Item state 4: карта установлена и актуальна.

Item State 20 в консоли сервера. Item state 20: проверка обновлений не удалась.

Предупреждения:

  • Workshop: Steam does not appear to be running. Unable to check Workshop. Сервер не может связаться с Workshop. Закройте и снова откройте Steam из панели задач и перезапустите сервер, убедитесь, что сервер обновлён. Предупреждение также появляется, если по ошибке запустить сервер дважды.
  • Unable to download workshop item . Страница Workshop для этого ID закрыта или удалена.
  • Строка о том, что сервер проверяет, установлена ли карта, чтобы не скачивать её заново: сначала он ищет в C:\KF2Server\Binaries\Win64\steamapps\workshop\content\232090 и, если карта там, копирует её в C:\KF2Server\KFGame\Cache. Если не нашёл, состояние становится 0, карта скачивается и копируется в Cache, после чего будет состояние 4.

Предупреждение Steam is not running. Предупреждение Workshop в консоли сервера.

Обновление сервера одним щелчком

  1. Щёлкните SteamCMD.exe правой кнопкой и создайте ярлык. Назовите его «Update Server» и положите куда угодно.
  2. Откройте свойства ярлыка и в конец поля «Объект» вставьте: +login anonymous +force_install_dir ./KF2Server +app_update 232130 +exit
  3. Измените +force_install_dir на реальное расположение сервера (подойдёт и абсолютный путь вроде c:\KF2Server\), чтобы обновился существующий сервер, а не создался новый.
  4. Когда выходит обновление Killing Floor 2, запустите ярлык. По окончании он закроется сам.

Примечания: для обычных обновлений app_update 232130, для бета-обновлений app_update 232130 -beta preview, а для проверки файлов добавьте validate.

Ярлык SteamCMD с аргументами обновления. Объект ярлыка с добавленной командой обновления.

Значки серверов

  • Ranked: сервер рейтинговый, статистика и опыт включены. Нет мутаторов и пользовательских настроек. Пользовательские карты не снимают рейтинг, если не используют скрипты.
  • Ranked Stock: сервер изменён, но статистика и опыт остаются, обычно это мутатор из белого списка или настройка вроде дружественного огня.
  • Unranked: статистика и опыт выключены из-за мутатора или мода не из белого списка либо карты со скриптами, например с дополнительным спавном зедов.

Значки серверов в браузере. Значки серверов Ranked, Ranked Stock и Unranked.

Несколько серверов из одной установки

Так можно запустить несколько серверов с общими файлами, но разными настройками, и одно обновление обновит все. Автор рекомендует не менее 16 ГБ ОЗУ, если запускаете много серверов.

  1. Скопируйте KF2Server.bat в той же папке и переименуйте копию, например в KF2ServerHoE.bat.
  2. Откройте её на правку и добавьте в конец -ConfigSubDir=HoEServer, например: start .\Binaries\win64\kfserver KF-BioticsLab?Difficulty=3?GameLength=2 -ConfigSubDir=HoEServer
  3. Запустите новый bat. Он создаст подпапку HoEServer в папке Config, а первый сервер продолжит хранить файлы в Config.
  4. В HoEServer\PCServer-KFEngine.ini в разделе URL смените Port=7777 на Port=7778.
  5. В HoEServer\KFWeb.ini смените ListenPort=8080 на ListenPort=8081.
  6. Пробросьте новые порты на роутере: 7777-7778 UDP (игра), 27010-27019 UDP (запросы), 8080-8081 TCP (WebAdmin) и 20560 UDP (Steam).

Оставьте -ConfigSubDir=HoEServer в новом bat. Основному серверу ничего менять не нужно. Пример результата: 209.249.95.195:7778 - сервер HoE, :7777 - сервер Suicidal, а WebAdmin на 8081 и 8080 соответственно.

Второй сервер не виден в списке. Случай из темы «2й сервер на одной машине?» (форум killingfloor.ru): во второй копии сервера в PCServer-KFEngine.ini порты поменяли с 7777 на 7877 и с 7778 на 7878; сервер получал Steam game server UID, но в списке не появлялся. Причина оказалась в файрволе: кроме стандартных портов первого сервера (20560, 27015, 7777, 7778 UDP), для второго пришлось открыть не только 7877 и 7878, но и 20660 и 27115.

MultiAdmin: несколько админов в WebAdmin

  1. Откройте C:\KF2Server\KFGame\Config\KFWebAdmin.ini и добавьте в [WebAdmin.WebAdmin] строку AuthenticationClass=WebAdmin.MultiWebAdminAuth.
  2. Запустите сервер. Он создаст KFMultiAdmin.ini; не трогайте его (не создавайте там админов и пароли, правьте только для удаления админов).
  3. Откройте WebAdmin и войдите как Admin (с заглавной A) со своим прежним паролем. Имена пользователей MultiAdmin чувствительны к регистру, в отличие от обычного входа.
  4. Откройте Administrators, затем Create Administrator, включите аккаунт, задайте пароль и отображаемое имя (его игроки видят в чате WebAdmin).
  5. Шаблонами Deny/Allow ограничьте права каждого админа. Порядок «Deny, Allow» запрещает часть функций и разрешает остальные, «Allow, Deny» наоборот. Перетаскивайте пункты из Navigation Preview. Автор советует отключить Administrators для всех, кроме вас.

Раздел Administrators в WebAdmin. Раздел Administrators после включения MultiAdmin.

Кнопки удаления нет: чтобы убрать админа, удалите весь его раздел из KFMultiAdmin.ini. Стандартный аккаунт Admin по-прежнему использует пароль из PCServer-KFGame.ini и не влияет на adminlogin <password> в игре.

Проброс портов и статический IP

Прежде чем что-то менять, убедитесь, что сервер действительно не виден: полностью откройте фильтры браузера серверов, отсортируйте по минимальному пингу и попросите друга подключиться через консоль по вашему IP.

  1. Узнайте IPv4-адрес машины командой ipconfig в командной строке.
  2. Сделайте его статическим в роутере или в Windows, иначе проброшенные порты потом укажут не туда.
  3. Пробросьте на этот IP порты:
НазваниеПортПротоколНазначение
Игровой порт7777UDPОсновные игровые подключения
Порт запросов27015UDPСвязь с мастер-сервером Steam
WebAdmin8080TCPВеб-страница администратора
Порт Steam20560UDPSteam

Непроверенные наблюдения автора: неверный игровой порт может скрыть сервер и из LAN, и из публичного списка, неверный порт запросов скрывает его из публичного списка, но в LAN он остаётся, а неверный порт WebAdmin или выключенный WebAdmin закрывает страницу админа.

Проброс портов на роутере. Пример проброса портов на роутере.

Проверьте порты в конфигах: в PCServer-KFEngine.ini должно быть Port=7777, а в KFWeb.ini - ListenPort=8080 и bEnabled=true. Альтернатива - добавить ключи в bat, они приоритетнее конфигов: -Port=7777 -QueryPort=27015 -WebAdminPort=8080.

Если сервер всё равно не виден:

  • перепроверьте все порты, IP и настройки и перезагрузите роутер;
  • попробуйте другой игровой порт, например 7780;
  • временно поместите IP в DMZ роутера для проверки и потом уберите;
  • уточните у провайдера, не блокирует ли он порты;
  • проверьте брандмауэры и антивирусы. У автора AVG (возможно, AVG Tune-Up) полностью блокировал серверы, а брандмауэр Windows в общественной сети тоже может блокировать.

Правки WebAdmin

Делайте резервные копии правимых файлов; если что-то сломалось, проверьте файлы сервера. Эти правки не снимают рейтинг сервера и не требуют перезапуска.

Показ уровней перков

В C:\KF2Server\KFGame\Web\ServerAdmin:

  • current.html: добавьте <th>Level</th> под заголовком Perk.
  • current_players.html: добавьте <th>Perk</th> и <th>Level</th> под Player name.
  • current_player_row.inc: добавьте <td class="right"><%player.perk.level%></td> под %player.perk.name%.
  • current_players_row.inc: добавьте <td><%player.perk.name%></td> и <td class="center"><%player.perk.level%></td> под %player.name% и смените класс пинга с right на center.

Уровни перков в списке игроков WebAdmin. Колонки перка и уровня в WebAdmin.

Счётчик волн Endless

В gamesummary.inc замените две строки времени внизу на: <dt class="gs_wave">Wave <%wave.num%></dt> и <dd class="gs_wave"><%wave.monsters.dead%>/<%wave.monsters.total%></dd>. Чтобы показать волну и на странице Server Info, добавьте в начало current_rules.inc строки <dt>Wave</dt> и <dd><%wave.num%></dd>, а также <dt>Difficulty</dt> и <dd><%rules.difficulty.text%></dd>, если их ещё нет.

Сводка игры WebAdmin со счётчиком волн. Счётчик волн в сводке игры.

Что лежит в папке Cache

При входе на сервер пользовательские карты скачиваются в Documents\My Games\KillingFloor2\KFGame\Cache. У выделенного сервера структура та же.

  • Папки с числами вроде 643383080 - ID Workshop скачанных вами карт.
  • Файлы .uxx - карты, скачанные с redirect, они перечислены в Cache.ini с уникальным идентификатором; несколько записей для одной карты означают разные версии файла.
  • Файлы .tmp - временные файлы, создаваемые при подключении игрока, потом исчезают.

Приветственный экран

Приветственный экран некоторое время работал не совсем исправно.

  • Баннер: только PNG, по некоторым сообщениям, глубина цвета должна быть больше 8 бит. Размер не критичен, безопасно 720 x 361. Разместите на сайте изображений и используйте прямую ссылку. В игре он может выглядеть темнее, поэтому увеличьте яркость и контраст и подбирайте методом проб.
  • Ссылка на сайт и девиз клана: девиз центрируется под картинкой.
  • Сообщение дня: прокручивается без полосы прокрутки и ограничено по длине. Новая строка - \n, разрыв абзаца - \n\n.
  • Форматирование: работают HTML-теги, а выбор цвета в WebAdmin нет. Примеры: <font color="#B22222" size="24">Заголовок</font>, <b>, <i>, <u>.

Баннер приветственного экрана в исходном виде. Изображение баннера.

Тот же баннер в игре. Баннер в игре, темнее оригинала.

Импорт и экспорт банов

В WebAdmin в разделе BANNED IDS нажмите Export и сохраните server-bans.json. Для импорта откройте файл в блокноте, скопируйте содержимое, создайте секретный gist на gist.github.com с именем файла server-bans.json, нажмите Raw, скопируйте адрес, вставьте его в поле Import Bans URL и нажмите Import. Один и тот же адрес можно использовать на нескольких серверах и обновлять gist по мере необходимости. Ошибка «Downloaded file did not contain valid JSON data» значит, что вставлен неверный адрес.

Кнопка Export в разделе забаненных ID. Экспорт банов в WebAdmin.

Журнал чата

В WebAdmin откройте WEBADMIN SETTINGS, CHAT LOGGING. Параметры: включить журнал, добавлять время, делать уникальные имена файлов и имя файла (подстановки %i IP сервера, %p порт, %c имя компьютера, %v версия движка). Фиксируется и командный, и общий чат. Журналы лежат в KF2Server\KFGame\Logs как файлы .log.

Настройки сервера

Они находятся в WebAdmin или в PCServer-KFGame.ini.

Не снимают рейтинг и не делают сервер пользовательским:

НастройкаЗначение по умолчанию и смысл
ReadyUpDelay=90Секунды ожидания, когда готовы все, кроме одного игрока.
GameStartDelay=4Секунды после готовности всех. Минимум 1, никогда 0.
TimeBetweenFailedVotes=10Секунды до нового голосования за кик после неудачного.
VoteTime=60.0Длительность голосования за кик в секундах.
MaxSpectators=2Максимум наблюдателей.
KickVotePercentage=0.66Доля для принятия (0.50 - 3 из 6, 0.66 - 4 из 6, 0.83 - 5 из 6).
bDisableTeamCollision=FalseПри true игроки проходят друг сквозь друга.
bEnableDeadToVOIP=trueПри true мёртвые игроки могут говорить в голосовом чате.
bAdminCanPause=TrueАдмины могут ставить паузу командой adminpause.
bDisableVOIP=FalseПолностью отключить голосовой чат.
bDisablePublicTextChat=FalseПолностью отключить текстовый чат.
bDisableMapVote=FalseОтключить голосование за карту после игры.
MaxIdleTime=0Время простоя до кика в секундах, максимум 300.
bDisableKickVote=FalseОтключить голосования за кик.
bSilentAdminLogin=FalseСкрыть объявление о входе админа.
bPartitionSpectators=FalseНаблюдатели говорят только друг с другом (голос).
bUsedForTakeover=FalseПозволяет игрокам менять ваш сервер под настройки их подбора; автор советует отключить, если вы не хотите такой услуги.
bEnableMapObjectives=TrueОтключите цели Stand Your Ground в разделе GameInfo_Survival или Endless, но оставьте true в [KFGame.KFGameInfo].

Переводят сервер в Ranked (Stock) при изменении: bDisablePickups (подбор брони и оружия) и FriendlyFireScale (урон по союзникам).

Workshop или redirect для карт

Можно использовать оба одновременно, приоритет у Workshop.

WorkshopRedirect
СжатиеДаНет
Скорость загрузкиВысокаяНиже
АвтообновлениеДаНет
КонтрольМеньше (карты должны быть публичными)Больше

Для большинства серверов лучше Workshop. Если страницу Workshop удалят, карта перестанет работать для заходящих игроков; redirect этого избегает и позволяет держать карты, которых нет в Workshop.

Удобное управление картами

  • Добавляйте комментарии // рядом с каждым ID Workshop в PCServer-KFEngine.ini и ставьте новые карты вверх списка, так как он читается сверху вниз.
  • В хранилище данных PCServer-KFGame.ini достаточно [KF-BikiniAtoll KFMapSummary] и MapName=.... MapAssociation нужен для официальных карт, а ScreenshotPathName для пользовательских карт не работает.
  • Ищите в папке Cache kf-*.kfm, чтобы увидеть только файлы карт.
  • При большом числе карт ведите таблицу установленных карт.
  • Сортируйте цикл карт по алфавиту (помогут таблицы) или создавайте категории, добавляя заголовки как фальшивые карты, например ———————KF1 Maps———————. Если игрок нажмёт заголовок, загрузится карта по умолчанию BioticsLab.

Цикл карт с заголовками категорий. Цикл карт с категориями.

Обходные пути при большом числе карт

  • Лимит цикла карт WebAdmin около 170-180 карт: в KFWeb.ini в разделе [IpDrv.WebConnection] увеличьте MaxValueLength и MaxLineLength с 4096 до 999999.
  • Вылет при 519 и более картах при использовании Change Map или Map Cycle в WebAdmin: исправления нет. Создайте аккаунт MultiAdmin и впишите /current/change и /settings/maplist в DENY PATTERNS с порядком Deny, Allow, а карты меняйте из консоли командой switch KF-MapName (при желании с ?Difficulty=3?GameLength=2) или restartmap.

Установка пользовательских карт

Игроки скачивают карты из Workshop или с redirect, а не напрямую с вашего компьютера.

Карты через redirect: выберите сайт redirect (самый распространённый - skillzservers.com/kf2-redirect), скачайте карты, поместите их в \KF2Server\KFGame\BrewedPC\Maps (по желанию в подпапку CustomMaps) и укажите RedirectToURL= в PCServer-KFEngine.ini.

Карты Workshop: в PCServer-Engine.ini в разделе [IpDrv.TcpNetDriver] добавьте DownloadManagers=OnlineSubsystemSteamworks.SteamWorkshopDownload выше других строк DownloadManagers=. В конец файла добавьте [OnlineSubsystemSteamworks.KFWorkshopSteamworks] и ServerSubscribedWorkshopItems=<ID>. Запустите сервер, чтобы он скачал карту, проверьте \KF2Server\KFGame\Cache и закройте его.

Хранилище данных и цикл карт: в PCServer-KFGame.ini добавьте раздел [KF-BikiniAtoll KFMapSummary] с MapName=KF-BikiniAtoll под официальными картами, затем добавьте карту в GameMapCycles= или в Web Admin в Map Cycles. Названия карт redirect чувствительны к регистру, а Workshop нет.

Копирование ID Workshop из адреса страницы. ID Workshop - число в конце адреса элемента.

Вставка ID Workshop в конфиг сервера. Подписка на Workshop в конфиге движка.

Добавление карты в цикл карт. Запись хранилища данных для пользовательской карты.

Мутаторы и режимы игры

Мутатор - мини-мод с ограниченными возможностями, режим игры задаёт правила матча. Оба отключают опыт и статистику, если не входят в белый список, и скачиваются игроками из Workshop как пользовательская карта. Всегда читайте инструкции автора.

  1. Скопируйте ID Workshop.
  2. Вставьте его после ServerSubscribedWorkshopItems= в PCServer-KFEngine.ini.
  3. Запустите один раз для скачивания, затем закройте и проверьте папку Cache.
  4. Добавьте в параметры запуска KF2Server.bat. Примеры: ?Game=EndlessM.EndlessM_Main (Unofficial Endless Mode), ?Game=ControlledDifficulty.CD_Survival (Controlled Difficulty), ?Mutator=FPBackPackMut.FPBPBaseMut (Legs and Backpack), ?Mutator=NightmareDifficulty.NightmareMutator?Difficulty=4, ?Mutator=ServerExtMut.ServerExtMut, ?Mutator=OnlyBossMut.OnlyBossMut, ?Mutator=ClassicScoreboard.ClassicSCMut и ?Mutator=KFMutator.KFMutator_MaxPlayersV2?MaxPlayers=15?MaxMonsters=64.

Мутаторы объединяют через запятую, например ?Mutator=OnlyBossMut.OnlyBossMut,FPBackPackMut.FPBPBaseMut; совместимость уточняйте в заметках авторов.

Строка запуска с мутатором в bat-файле. Параметры мутатора в строке запуска.

Ранние мутаторы (2015-2016)

Эти мутаторы обсуждались в разделе KF2 на форуме killingfloor.ru и писались под старые версии игры, поэтому совместимость с текущей версией проверяйте сами.

  • Server Extension (автор Marco, тема «[Mutator] Server Extension mod»), ServerExtMut.ServerExtMut: хранит статистику на сервере и отключает стандартную прокачку перков. Прокачка в стиле RPG: с каждым уровнем 15 очков на способности перка (например, 10 на урон и 5 на максимум патронов). Новое табло с поддержкой больше 6 игроков, профилем Steam игрока и kick/ban для админа; встроенный Max Players; спектатор сквозь стены; чат дублируется в консоль; по желанию — сообщения об убийствах и уроне, респаун после смерти, голосование за карту; показ урона цифрами. Версия 0.97 исправила краш с KF2 1032 и добавила черту «Knockback resist», топ игроков сервера в меню «Stats» и черту Берсерка «Spartan» (двигаться в реальном времени в ZED-time и бить намного быстрее).
  • KF2 Bots (тема «[Mutator] KF2 Bots»), KF2Bots.KF2BotsMut, версия 0.1: боты закупаются у торговца, берут оружие своего перка, кидают гранаты в толпу, лечат себя и других. В соло откройте консоль в главном меню и введите Open KF-BioticsLab?Mutator=KF2Bots.KF2BotsMut. На сервере — добавьте мутатор в строку запуска, например start .\Binaries\win64\kfserver kf-bioticslab?Mutator=KF2Bots.KF2BotsMut?adminpassword=123?AdminName=Administrator, либо пропишите ServerActors=KF2Bots.KF2BotsMut под [Engine.GameEngine] в PCServer-KFEngine.ini, либо добавьте на вкладке Server Actors в WebAdmin (каждый мутатор с новой строки). Файл .ini кладут в KFGame\Config\, .u — в KFGame\BrewedPC\. По отзывам: здоровье мобов растёт с ботами, а их число — нет; был конфликт с ServerExt; на версии 1048 мутатор уже не работал и не компилировался.
  • MutLoader для KF2 (автор Freddy, тема «Mut Loader for KF2»), MutLoader.MutLoader: аналог MutLoader из KF1. В соло — Open KF-BioticsLab?Mutator=MutLoader.MutLoader, на сервере — ServerActors=MutLoader.MutLoader в разделе [KFGame.KFGameEngine] файла PCServer-KFGame.ini. Flame, оговорившись, что может ошибаться, замечал, что через ServerActors запускаются только серверные мутаторы, клиентские так не запустить.
  • Hard mode survival (тема «[GameType] Hard mode survival»): режим задавали как ?Game=HardModeBoss.HardSurv и в [Engine.GameInfo] строками DefaultGame=HardModeBoss.HardSurv и DefaultServerGame=HardModeBoss.HardSurv, но после смены карты он сбрасывался. Помогло прописать этот геймтайп в .ini голосования за карту (KFMapVote).
  • Setup Pickup (автор Freddy, Workshop 711722623): время жизни выброшенного оружия и денег и выпадение всего оружия при смерти игрока. Old style C4 (Workshop 647443145): мины C4 взрываются при приближении мобов, как в KF1.

Быстрые советы и секреты

  • Админов нельзя кикнуть. Голосование за кик залогиненного админа проваливается, даже если набрало голоса, а через WebAdmin его тоже не кикнуть.
  • Сессионный бан банит игрока до следующей карты и затем автоматически снимает бан - это лучше обычного кика, если игрок может вернуться позже.
  • Голосование за карту: если никто не голосует, сервер загружает следующую карту цикла, выбор не случайный.
  • Обход пароля: при установленном игровом пароле войти можно и по паролю админа, и вы войдёте как админ.
  • Быстрый вход админа: привяжите adminlogin <password> в KFInput.ini (Documents\My Games\KillingFloor2\KFGame\Config), например на NumPad 1.
  • Блокировка дверей: отключите столкновения между игроками, чтобы они проходили друг сквозь друга.
  • Обновления Windows: задайте длинные активные часы и уведомления либо временно отключите службу Windows Update, чтобы ПК не перезагружался и не останавливал серверы.
  • Заметки WebAdmin: храните там числа, например Difficulty: Hell on Earth 3, Suicidal 2, Hard 1, Normal 0, и GameLength: Long 2, Medium 1, Short 0.
  • Конфликтующее ПО: некоторые приложения Windows могут крашить сервер, даже не будучи запущенными; известный пример - Microsoft Visual Studio.
  • Карта по умолчанию: если выбранная карта не найдена, сервер загружает BioticsLab. ServerLocalMap=KF-BioticsLab в PCServer-KFEngine.ini призвано это изменить, хотя у автора не сработало.
  • Ошибки mismatch и opening file: смотрите отдельное руководство автора и наши исправления загрузки карт.

Вопросы и ответы

Что означает Item State 4 на сервере KF2?
Пользовательская карта установлена и обновлена. State 0 значит, что карты нет и она будет скачана, 12 - установлена, но нужно обновление, 20 - скорее всего проверка обновлений не удалась или пропало соединение с Workshop.
Как запустить два сервера из одной установки?
Скопируйте KF2Server.bat, допишите в копию -ConfigSubDir=<имя>, запустите, чтобы создалась подпапка конфигурации, затем смените в ней порт игры (7778) и порт WebAdmin (8081) и пробросьте новые порты.
Какие порты пробрасывать?
Игровой 7777 UDP, запросов 27015 UDP, WebAdmin 8080 TCP и порт Steam 20560 UDP.
Что выбрать для пользовательских карт: Workshop или redirect?
Для большинства серверов лучше Workshop: сжатие, быстрые загрузки и автообновление. Redirect даёт больше контроля, а использовать можно оба варианта сразу.