Project Zomboid — sandbox-vars.lua полностью
Рано или поздно каждый админ Project Zomboid долистывает пресеты «Apocalypse» и «Survivor» до кастомных настроек — и упирается в sandbox-vars.lua, где сотня строк без единого комментария. Проблема не в том, чтобы найти нужный параметр, а в том, что половина из них работает только в связке с другими: подняли PopulationMultiplier — упёрлись в лаги, включили RespawnHours — а зомби не респавнятся, потому что забыли про RespawnUnseenHours. Разберём файл по блокам и покажем, что на что реально влияет.
Содержание
Где лежит sandbox-vars.lua и как его редактировать
На выделенном сервере файл называется по имени вашего сервера: ~/Zomboid/Server/<имя_сервера>_SandboxVars.lua (Linux: /home/<user>/Zomboid/Server/, Windows: C:\Users\<user>\Zomboid\Server\). Создаётся автоматически при первом запуске на основе выбранного пресета (Apocalypse, Survivor, Builder, Initial Infection или Custom) — даже если вы просто указали пресет при старте, файл появится и его можно редактировать вручную.
Структура — обычная Lua-таблица: общие настройки прямо в корне (VERSION, Zombies, Distribution, StatsDecrease...), а поведение зомби разнесено на два вложенных блока — ZombieLore (характеристики зомби: скорость, сила, слух) и ZombieConfig (плотность и респавн популяции). Разделение сбивает с толку новичков: люди ищут «скорость зомби» в ZombieConfig и не находят — она в ZombieLore.
Практика: перед правкой остановите сервер, сделайте копию файла (cp <имя>_SandboxVars.lua <имя>_SandboxVars.lua.bak), после — полный рестарт: часть общих опций можно докрутить на лету через админ-панель, но ZombieLore и ZombieConfig применяются только при перезапуске. И учтите: правка ZombieLore не ретроактивна — уже заспавненные зомби доживут по старым правилам, новые появятся по новым.
Если сервера у вас ещё нет — гайд по разворачиванию сервера Project Zomboid закрывает базовую установку и первый запуск.
Плотность зомби: Population* и Distribution
Плотность толпы регулируется четырьмя параметрами в ZombieConfig:
ZombieConfig = {
PopulationMultiplier = 1.0,
PopulationStartMultiplier = 1.0,
PopulationPeakMultiplier = 1.5,
PopulationPeakDay = 28,
}
- PopulationMultiplier — базовый множитель итоговой численности, диапазон 0–4. Это не «число зомби на карте», а коэффициент к внутренней плотности каждого чанка. На 1.0 уже достаточно плотно в городах вроде Луисвилля; 2.0+ ощутимо просаживает TPS на слабом железе, особенно при высоком ZombieAttractionMultiplier (звук сильнее притягивает толпы).
- PopulationStartMultiplier — множитель именно на старте игры (день 1), отдельно от базовой и пиковой плотности. Полезно занизить (0.5–0.7), чтобы дать новым игрокам спокойный старт, не трогая общую сложность.
- PopulationPeakMultiplier и PopulationPeakDay — популяция растёт от Start к Peak линейно до указанного дня (по умолчанию 28-й), дальше держится на уровне Peak × PopulationMultiplier — симулирует постепенное стягивание зомби из соседних регионов.
Отдельно — Distribution: 1 = Urban Focused (зомби изначально гуще в городах, дефолт), 2 = Uniform (равномерно по всей карте, включая дикие зоны). На RP-сервере с застройкой за пределами городов Uniform логичнее, иначе окраины остаются пустыми весь ранний гейм.
Плотность — это не только про баланс, но и про производительность: каждый активный зомби в загруженных чанках — это тик AI. Если после роста PopulationMultiplier сервер подлагивает при большом онлайне в одном городе, проверьте мониторинг TPS и лагов — часто узкое место не в самих зомби, а в связке с высоким view distance и числом загруженных чанков.
Поднять сервер Project Zomboid за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверRespawn и миграция: как зомби на самом деле возвращаются
Здесь у большинства путаница, потому что несколько параметров работают только вместе:
ZombieConfig = {
RespawnHours = 72.0,
RespawnUnseenHours = 16.0,
RespawnMultiplier = 0.1,
RedistributeHours = 12.0,
}
- RespawnHours — сколько игровых часов должно пройти с момента последнего респавна в клетке карты, прежде чем там снова смогут появиться зомби. Триггер по времени, не гарантия.
- RespawnUnseenHours — вторая обязательная проверка: клетка должна быть невидима (никто из игроков её не наблюдает) непрерывно столько часов. Оба условия не выполнены одновременно — респавна не будет, сколько бы ни крутили RespawnHours.
- RespawnMultiplier — сколько процентов от «полной» плотности региона довозится за один цикл (по умолчанию 0.1 = 10%). Поэтому зачищенный город не заполняется мгновенно даже при коротком RespawnHours.
- RedistributeHours — как часто уже существующие зомби мигрируют между регионами карты, выравнивая плотность. Не создание новых зомби, а перераспределение живых.
Цель «зачистил город — он должен оставаться чистым» — ставьте RespawnHours = 0, останутся только миграция через RedistributeHours и звуковое привлечение (FollowSoundDistance/ZombieAttractionMultiplier). Классический выживач без расслабона — держите RespawnHours около 72 и не занижайте RespawnUnseenHours сильно ниже 12–16, иначе респавн будет триггериться прямо за углом от игроков.
Блок Rally* отвечает за толпы (herds): RallyGroupSize — до скольки особей группируются в одну толпу, RallyTravelDistance — на какое расстояние толпа готова целенаправленно двигаться, RallyGroupSeparation/RallyGroupRadius — насколько плотно она держится. Увеличив RallyGroupSize вместе с высоким PopulationMultiplier, можно получить толпы в сотни особей — это уже не только про сложность, но и снова про производительность.
ZombieLore: сложность самого зомби
Блок ZombieLore определяет, каким именно ИИ и физикой обладает каждый отдельный зомби:
ZombieLore = {
Speed = 2,
Strength = 2,
Toughness = 2,
Cognition = 3,
Memory = 2,
Sight = 2,
Hearing = 2,
Smell = 2,
}
- Speed (1–4): Sprinters / Fast Shamblers / Shamblers / Random — самый ощутимый рычаг сложности из всех.
- Strength (1–4): Superhuman / Normal / Weak / Random — влияет на урон по игроку и скорость выламывания дверей/окон.
- Toughness (1–4): Tough / Normal / Fragile / Random — сколько ударов нужно, чтобы уложить зомби; завязано на InjurySeverity и оружии в руках игроков.
- Cognition (1–4): Navigate + Doors / Navigate / Basic / Random — умеют ли зомби открывать двери и осмысленно огибать препятствия. На «Navigate + Doors» баррикады перестают быть гарантией безопасности.
- Memory (1–5): Long / Normal / Short / None / Random — сколько зомби «помнит», где видел или слышал игрока, прежде чем потерять интерес.
- Sight, Hearing, Smell — дальность и точность органов чувств (Eagle/Normal/Poor для зрения и слуха, Bloodhound/Normal/Poor для нюха). Именно Smell делает бесполезным отсиживание на крыше без укрытия от запаха при долгом нахождении в одной точке.
Cognition и Memory работают в связке с толпами из предыдущего блока: толпа с высоким Cognition, которая ещё и подолгу держит игрока в Memory, продолжит методично искать вход, даже если вы сменили этаж. На PvE-серверах с новичками разумно держать Cognition ближе к «Basic», а Memory — к «Short», иначе баррикадная тактика из большинства гайдов не сработает.
Заражение: Transmission, Mortality, Reanimate
Самый спорный блок для PvP/RP-серверов — от него зависит, как игроки относятся к укусам и смерти персонажа:
- Transmission (1–4):
1— Blood + Saliva (укусы заражают всегда, царапины/порезы — с шансом; дефолт Apocalypse-пресета),2— Saliva Only (заражают только укусы),3— Everyone's Infected (любая смерть приводит к реанимации),4— None (вирус полностью отключён). - Mortality — сколько проживёт заражённый персонаж до смерти от инфекции: от почти мгновенной до пары недель, есть и значение «никогда не умрёт от инфекции» (статус остаётся, но не убивает).
- Reanimate — отдельно от Mortality: как быстро уже умершее тело (по любой причине) превращается в зомби, от мгновенного до пары недель.
Разница принципиальна: Mortality — когда умрёт заражённый живой персонаж, Reanimate — когда встанет уже мёртвое тело (заражённое, а при Transmission = 3 — вообще любое). «Отключить зомбификацию игроков» напрямую нельзя — единственный надёжный способ сделать это полностью — выставить Transmission = 4.
Для RP-серверов с балансом «страшно, но не безнадёжно» обычно берут такую комбинацию: Saliva Only + Mortality на 2–3 игровых дня (время отыграть сцену прощания, а не мгновенная смерть) + короткий Reanimate (пара минут), чтобы труп у ног не оставался безопасным долго.
Метаболизм: голод, жажда, усталость и порча еды
Скорость деградации характеристик персонажа не разбросана по десяткам полей — это в основном два параметра в корне таблицы плюс несколько про еду:
StatsDecrease = 3,
EndRegen = 3,
FoodRotSpeed = 3,
FridgeFactor = 3,
Nutrition = true,
HoursForCorpseRemoval = 216.0,
DaysForRottenFoodRemoval = -1,
- StatsDecrease (1–4): Very Fast / Fast / Normal / Slow — общая скорость падения голода, жажды и усталости одновременно. Это не три отдельных ползунка, а один общий множитель на все три статы разом — замедлить именно голод, не трогая усталость, штатным способом в vanilla sandbox нельзя, это территория модов.
- EndRegen (1–5): Very Fast / Fast / Normal / Slow / Very Slow — отдельно скорость восстановления выносливости во время отдыха, независимо от StatsDecrease. Можно сделать голод/жажду медленными, а усталость — быстро восстанавливающейся, чтобы бои были динамичнее.
- FoodRotSpeed (1–5) — скорость порчи еды вне холодильника, завязана на FridgeFactor (насколько холодильник замедляет тот же процесс; при выключенном электричестве —
ElecShut/ElecShutModifier— разница исчезает). - Nutrition — булево, включает ли систему КБЖУ, которая влияет на статы персонажа тоньше, чем просто число «голод».
- HoursForCorpseRemoval — через сколько часов трупы (в том числе убитых зомби) удаляются движком с карты. На серверах с большим PopulationMultiplier заниженное значение (48–72 вместо дефолтных 216) экономит ресурсы — горы неубранных трупов после стычек реально нагружают память, разбор такой ситуации есть в статье про переполнение памяти сервера Project Zomboid.
- DaysForRottenFoodRemoval — то же для сгнившей еды на земле;
-1означает «никогда не удалять», что на долгоживущем сервере тоже копит мусорные объекты.
Метаболизм и заражение напрямую в коде не связаны, но сильно влияют друг на друга через геймплей: быстрый StatsDecrease заставляет чаще выходить в лут-раны, а при высоком PopulationMultiplier и Urban Focused Distribution это резко повышает шанс контакта с толпой. Ориентировочно: казуальный PvE — StatsDecrease на Slow, PopulationMultiplier 0.7–1.0, RespawnHours ненулевой; хардкор — StatsDecrease на Fast/Very Fast, PopulationMultiplier 1.5+, RespawnHours = 0. Это не «магические» цифры, а отправная точка для подгонки под свой онлайн.
Поднять сервер Project Zomboid за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Можно ли поменять sandbox-vars.lua без потери прогресса игроков?
Да. Но правки в ZombieLore/ZombieConfig применятся только к новым зонам и новым зомби — уже существующие в загруженных чанках сохранят старое поведение до естественной замены.
Почему выключили RespawnHours, а зомби всё равно появляются в зачищенном городе?
Скорее всего работает RedistributeHours — это не респавн, а миграция уже существующих зомби с соседних непосещённых территорий. Отдельного выключателя для миграции нет, можно только увеличить интервал.
Что сильнее всего влияет на производительность — Speed, PopulationMultiplier или RallyGroupSize?
В первую очередь PopulationMultiplier и RallyGroupSize вместе — они определяют, сколько сущностей одновременно считает AI. Speed и Cognition нагружают меньше, но сильнее повышают субъективную сложность.
Как временно упростить игру новичкам, не трогая настройки для остальных?
Через sandbox-vars.lua нельзя — файл общий для всего мира. Рабочий вариант — RCON-команды для конкретного игрока или отдельный тестовый сервер со щадящим пресетом.
Нужно ли перезапускать сервер после каждой правки?
Да, для блоков ZombieLore и ZombieConfig — обязательно. Часть общих настроек можно менять через админ-панель на лету, но для боевых серверов безопаснее короткий рестарт с предупреждением игрокам.