RE:NODE

Руководства11 мин чтения

Мутаторы и кастомные режимы Killing Floor 2

Мутаторы и кастомные режимы Killing Floor 2: как работают ?Mutator= и ?Game=, доставка через Workshop, Controlled Difficulty, бесконечные переработки, статус Ranked и решение проблем.

0 прочтений

В Killing Floor 2 мутатор - это класс UnrealScript, который меняет правила любого запущенного режима, а кастомный режим игры - это класс, который заменяет режим целиком. И то и другое загружается из строки запуска: ?Mutator=Package.ClassName (несколько через запятую внутри одного параметра) и ?Game=Package.ClassName. Пакет приходит через Workshop - он указывается по id предмета в PCServer-KFEngine.ini и скачивается в KFGame/Cache при следующем запуске, - а подключающиеся игроки получают те же предметы из Steam. Всё, чего нет в белом списке Tripwire, делает сервер Unranked, и игроки не получают на нём опыт перков. Решите, держите ли вы ранговый сервер или модовый, прежде чем что-то ставить, потому что совместить одно с другим нельзя.

Базовый сервер - установка, основные ini-файлы, веб-админка, порты, карты из Workshop - описан в руководстве по серверу Killing Floor 2. Эта статья - обо всём, что выше: как загружаются мутаторы и режимы, популярные варианты и во что они обходятся, как правильно запустить режим с контролем сложности и как исправлять типичные сбои.

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

Строка запуска указывает карту, а затем опции в стиле URL:

bash
$ ./KFGameSteamServer.bin.x86_64 \    KF-BurningParis?Game=KFGameContent.KFGameInfo_Survival?Difficulty=3?GameLength=1?Mutator=PackageA.MutA,PackageB.MutB \    -Port=7777 -QueryPort=27015

?Game= выбирает класс game info - код, который определяет, что такое матч. Стандартные классы лежат в KFGameContent: KFGameInfo_Survival, KFGameInfo_Endless, KFGameInfo_WeeklySurvival, KFGameInfo_Objective и KFGameInfo_VersusSurvival. Кастомный режим - это просто другой класс в другом пакете, и он полностью заменяет стандартный: логику волн, спавн, торговца, иногда перки и магазин.

?Mutator= загружает один или несколько классов мутаторов поверх любого запущенного режима. Мутатор цепляется к игровым событиям - появление игрока, появление Zed, начало волны, нанесение урона - и меняет результат. Мутаторы складываются, и это одновременно их сила и источник большинства конфликтов.

Кастомный режим игрыМутатор
Чем загружается?Game=Package.Class?Mutator=Package.Class
Сколько штукРовно одинНесколько, через запятую
Область действияЗаменяет режимИзменяет режим
Типичное применениеКонтроль сложности, бесконечные переработкиЧисло игроков, время у торговца, удобства
Риск конфликтовНизкий со стандартными мутаторами, выше с остальнымиРастёт с каждым добавленным

Синтаксическая ловушка, в которую попадают люди: несколько мутаторов указываются в одном ?Mutator= через запятую. Если повторить ?Mutator= в строке дважды, останется только один.

Откуда берётся код: Workshop и ручная установка#

Мутаторы и режимы - это пакеты: скомпилированные файлы .u, иногда с пакетами контента рядом. Попасть на сервер они могут двумя способами.

Через Workshop - обычный путь. Укажите id каждого предмета в engine ini, по одной строке на предмет:

KFGame/Config/PCServer-KFEngine.ini
[OnlineSubsystemSteamworks.KFWorkshopSteamworks]ServerSubscribedWorkshopItems=1111111111ServerSubscribedWorkshopItems=2222222222[IpDrv.TcpNetDriver]DownloadManagers=OnlineSubsystemSteamworks.SteamWorkshopDownload

id выше - заглушки, настоящие берите из URL предмета в Workshop. При следующем запуске сервер скачивает каждый предмет в KFGame/Cache/<id>/. Подключающихся игроков направляют на те же предметы, и Steam скачивает их - так клиентские части мутатора (HUD, меню, модель кастомного оружия) попадают к людям. Строка DownloadManagers должна быть первой записью в этой секции, как объясняется в основном руководстве.

Вручную - положив файлы пакета в папки контента сервера. Это работает для чисто серверного кода и для ваших собственных сборок, но клиенты от этого ничего не получают: всё, у чего есть клиентская часть, ломается у каждого игрока, у которого этих файлов ещё нет.

Каким бы путём вы ни шли, имя пакета в ?Mutator=Package.Class - это имя файла .u без расширения, а имя класса задаёт автор. В описаниях серьёзных модов в Workshop указана точная строка для вставки. Копируйте её, а не угадывайте по названию предмета; название и пакет совпадают редко.

читается при стартескачивает по idзаходитте же предметыPCServer-KFEngine.iniподписанные предметыSteam Workshopid предметаKFGame/Cacheскачанный пакетИгрокSteam качает предметыСервер KF2?Mutator= грузит класс
Как мутатор KF2 попадает на сервер и к игрокам

Ranked, Unranked и белый список#

Tripwire ведёт белый список одобренных модификаций. Сервер только со стандартным контентом и мутаторами из белого списка остаётся Ranked: игроки получают опыт перков, и сервер считается равным официальному. Запустите что-то не из списка, и сервер станет Unranked, и никто не получает опыт, играя на нём.

Это самый важный факт о хостинге модового Killing Floor 2, потому что прокачка перков - то, ради чего большинство игроков вообще находится в игре. Три следствия:

  • Укажите это в названии. Игроки фильтруют, читая. "Unranked" или "Custom" в ServerName избавит вас от потока жалоб от тех, кто зашёл прокачать перк.
  • Многие популярные моды - Unranked по замыслу. Переработки сложности, увеличенное число игроков и переделки бесконечного режима меняют баланс, против которого начисляется опыт. Их игроки это знают и принимают.
  • Некоторые небольшие мутаторы есть в белом списке. Если хотите остаться Ranked, проверьте страницу предмета и текущий список Tripwire перед установкой; статус может меняться между обновлениями игры.

Прогресс хранится в аккаунте Steam каждого игрока, а не на вашем сервере, так что вечер на Unranked ни у кого ничего не отнимает. Он просто ничего не добавляет.

Как увеличить число игроков#

Ограничение в шесть игроков в Survival задаётся режимом игры, а не движком, поэтому правка одного только MaxPlayers не работает. Сообщества, которые хотят восемь или двенадцать игроков в кооперативе, используют мутатор максимального числа игроков, а также мутатор HUD или таблицы счёта, чтобы лишние игроки появлялись в интерфейсе. Обычная схема:

  1. Подпишите сервер на мутатор и добавьте его в ?Mutator=.
  2. Задайте целевое число игроков там, где это указано в документации мутатора, - обычно это ?MaxPlayers= в строке запуска или ключ в создаваемом им ini-файле.
  3. Добавьте мутатор таблицы счёта или HUD, если основной сам этого не делает.
  4. Перезапустите сервер и проверьте с живыми игроками, а не только по цифре в браузере.

Будьте честны с собой насчёт того, что это делает с игрой. Размер волн, доши и здоровье босса масштабируются максимум на шесть игроков; при двенадцати каждый игрок видит меньше Zed и больше денег, так что игра становится легче и шумнее. Вернуть сложность помогают режимы с контролем сложности, о них ниже. Нагрузка на CPU растёт вместе с числом игроков и Zed; сервер на двенадцать игроков с большими волнами на Hell on Earth - это серьёзная однопоточная нагрузка. За чем следить, объясняет статья CPU или RAM для игровых серверов.

Controlled Difficulty и другие кастомные режимы#

Controlled Difficulty

Controlled Difficulty (CD) - самый известный кастомный режим и стандарт для опытных групп. Он заменяет Survival версией, в которой открыта почти каждая переменная спавна: сколько Zed живы одновременно, как быстро они появляются, цикл спавна (какие типы Zed приходят в каких волнах), как долго открыт торговец, какой появляется босс.

Он загружается как класс игры, а не как мутатор. Существует несколько поддерживаемых сборок от разных авторов, и у них разные имена пакетов - обычно что-то вроде ControlledDifficulty_<Author>.CD_Survival. Используйте точную строку со страницы в Workshop той сборки, на которую подписываетесь:

code
KF-BioticsLab?Game=<CDPackage>.CD_Survival?Difficulty=3?GameLength=2?SpawnCycle=basic_moderate

Среди настроек, которые обычно открывают сборки CD, - SpawnCycle, MaxMonsters, CohortSize, SpawnPoll, WaveSizeFakes, TraderTime и Boss. Их можно задать в строке запуска или в ini, который режим пишет при первом запуске, а большинство сборок также позволяют игрокам узнать текущие значения в чате. Имена и значения по умолчанию в разных сборках различаются, поэтому читайте документацию своей сборки, а не руководство, написанное для другой.

Несколько практических замечаний:

  • Циклы спавна - это сердце режима. Цикл определяет точный состав Zed волна за волной. Сообщества обмениваются названиями циклов; группа, которая хочет стабильного вызова, выбирает один и держится его.
  • `WaveSizeFakes` масштабирует размер волны так, будто игроков больше. Так группа из четырёх человек получает волну на шестерых или больше.
  • CD - это Unranked. Все, кто в него играет, это знают, но новички могут не знать.
  • Следите за CPU при высоком `MaxMonsters`. CD позволяет держать на карте одновременно гораздо больше Zed, чем стандартный Survival. За каждого платит игровой поток сервера.

Бесконечные переработки и другие режимы

Помимо CD, в Workshop есть полные переделки бесконечного режима - самая известная из них Zedternal, - которые заменяют перки, торговца и прогрессию собственными системами для очень долгих забегов. Они загружаются через ?Game= с классом со страницы предмета, обычно требуют своей настройки в ini и являются Unranked. Ожидайте роста памяти за долгую сессию и планируйте перезапуск между забегами; про выбор времени - статья расписания перезапусков, которые помогают.

Выбирайте один кастомный режим на сервер. Два класса игры не могут работать вместе, а мутаторы, написанные для стандартного Survival, могут вообще не работать под кастомным режимом - проверяйте замечания о совместимости на странице каждого мутатора, прежде чем добавлять его на сервер с CD или бесконечным режимом.

Настройка мутаторов и как избежать конфликтов#

Мутаторы с настройками обычно создают собственный ini-файл в KFGame/Config/ при первом запуске с загруженным мутатором. Имя файла зависит от мода. Правило то же, что и для основной конфигурации: запустите один раз, корректно остановите, затем редактируйте, потому что работающий сервер при выключении записывает свой конфиг обратно.

code
1. Add the item id to PCServer-KFEngine.ini2. Add Package.Class to ?Mutator= or ?Game=3. Start, wait for the map to load, read the log4. Stop cleanly5. Edit the new ini file the mod created6. Start again and test in a real match

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

  1. Уберите все мутаторы. Убедитесь, что сервер работает чисто.
  2. Возвращайте их по одному, перезапуская и проверяя каждый.
  3. Когда что-то ломается, замешан последний добавленный; проверьте его попарно с каждым из остальных.

Держите рабочую строку запуска записанной где-нибудь вне сервера, с id предметов Workshop и датой. Когда автор обновит предмет и сервер сломается на следующее утро, по этой записи вы сделаете откат. Общий план действий - в статье что делать, когда обновление мода всё ломает, а доводы в пользу короткого списка - в статье как держать модовый сервер в чистоте.

Обновления и дрейф Workshop#

На модовый сервер Killing Floor 2 обрушиваются два вида обновлений:

  • Обновления игры. Патчи Tripwire могут ломать скомпилированные мутаторы, пока их авторы не пересоберут их. Обновите сервер, затем проверьте страницу каждого мутатора и лог, прежде чем снова открывать сервер.
  • Обновления в Workshop. Когда автор переопубликует предмет, сервер скачает новую версию при следующем запуске, а игроки - при следующем входе. Сломанное обновление приходит без каких-либо действий с вашей стороны.

Защита - backup перед каждым изменением и каждым патчем. Всё состояние сервера Killing Floor 2 - это KFGame/Config/ плюс то, что вы положили руками; кэш можно скачать заново. В RE:NODE слоты для бэкапов есть на каждом тарифе Killing Floor 2 и восстанавливаются одной кнопкой, а вкладка Schedules может делать ночной backup и перезапускать сервер в фиксированный час, чтобы изменения из Workshop приходили в предсказуемое время, а не посреди волны.

Решение проблем#

Мутатор указан, но ничего не меняется. Он не загрузился. Найдите в логе имя пакета. Обычные причины: неверная строка Package.Class, предмет Workshop не скачался или второй ?Mutator= заменил первый.

Игроки застревают на загрузке или их кикает при входе. У мутатора есть клиентский контент, и их загрузка не удалась, или строки DownloadManagers нет либо она не первая.

Сервер стал Unranked. Что-то на нём не из белого списка. Убирайте мутаторы по одному, чтобы найти, что именно, или примите это и укажите в названии сервера.

MaxPlayers игнорируется. Ограничение режима по-прежнему действует. Используйте мутатор максимального числа игроков и проверьте, не навязывает ли кастомный режим собственный лимит.

Настройки в ini мутатора откатываются. Сервер работал, когда вы редактировали. Остановите, отредактируйте, запустите.

Падения или ошибки в начале волны. Конфликтуют два мутатора, или мутатор несовместим с кастомным режимом. Ищите делением пополам, как описано выше.

Лаги на поздних волнах с кастомным режимом. Слишком много одновременно живых Zed для одного ядра. Уменьшите в режиме настройку одновременно живых противников, прежде чем покупать тариф побольше.

FAQ#

Как добавить больше одного мутатора на сервер KF2?

Укажите их все в одной опции ?Mutator= через запятую: ?Mutator=PackageA.MutA,PackageB.MutB. Если повторить ?Mutator=, останется только один.

Делают ли мутаторы мой сервер Unranked?

Любая модификация, которой нет в белом списке Tripwire, - да. Игроки на сервере Unranked не получают опыт перков. Некоторые небольшие мутаторы есть в белом списке; большинство модов сложности и числа игроков - нет.

Нужно ли игрокам ставить мутаторы самим?

Нет. Если мутатор доставляется через Workshop и менеджер загрузок настроен, подключающиеся игроки получают его из Steam автоматически. Пакеты, установленные вручную, клиентам не отправляются.

Чем ?Game= отличается от ?Mutator=?

?Game= выбирает класс режима игры и заменяет режим целиком; он может быть только один. ?Mutator= добавляет модификации поверх запущенного режима, и загрузить можно несколько.

Controlled Difficulty - это мутатор?

Это кастомный режим игры, который загружается через ?Game= с классом из сборки, на которую вы подписаны. Разные сборки используют разные имена пакетов, поэтому копируйте точную строку со страницы в Workshop.

Можно ли запустить сервер Survival на 12 игроков?

Да, с мутатором максимального числа игроков и обычно с исправлением таблицы счёта. Он будет Unranked, а при большем числе игроков игра становится легче, если не добавить режим с контролем сложности.


Комментарии

Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000