В 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:
$ ./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, по одной строке на предмет:
[OnlineSubsystemSteamworks.KFWorkshopSteamworks]ServerSubscribedWorkshopItems=1111111111ServerSubscribedWorkshopItems=2222222222[IpDrv.TcpNetDriver]DownloadManagers=OnlineSubsystemSteamworks.SteamWorkshopDownloadid выше - заглушки, настоящие берите из URL предмета в Workshop. При следующем запуске сервер скачивает каждый предмет в KFGame/Cache/<id>/. Подключающихся игроков направляют на те же предметы, и Steam скачивает их - так клиентские части мутатора (HUD, меню, модель кастомного оружия) попадают к людям. Строка DownloadManagers должна быть первой записью в этой секции, как объясняется в основном руководстве.
Вручную - положив файлы пакета в папки контента сервера. Это работает для чисто серверного кода и для ваших собственных сборок, но клиенты от этого ничего не получают: всё, у чего есть клиентская часть, ломается у каждого игрока, у которого этих файлов ещё нет.
Каким бы путём вы ни шли, имя пакета в ?Mutator=Package.Class - это имя файла .u без расширения, а имя класса задаёт автор. В описаниях серьёзных модов в Workshop указана точная строка для вставки. Копируйте её, а не угадывайте по названию предмета; название и пакет совпадают редко.
Ranked, Unranked и белый список#
Tripwire ведёт белый список одобренных модификаций. Сервер только со стандартным контентом и мутаторами из белого списка остаётся Ranked: игроки получают опыт перков, и сервер считается равным официальному. Запустите что-то не из списка, и сервер станет Unranked, и никто не получает опыт, играя на нём.
Это самый важный факт о хостинге модового Killing Floor 2, потому что прокачка перков - то, ради чего большинство игроков вообще находится в игре. Три следствия:
- Укажите это в названии. Игроки фильтруют, читая. "Unranked" или "Custom" в
ServerNameизбавит вас от потока жалоб от тех, кто зашёл прокачать перк. - Многие популярные моды - Unranked по замыслу. Переработки сложности, увеличенное число игроков и переделки бесконечного режима меняют баланс, против которого начисляется опыт. Их игроки это знают и принимают.
- Некоторые небольшие мутаторы есть в белом списке. Если хотите остаться Ranked, проверьте страницу предмета и текущий список Tripwire перед установкой; статус может меняться между обновлениями игры.
Прогресс хранится в аккаунте Steam каждого игрока, а не на вашем сервере, так что вечер на Unranked ни у кого ничего не отнимает. Он просто ничего не добавляет.
Как увеличить число игроков#
Ограничение в шесть игроков в Survival задаётся режимом игры, а не движком, поэтому правка одного только MaxPlayers не работает. Сообщества, которые хотят восемь или двенадцать игроков в кооперативе, используют мутатор максимального числа игроков, а также мутатор HUD или таблицы счёта, чтобы лишние игроки появлялись в интерфейсе. Обычная схема:
- Подпишите сервер на мутатор и добавьте его в
?Mutator=. - Задайте целевое число игроков там, где это указано в документации мутатора, - обычно это
?MaxPlayers=в строке запуска или ключ в создаваемом им ini-файле. - Добавьте мутатор таблицы счёта или HUD, если основной сам этого не делает.
- Перезапустите сервер и проверьте с живыми игроками, а не только по цифре в браузере.
Будьте честны с собой насчёт того, что это делает с игрой. Размер волн, доши и здоровье босса масштабируются максимум на шесть игроков; при двенадцати каждый игрок видит меньше Zed и больше денег, так что игра становится легче и шумнее. Вернуть сложность помогают режимы с контролем сложности, о них ниже. Нагрузка на CPU растёт вместе с числом игроков и Zed; сервер на двенадцать игроков с большими волнами на Hell on Earth - это серьёзная однопоточная нагрузка. За чем следить, объясняет статья CPU или RAM для игровых серверов.
Controlled Difficulty и другие кастомные режимы#
Controlled Difficulty
Controlled Difficulty (CD) - самый известный кастомный режим и стандарт для опытных групп. Он заменяет Survival версией, в которой открыта почти каждая переменная спавна: сколько Zed живы одновременно, как быстро они появляются, цикл спавна (какие типы Zed приходят в каких волнах), как долго открыт торговец, какой появляется босс.
Он загружается как класс игры, а не как мутатор. Существует несколько поддерживаемых сборок от разных авторов, и у них разные имена пакетов - обычно что-то вроде ControlledDifficulty_<Author>.CD_Survival. Используйте точную строку со страницы в Workshop той сборки, на которую подписываетесь:
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/ при первом запуске с загруженным мутатором. Имя файла зависит от мода. Правило то же, что и для основной конфигурации: запустите один раз, корректно остановите, затем редактируйте, потому что работающий сервер при выключении записывает свой конфиг обратно.
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Конфликты возникают, когда два мутатора меняют одно и то же: два, которые оба правят спавн, два, которые оба заменяют таблицу счёта, мутатор максимального числа игроков и кастомный режим со своим лимитом игроков. Симптомы - от того, что один молча перебивает другой, до ошибок в начале волны. Способ найти конфликт скучный и надёжный:
- Уберите все мутаторы. Убедитесь, что сервер работает чисто.
- Возвращайте их по одному, перезапуская и проверяя каждый.
- Когда что-то ломается, замешан последний добавленный; проверьте его попарно с каждым из остальных.
Держите рабочую строку запуска записанной где-нибудь вне сервера, с 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. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.