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 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.
Предупреждение Workshop в консоли сервера.
Обновление сервера одним щелчком
- Щёлкните SteamCMD.exe правой кнопкой и создайте ярлык. Назовите его «Update Server» и положите куда угодно.
- Откройте свойства ярлыка и в конец поля «Объект» вставьте:
+login anonymous +force_install_dir ./KF2Server +app_update 232130 +exit - Измените
+force_install_dirна реальное расположение сервера (подойдёт и абсолютный путь вродеc:\KF2Server\), чтобы обновился существующий сервер, а не создался новый. - Когда выходит обновление Killing Floor 2, запустите ярлык. По окончании он закроется сам.
Примечания: для обычных обновлений app_update 232130, для бета-обновлений app_update 232130 -beta preview, а для проверки файлов добавьте validate.
Объект ярлыка с добавленной командой обновления.
Значки серверов
- Ranked: сервер рейтинговый, статистика и опыт включены. Нет мутаторов и пользовательских настроек. Пользовательские карты не снимают рейтинг, если не используют скрипты.
- Ranked Stock: сервер изменён, но статистика и опыт остаются, обычно это мутатор из белого списка или настройка вроде дружественного огня.
- Unranked: статистика и опыт выключены из-за мутатора или мода не из белого списка либо карты со скриптами, например с дополнительным спавном зедов.
Значки серверов Ranked, Ranked Stock и Unranked.
Несколько серверов из одной установки
Так можно запустить несколько серверов с общими файлами, но разными настройками, и одно обновление обновит все. Автор рекомендует не менее 16 ГБ ОЗУ, если запускаете много серверов.
- Скопируйте
KF2Server.batв той же папке и переименуйте копию, например вKF2ServerHoE.bat. - Откройте её на правку и добавьте в конец
-ConfigSubDir=HoEServer, например:start .\Binaries\win64\kfserver KF-BioticsLab?Difficulty=3?GameLength=2 -ConfigSubDir=HoEServer - Запустите новый bat. Он создаст подпапку
HoEServerв папке Config, а первый сервер продолжит хранить файлы в Config. - В
HoEServer\PCServer-KFEngine.iniв разделе URL сменитеPort=7777наPort=7778. - В
HoEServer\KFWeb.iniсменитеListenPort=8080наListenPort=8081. - Пробросьте новые порты на роутере: 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
- Откройте
C:\KF2Server\KFGame\Config\KFWebAdmin.iniи добавьте в[WebAdmin.WebAdmin]строкуAuthenticationClass=WebAdmin.MultiWebAdminAuth. - Запустите сервер. Он создаст
KFMultiAdmin.ini; не трогайте его (не создавайте там админов и пароли, правьте только для удаления админов). - Откройте WebAdmin и войдите как Admin (с заглавной A) со своим прежним паролем. Имена пользователей MultiAdmin чувствительны к регистру, в отличие от обычного входа.
- Откройте Administrators, затем Create Administrator, включите аккаунт, задайте пароль и отображаемое имя (его игроки видят в чате WebAdmin).
- Шаблонами Deny/Allow ограничьте права каждого админа. Порядок «Deny, Allow» запрещает часть функций и разрешает остальные, «Allow, Deny» наоборот. Перетаскивайте пункты из Navigation Preview. Автор советует отключить Administrators для всех, кроме вас.
Раздел Administrators после включения MultiAdmin.
Кнопки удаления нет: чтобы убрать админа, удалите весь его раздел из KFMultiAdmin.ini. Стандартный аккаунт Admin по-прежнему использует пароль из PCServer-KFGame.ini и не влияет на adminlogin <password> в игре.
Проброс портов и статический IP
Прежде чем что-то менять, убедитесь, что сервер действительно не виден: полностью откройте фильтры браузера серверов, отсортируйте по минимальному пингу и попросите друга подключиться через консоль по вашему IP.
- Узнайте IPv4-адрес машины командой
ipconfigв командной строке. - Сделайте его статическим в роутере или в Windows, иначе проброшенные порты потом укажут не туда.
- Пробросьте на этот IP порты:
| Название | Порт | Протокол | Назначение |
|---|---|---|---|
| Игровой порт | 7777 | UDP | Основные игровые подключения |
| Порт запросов | 27015 | UDP | Связь с мастер-сервером Steam |
| WebAdmin | 8080 | TCP | Веб-страница администратора |
| Порт Steam | 20560 | UDP | Steam |
Непроверенные наблюдения автора: неверный игровой порт может скрыть сервер и из 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.
Счётчик волн 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>, если их ещё нет.
Счётчик волн в сводке игры.
Что лежит в папке 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» значит, что вставлен неверный адрес.
Экспорт банов в 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.
| Workshop | Redirect | |
|---|---|---|
| Сжатие | Да | Нет |
| Скорость загрузки | Высокая | Ниже |
| Автообновление | Да | Нет |
| Контроль | Меньше (карты должны быть публичными) | Больше |
Для большинства серверов лучше 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 - число в конце адреса элемента.
Подписка на Workshop в конфиге движка.
Запись хранилища данных для пользовательской карты.
Мутаторы и режимы игры
Мутатор - мини-мод с ограниченными возможностями, режим игры задаёт правила матча. Оба отключают опыт и статистику, если не входят в белый список, и скачиваются игроками из Workshop как пользовательская карта. Всегда читайте инструкции автора.
- Скопируйте ID Workshop.
- Вставьте его после
ServerSubscribedWorkshopItems=вPCServer-KFEngine.ini. - Запустите один раз для скачивания, затем закройте и проверьте папку Cache.
- Добавьте в параметры запуска
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; совместимость уточняйте в заметках авторов.
Параметры мутатора в строке запуска.
Ранние мутаторы (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 даёт больше контроля, а использовать можно оба варианта сразу.