Свой сервер

Настройка песочницы Killing Floor

Настройки находятся в файле KillingFloor.ini в секции [KFmod.KFGameType].

Орда мутантов в темноте Орда мутантов выходит из темноты.

# Основные параметры

  • KFGameLength — количество волн: 0 — 4 волны; 1 — 7; 2 — 10; 3 — своё число волн
  • StartingCash — количество денег при заходе на карту (учитывается только при KFGameLength=3)
  • MinRespawnCash — минимальное количество денег при возрождении после смерти (учитывается только при KFGameLength=3)
  • bUseEndGameBoss — true включает патриарха в конце игры, false отключает
  • LobbyTimeout — время (в секундах) задержки в меню перед началом карты
  • bEnemyHealthBars — true включает отображение полосок здоровья мобов для всех игроков (учитывается только при KFGameLength=3)
  • MaxZombiesOnce — максимально возможное число мобов, одновременно находящихся на карте (учитывается только при KFGameLength=3)
  • InitialWave — номер конфигурации волны, с которой начнётся игра (учитывается только при KFGameLength=3)
  • FinalWave — номер конфигурации волны, которой завершится игра (учитывается только при KFGameLength=3)
  • FriendlyFireScale — величина урона игрокам друг другу. Проценты в числовом выражении. Например 100% — 1.0, 10% — 0.1

# Дополнительные строки при KFGameLength=3

# MonsterClasses

Мутанты из мода Killing Floor Мутанты оригинального мода Killing Floor: Клот, Сталкер, Ползун, Блоат, Горфаст, Скрейк, Флешпаунд.

MonsterClasses=(MClassName="KFChar.ZombieClot",Mid="A") — каждая строка описывает монстра, которого можно задействовать в игре:

  • MClassName — «имя» моба. Подробнее можно прочитать в соответствующем разделе («Мутанты»)
  • Mid — буквенный индекс (регистр значения не имеет), условное обозначение моба в настройках (см. ниже)

# MonsterSquad

MonsterSquad=4A1G — мобы в игре респаунятся группами. Каждая строка определяет состав одной группы. Например 4A1G означает, что в группу входят 4 монстра с индексом «A» и один с индексом «G».

# Waves

Waves[0]=(WaveMask=196611,WaveMaxMonsters=20,WaveDuration=255,

WaveDifficulty=0.000000) — каждая строка задаёт конфигурацию волны.

  • [0] — номер волны. Используется в InitialWave и FinalWave
  • WaveMaxMonsters — количество мобов в волне на каждого игрока
text
MonsterSquad=4A
MonsterSquad=4A1G
MonsterSquad=2B
text
0 MonsterSquad=4A
1 MonsterSquad=4A1G
1 MonsterSquad=2B
text
110

Получилось число. Представив, что это двоичное число и преобразовав его в десятичное, мы получим нужное значение WaveMask для конфигурации волны.

Для преобразования систем счисления может быть использован обычный калькулятор Windows:

  • Запускаем программу и переходим в режим «инженерный» (Scientific)
  • Устанавливаем переключатель на двоичную систему счисления (Bin) и вводим наше число 110
  • Устанавливаем переключатель в десятичную систему счисления (Dec) и получаем нужное значение 6. Его и следует записать в WaveMask

Пример: флешпаунды на первой волне

Разбор v_e_r_s_u_s с форума killingfloor.ru (тема «Настройка песочницы», 2011). В стандартном списке флешпаунд есть только в одном отряде, MonsterSquad=1F, 24-м по счёту. Чтобы он появился на волне, этот отряд нужно включить в её WaveMask. Отмечаем единицами нужные отряды (первый отряд — правая цифра): 1-й 4A (четыре клота) и 24-й 1F. Получается двоичное 100000000000000000000001, в десятичной системе 8388609:

Waves[0]=(WaveMask=8388609,WaveMaxMonsters=20,WaveDuration=255,WaveDifficulty=0.000000)

На первой волне пойдут только клоты и флешпаунды в соотношении 4:1. Если после включения песочницы с мутатором вроде FakedPlayers пропали флешпаунды, проверьте, есть ли бит отряда 1F в масках нужных волн.

WaveMask через степени двойки и другие советы

Из тем форума killingfloor.ru «Гейм Тайп или почему бы не воспользоваться поиском», «Песочница на Дедике» и «Песочница»:

  • Подсчёт WaveMask. Пронумеруйте строки MonsterSquad с нуля, как в массиве. Для каждого отряда, который должен идти на волне, возьмите 2 в степени его номера и сложите. Например, чтобы на первой волне шли только отряды 0, 3, 4 и 7: 2^0 + 2^3 + 2^4 + 2^7 = 153, то есть Waves[0]=(WaveMask=153,WaveMaxMonsters=20,WaveDuration=255,WaveDifficulty=0.000000). Стандартная маска первой волны 196611 = 2^0 + 2^1 + 2^16 + 2^17, то есть отряды 0, 1, 16 и 17. По словам siriushard, в стандартном конфиге можно прописать всего 32 отряда.
  • В записи MonsterSquad=4A число - количество мутантов в отряде, буква - Mid из MonsterClasses. Вместо буквы можно использовать и символы вроде $ или &.
  • Включение на выделенном сервере. В WebAdmin откройте Default > Game и в Game Length выберите custom: именно custom включает песочницу. Нажмите Accept и перезапустите сервер. Сама песочница настраивается в killingfloor.ini, WebAdmin только дублирует эти настройки.
  • Нет хасков. По умолчанию хаска в списке MonsterClasses песочницы может не оказаться, его нужно дописать самому: MonsterClasses=(MClassName="KFChar.ZombieHusk",Mid="I").
  • Свой геймтайп. Если перенести настройки с клиента на выделенный сервер, а волны не считываются (хотя мобы и отряды читаются), проверьте секцию: при собственном геймтайпе настройки нужно копировать в его секцию, а не в KFGameType (совет Flame, после него проблема решилась).
  • В ini нет секции [KFMod.KFGameType]. Из темы «Количество волн - как увеличить ?» на форуме killingfloor.ru: в KillingFloor.ini сервера (и в Default.ini) не было ни строки KFGameLength, ни секции [KFMod.KFGameType]. По словам Flame, у сервера, скачанного через SteamCMD под Linux, эта секция есть в Default.ini, а под Windows её может не быть; решение — дописать секцию с нужными строками (KFGameLength, FinalWave, Waves[...] и т. д.) в KillingFloor.ini самому. Там же: если нужно больше волн, чем позволяет песочница (около 15), попробуйте мутатор Survival Endless.
  • Песочница с клиента на сервер. Из темы «Хорошие хардкорные настройки песочницы»: настройте песочницу в игре через создание сервера, затем найдите в killingfloor.ini клиента секцию [KFmod.KFGameType] (KFGameLength=3, WaveStartSpawnPeriod, StartingCash, MinRespawnCash, bUseEndGameBoss, строки MonsterSquad=... и т. д.) и замените ею то же самое в серверном конфиге (совет -SR-). Через меню игры в одном отряде нельзя задать больше 9 однотипных мобов; для большего правьте ini.
  • Порядок отрядов. MonsterSquad=4E2G — отряд, в котором сразу появляются 4 моба с индексом E и 2 с индексом G и идут к игрокам. Отряды волны появляются по порядку сверху вниз, начиная с первого (верхнего); когда респнутся все, снова с первого (Proton).
  • Один отряд на большую волну и свой респаун. Из темы «Ограничение групп\монстров\оружия»: если в волне, допустим, 200 мобов, а в отрядах всего один сквад с 5 клотами, этот сквад так и будет ресаться, пока не будут выбиты все 200 (Dr_Killjoy). kok-s предупреждал, что спавн сразу 100-200 клотов на один респ приведёт к вылету игры с ошибкой. Кто хочет полностью настроить респаун мобов, по совету Dr_Killjoy декомпилирует KFMod, находит kfgametype.uc (класс, отвечающий за тип игры, респаун мобов тоже там) и создаёт на его основе свой геймтайп, где сам прописывает, как ресаются мобы; песочница тогда не нужна. Новый геймтайп указывается в батнике сервера как тип игры вместо старого.
  • Брут и другие добавленные мобы на версии 1046. Из-за новой системы респавна мутаторы, добавляющие мобов в классическую игру, перестали работать: по словам Dr_Killjoy, Брута теперь можно добавить только через песочницу. В теме «Не возможно поставить custom мобов на v1046» новый класс, вписанный в песочницу через меню, не появлялся в списке для добавления в отряды; Titanishu прописал моба через KillingFloor.ini: в настройках песочницы он так и не отображался, но всё работало. Dr_Killjoy предлагал также мутатор MonsterConfig.

Песочница во время ивентов

Во время сезонных ивентов (например, Halloween 2013) стандартные зеды в песочнице, прописанные как KFChar.Clot и т.д., не заменялись ивентовыми моделями. На форуме killingfloor.ru для этого использовали мутатор HalloweenFixMut.HalloweenFixMut (Flame): классы в песочнице менять не нужно, KFChar.Clot остаётся как есть.

Рождественских мутантов можно включать и выключать в любое время, прописав их классы в песочнице в KillingFloor.ini (папка System) сервера (форум killingfloor.ru, тема «Старый Новый год в KF»). Новогодние классы:

MonsterClasses=(MClassName="KFChar.ZombieClot_XMas",Mid="A")
MonsterClasses=(MClassName="KFChar.ZombieCrawler_XMas",Mid="B")
MonsterClasses=(MClassName="KFChar.ZombieGoreFast_XMas",Mid="C")
MonsterClasses=(MClassName="KFChar.ZombieStalker_XMas",Mid="D")
MonsterClasses=(MClassName="KFChar.ZombieScrake_XMas",Mid="E")
MonsterClasses=(MClassName="KFChar.ZombieFleshpound_XMas",Mid="F")
MonsterClasses=(MClassName="KFChar.ZombieBloat_XMas",Mid="G")
MonsterClasses=(MClassName="KFChar.ZombieSiren_XMas",Mid="H")
MonsterClasses=(MClassName="KFChar.ZombieHusk_XMas",Mid="I")

Чтобы вернуть обычных, уберите _XMas из имён классов (KFChar.ZombieClot, KFChar.ZombieCrawler и т.д.).

Во время новогоднего ивента та же проблема выглядела так (форум killingfloor.ru, темы «Проблема с запуском песочницы» и «Песочница»): с началом волны лог сервера заполнялся строками ZombieClot playanim with no mesh!, после чего сервер падал, либо мобы не появлялись вовсе (на тестовой карте они были невидимыми и не могли атаковать). Помогла установка на сервер мутатора XMASZombieFixMut (в теме «Песочница» - вместе с KFCharFix). Автор первой темы конфликтов с другими мутаторами не заметил и предупредил: если подключить мутатор к игре со стандартными мобами, вдобавок к ним появятся новогодние зомби.

Стартовые деньги и время торговца без песочницы

Из темы «Настройка сервера» (форум killingfloor.ru, 2013).

В обычном режиме (не песочница) стартовые деньги, минимум денег при возрождении и время между волнами заданы отдельно для каждой сложности:

StartingCashBeginner=300
StartingCashNormal=250
StartingCashHard=250
StartingCashSuicidal=200
StartingCashHell=100
MinRespawnCashBeginner=250
MinRespawnCashNormal=200
MinRespawnCashHard=200
MinRespawnCashSuicidal=150
MinRespawnCashHell=100
TimeBetweenWavesBeginner=90
TimeBetweenWavesNormal=60
TimeBetweenWavesHard=60
TimeBetweenWavesSuicidal=60
TimeBetweenWavesHell=60

Чтобы задать свои значения без песочницы, Flame написал мутатор CashConfigMut (CashConfigMut.CashConfigMut). Значения прописываются в CashConfigMut.ini и действуют на любой сложности:

  • NewStartingCash - стартовые деньги;
  • NewMinRespawnCash - минимум денег при возрождении;
  • NewTimeBetweenWaves - время торговца.

Мутатор меняет значения через Tick: присвоение через default не срабатывает, потому что KFGameType берёт эти переменные из ini, и ini приоритетнее. Автор проверял его на выделенном сервере и предупреждал, что в одиночной игре он, скорее всего, не сработает.

class CashConfigMut extends mutator Config(CashConfigMut);
var globalconfig int NewStartingCash,NewMinRespawnCash,NewTimeBetweenWaves;
event Tick(float delta)
{
 if (
 KFGameType(Level.Game)!=none ||
 KFGameType(Level.Game).StartingCash>0 ||
 KFGameType(Level.Game).MinRespawnCash>0 ||
 KFGameType(Level.Game).TimeBetweenWaves>0
 )
 {
 KFGameType(Level.Game).StartingCash=NewStartingCash;
 KFGameType(Level.Game).MinRespawnCash=NewMinRespawnCash;
 KFGameType(Level.Game).TimeBetweenWaves=NewTimeBetweenWaves;
 Disable('Tick');
 }
}
defaultproperties
{
 NewStartingCash=300
 NewMinRespawnCash=250
 NewTimeBetweenWaves=90
 GroupName="KF-CashConfig"
 FriendlyName="CashConfigMut"
 Description="CashConfigMut"
 bAddToServerPackages=True
}

Если на сервере стоит ServerPerks и нужна своя стартовая сумма, Flame предлагал другой путь: задавать её в классах перков (SRVet* или SRVeterancyTypes), в функции AddDefaultInventory, строкой вида P.PlayerReplicationInfo.Score=2013;.

Патроны на карте сервер не настраивает. Коробки с патронами (KFMod.KFAmmoPickup) расставляет автор карты в редакторе. Во время игры, в зависимости от сложности, часть коробок случайным образом скрывается (переходит в состояние Sleeping), и видимость периодически пересматривается.