Pterohost docs

Оптимизация сервера Project Zomboid Build 42: RAM, CPU, лаги

Как настроить производительность сервера Project Zomboid Build 42: server-authoritative инвентарь и лут грузят CPU сильнее Build 41, сколько RAM и какая частота ядра нужны, диагностика лагов.

Build 42 не просто добавил контента - он переложил заметную часть игровой логики с клиента на сервер, и это прямо отражается на требованиях к железу. Владельцы серверов, которые спокойно тянули Build 41 на условных 4 ГБ RAM и четырёхъядернике, после перехода на Build 42 нередко видят рост задержек и падения FPS даже при том же числе игроков. В этой статье - что именно изменилось в нагрузке, сколько ресурсов реально нужно и как диагностировать лаги на сервере Build 42.

Что изменилось с переездом логики на сервер

Ключевое архитектурное изменение Build 42 - server-authoritative модель для основных игровых действий:

  • Передача предметов между инвентарями. Раньше клиент мог локально отобразить перемещение предмета до подтверждения сервером, теперь сервер считает и подтверждает каждое действие.
  • Взаимодействие с контейнерами. Открытие шкафов, ящиков, багажников - всё это теперь обсчитывается на сервере в реальном времени, а не кэшируется на клиенте.
  • Распределение лута. Генерация и выдача предметов из контейнеров - серверная операция.
  • TimedActions (долгие действия вроде разбора машины, постройки, лечения) - основная логика выполнения теперь на сервере, клиент только отображает прогресс.

Такая архитектура нужна в первую очередь для честности мультиплеера и работы античита - у клиента физически нет возможности «сжульничать» с результатом действия, раз решение принимает сервер. Но обратная сторона - каждое действие каждого игрока теперь дополнительная нагрузка на процессор сервера, а не только на клиента, который это действие совершает. При 8-16 одновременно активных игроках, копающихся в контейнерах и таскающих лут, суммарная нагрузка на серверный тик заметно выше, чем в Build 41 при том же онлайне.

Если вы только настраиваете новый сервер, сначала пройдите базовую установку - установка сервера Project Zomboid Build 42 - и настройте игровые правила через sandbox-параметры: часть из них (плотность зомби, множители лута) прямо влияет на то, сколько объектов серверу приходится держать в памяти и просчитывать каждый тик.

Сколько RAM и CPU реально нужно

Память

Сценарий-XmxКомментарий
Тест/соло, 1-2 игрока6-8 ГБМинимум для стабильной инициализации мира Build 42
Малая группа, 4-6 игроков8-10 ГБКомфортный запас без модов
Средний сервер, 8 игроков10-12 ГБС небольшим набором лёгких модов
Крупный сервер, 8-16 игроков с модами12-16 ГБ и вышеОсобенно с модами-картами и оверхолами

Инициализация пустого мира Build 42 сама по себе занимает порядка 6 ГБ ещё до подключения игроков - это выше, чем аналогичный показатель Build 41, из-за более тяжёлой карты и системы подвалов. Подробнее про сам параметр -Xmx и файл ProjectZomboid64.json - в статье про установку сервера. Общие принципы расчёта памяти под игровые серверы разных типов - в статье сколько RAM нужно серверу.

Не экономьте на разнице между -Xmx и физической RAM машины. Если весь объём памяти уйдёт под Java heap, операционной системе не останется ресурсов на сетевой стек и файловый кэш, и производительность просядет даже при формально «достаточном» heap.

Процессор: частота важнее ядер

Project Zomboid исторически - однопоточная по своей сути игра в части основного игрового тика: один-два потока обрабатывают критическую логику, остальные ядра задействованы куда меньше. В Build 42 из-за переноса инвентаря и TimedActions на сервер этот эффект стал более выраженным, а не менее - весь новый объём вычислений добавляется именно в тот самый горячий поток.

Практический вывод: процессор с высокой частотой одного ядра (4.5 ГГц и выше в турбо-режиме) даёт заметно более плавный тик сервера, чем процессор с большим числом ядер, но низкой базовой частотой. При выборе железа для сервера Build 42 в первую очередь смотрите на модель CPU и её частоту в однопоточном режиме, а не на формальное число ядер в тарифе хостинга.

Pterohost - серверы Project Zomboid на процессорах с высокой частотой ядра, NVMe и DDoS-защитой, рассчитанные под нагрузку Build 42. Промокод 4START даёт -20% на первый заказ. Заказать сервер Project Zomboid

Настройка heap и параметров производительности

Кроме базового -Xmx, разобранного в статье про установку, на нагрузку сервера напрямую влияют несколько параметров servertest.ini:

PauseEmpty=true
PlayerRespawnWithSelf=false
DisableSafehouseWhenPlayerConnected=false

PauseEmpty

Ключевой параметр для экономии ресурсов на сервере с непостоянным онлайном. При PauseEmpty=true симуляция мира останавливается, когда на сервере нет ни одного игрока - зомби не бродят, растения не растут, время не идёт. Это резко снижает фоновую нагрузку на CPU в часы, когда никто не играет, но означает, что фермы и таймеры не прогрессируют без игроков онлайн. При PauseEmpty=false мир живёт постоянно, включая ночные часы без игроков, что удобно для «живого» ощущения мира, но держит сервер под нагрузкой круглосуточно.

Для большинства небольших и средних серверов с несколькими часами активности в сутки PauseEmpty=true - разумный компромисс: сервер не тратит ресурсы впустую, пока все офлайн.

Число зомби и плотность симуляции

Параметры PopulationMultiplier и связанные настройки из блока ZombieConfig в servertest_SandboxVars.lua напрямую определяют, сколько активных зомби серверу приходится держать в памяти и просчитывать каждый тик. Подробный разбор этих параметров - в статье про sandbox-настройки Build 42. Если сервер лагает при большом онлайне, снижение плотности популяции зомби - один из самых быстрых способов вернуть плавность без апгрейда железа.

Чистка мира и регулярный рестарт

Со временем в мире Project Zomboid накапливаются «мусорные» объекты: брошенные предметы на земле, трупы, разрушенные конструкции. Это увеличивает объём данных, которые сервер держит в памяти и записывает при каждом автосейве.

Практики для поддержания производительности на длинной дистанции:

  • Регулярный плановый рестарт сервера (например, раз в сутки по расписанию) освобождает память от накопленных за сессию временных данных и сбрасывает утечки, характерные для долго работающего Java-процесса.
  • Ограничение числа предметов на земле через параметры лута и явное поощрение игроков не захламлять безопасные зоны горами хлама.
  • Периодическая проверка размера файла сохранения - резкий и не соответствующий числу игроков рост объёма мира может сигнализировать о проблеме (например, баг мода, генерирующий лишние объекты).

Автоматизировать рестарт и бэкап перед ним удобно через планировщик задач - см. статью про автозапуск и cron для игровых серверов, а сам процесс резервного копирования - в статье про автоматизацию бэкапов.

Диагностика лагов

Если сервер начал подтормаживать, полезно пройти по нескольким проверкам по порядку.

1. Загрузка CPU процесса сервера

Проверьте, действительно ли упирается именно основной поток сервера. На Linux:

top -H -p $(pgrep -f ProjectZomboid64)

Если один из потоков стабильно на 90-100% при том, что остальные ядра почти простаивают - это ожидаемая картина для Project Zomboid, и решение - либо снизить игровую нагрузку (плотность зомби, число активных модов), либо перейти на процессор с более высокой частотой.

2. Длительность автосейва

В логе сервера (~/Zomboid/Logs/) ищите строки, связанные с сохранением мира. Если автосейв стабильно занимает несколько секунд и во время него ощутимо подвисает игра у всех игроков - это признак того, что объём данных мира вырос слишком сильно (либо диск недостаточно быстрый). NVMe SSD здесь даёт кратный выигрыш по сравнению с обычным SATA SSD или тем более HDD.

3. Влияние конкретных модов

Отключите поочерёдно тяжёлые моды (крупные оверхолы, моды с большим числом новых предметов и NPC) и понаблюдайте за нагрузкой. Некоторые моды, ещё не полностью оптимизированные под server-authoritative архитектуру Build 42, создают избыточную нагрузку на сервер именно из-за того, что дублируют проверки, которые теперь и так выполняет движок. Подробно про проверку модов на совместимость - в статье про моды Build 42.

4. Массовые действия игроков

Если лаги совпадают по времени с моментами, когда несколько игроков одновременно открывают контейнеры, разбирают крупный лут или выполняют TimedActions рядом друг с другом - это прямое следствие server-authoritative модели: пиковая нагрузка от одновременных запросов на сервер выше, чем от тех же действий, размазанных по времени. Тут решает запас производительности CPU, а не более редкая проблема с сетью или диском.

Pterohost - панель с мониторингом CPU и RAM в реальном времени и планировщиком автоматических рестартов для стабильной работы Project Zomboid Build 42. Промокод 4START даёт -20% на первый заказ. Оптимизировать сервер Project Zomboid

Почему для PZ важна частота ядра, а не их количество

Стоит закрепить этот момент отдельно, потому что при выборе тарифа хостинга легко ориентироваться на привычную метрику «число vCPU», которая для Project Zomboid вводит в заблуждение. Игра построена вокруг одного главного игрового потока, который обсчитывает мир, физику, зомби и - в Build 42 - ещё и серверную часть инвентаря с TimedActions. Дополнительные ядра помогают фоновым задачам (сеть, сжатие сохранений, часть системных операций), но не разгружают этот главный поток напрямую.

Поэтому два сервера с одинаковым числом ядер, но разной частотой турбо-буста на одно ядро, дадут заметно разный игровой опыт при одинаковом онлайне. При выборе железа под Build 42 приоритет такой:

  1. Частота одного ядра (турбо-буст) - главный фактор.
  2. Тип диска (NVMe против SATA) - критично для скорости автосейва.
  3. Объём RAM, достаточный под выбранный -Xmx с запасом для ОС.
  4. Общее число ядер - наименее значимый фактор из четырёх для типичного сервера на 4-16 игроков.

Часто задаваемые вопросы

Почему сервер Project Zomboid Build 42 требует больше ресурсов, чем Build 41?

В Build 42 передача предметов между инвентарями, работа с контейнерами, распределение лута и TimedActions стали server-authoritative - раньше значительную часть этой логики считал клиент. Теперь весь расчёт лежит на сервере, что заметно поднимает нагрузку на CPU при активной игре нескольких человек одновременно.

Сколько RAM нужно серверу Project Zomboid Build 42?

Ориентировочно 6-8 ГБ базово на инициализацию мира плюс 0.5-1 ГБ на каждого активного игрока. Для 1-4 игроков достаточно 8 ГБ, для 8 игроков - 10-12 ГБ, для 8-16 игроков с модами - 12-16 ГБ и выше.

Важнее число ядер CPU или их частота для Project Zomboid?

Частота важнее. Project Zomboid исторически плохо распараллеливает основной игровой тик - один-два потока всегда самые загруженные, остальные ядра почти простаивают. Процессор с высокой частотой одного ядра (4.5 ГГц и выше) даст более плавный сервер, чем процессор с большим числом ядер на низкой частоте.

Что такое PauseEmpty и как он влияет на нагрузку сервера?

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

Как диагностировать лаги на сервере Project Zomboid Build 42?

Проверьте загрузку CPU конкретного процесса сервера в реальном времени, посмотрите на длительность автосейва в логе, оцените число активных зомби через консольные команды и проверьте, не совпадает ли начало лагов с действиями конкретного мода или с моментом массового открытия контейнеров несколькими игроками одновременно.