Размер орды кровавой луны в 7 Days to Die задают два числа: BloodMoonEnemyCount - сколько зомби живы одновременно на каждого игрока, и MaxSpawnedZombies - потолок на весь сервер. Четыре игрока при значении по умолчанию 8 - это 32 зомби одновременно, которых заменяют новые по мере гибели с 22:00 до 04:00. Когда ночь орды лагает, причина почти всегда одна из четырёх: для CPU слишком много живых зомби, игроки обороняют несколько отдельных баз, конструкция базы делает поиск пути дорогим или сервер работает всю неделю без перезапуска и ему не хватает памяти. Каждую из них можно измерить из консоли и исправить, не делая ночь скучной.
В этом руководстве разобрано, как на самом деле собирается орда, все настройки, которые её меняют, как читать строку, которую сервер пишет о собственном состоянии, и какие изменения помогают сильнее всего. Остальная часть конфига описана в статье настройки сервера 7 Days to Die.
Как собирается орда кровавой луны#
Каждые BloodMoonFrequency дней небо краснеет, и в 22:00 по игровому времени вокруг каждого игрока начинает спавниться орда. Что именно придёт, решают три вещи:
- Сколько одновременно.
BloodMoonEnemyCountна игрока с потолкомMaxSpawnedZombiesна весь сервер. - Какие зомби. Игровая стадия (game stage). У каждого игрока есть игровая стадия, которая растёт с его уровнем и числом прожитых дней и корректируется сложностью. Игроки, стоящие рядом, считаются отрядом, и игровая стадия отряда - с перевесом в сторону самого сильного - выбирает группы спавна из
gamestages.xml. Поэтому игрок 10-го уровня, который обороняется вместе с другом 80-го уровня, видит диких и радиоактивных зомби, которых в одиночку никогда бы не встретил. - Как быстро.
ZombieBMMove- скорость передвижения во время орды.
Когда зомби погибают, появляются новые, чтобы держать число на уровне, пока ночь не закончится в 04:00 или не будет исчерпан бюджет волны. Поэтому для сервера важно не то, сколько зомби убито за ночь, а то, сколько их живо в каждый момент, и цена каждого зависит от того, чем он занят.
Живой зомби стоит прежде всего поиска пути. Каждый вычисляет, как добраться до игрока сквозь построенные игроками блоки или в обход них, выбирает, что бить, и пересчитывает маршрут каждый раз, когда ломается блок. Зомби, идущий по открытой местности, дешёвый. Зомби внутри лабиринта из полуразрушенного бетона - нет.
Все настройки, которые меняют ночь орды#
| Параметр | По умолчанию | Что делает |
|---|---|---|
BloodMoonFrequency | 7 | Дней между кровавыми лунами. 0 отключает их |
BloodMoonRange | 0 | Случайное число дней, добавляемое к частоте или вычитаемое из неё |
BloodMoonWarning | 8 | Час, когда счётчик дней становится красным. -1 - без предупреждения |
BloodMoonEnemyCount | 8 | Зомби, живых одновременно, на каждого игрока |
MaxSpawnedZombies | 64 | Общий потолок живых зомби на сервере |
ZombieBMMove | 3 | Скорость орды: 0 шаг, 1 трусца, 2 бег, 3 спринт, 4 кошмар |
EnemyDifficulty | 0 | 0 обычные, 1 дикие |
GameDifficulty | 1 | От 0 до 5. Наносимый и получаемый урон и масштаб игровой стадии |
DayNightLength | 60 | Реальных минут на игровой день - значит, задаёт, сколько орда длится в реальном времени |
<property name="BloodMoonFrequency" value="7"/><property name="BloodMoonRange" value="0"/><property name="BloodMoonWarning" value="8"/><property name="BloodMoonEnemyCount" value="8"/><property name="MaxSpawnedZombies" value="64"/><property name="ZombieBMMove" value="3"/>Некоторые из них взаимодействуют так, как комментарии в конфиге не объясняют.
DayNightLength - это замаскированная настройка орды. Орда длится с 22:00 до 04:00, то есть шесть игровых часов. При стандартном 60-минутном дне это пятнадцать реальных минут; при 120 минутах - тридцать. Более длинные дни означают более длинный отрезок постоянной нагрузки, а это важнее любого пика.
BloodMoonRange делает ночь непредсказуемой, что некоторым группам нравится. Но из-за этого невозможно запланировать перезапуск перед ордой, а это одна из самых полезных вещей, которые можно сделать. Если пользуетесь этой настройкой, оставьте BloodMoonWarning включённым, чтобы люди хотя бы видели, что орда приближается.
GameDifficulty меняет игровую стадию, а игровая стадия меняет то, какие зомби спавнятся. Если поднять сложность, не снижая BloodMoonEnemyCount, вы получите то же число зомби, только каждый из них крепче и чаще бывает диким или радиоактивным - а значит, живёт дольше и дольше занимается поиском пути.
Арифметика: сначала на игрока, потом потолок#
Самое часто неверно понимаемое в ночи орды - то, что BloodMoonEnemyCount не является общим числом.
| Игроков | BloodMoonEnemyCount | Запрошено | Реально живых при MaxSpawnedZombies 64 |
|---|---|---|---|
| 2 | 8 | 16 | 16 |
| 4 | 8 | 32 | 32 |
| 8 | 8 | 64 | 64 |
| 8 | 16 | 128 | 64 |
| 12 | 8 | 96 | 64 |
Из этой таблицы следуют два вывода. Сервер, который хорошо держал четырёх игроков на 7-ю ночь, может упасть на 14-ю, потому что зашли восемь человек, хотя ни одна настройка не менялась. А увеличение BloodMoonEnemyCount на загруженном сервере часто ничего не меняет, потому что ограничением уже стал потолок, - вот почему игроки жалуются, что «орда не стала больше» после того, как админ поднял значение.
Потолок к тому же общий со всем остальным. MaxSpawnedZombies действует на весь сервер, поэтому зомби, бродящие вокруг игрока, который во время орды гуляет по дикой местности, расходуют тот же бюджет, что и зомби у основной базы. Игрок, который в ночь кровавой луны остаётся снаружи собирать лут, тихо забирает зомби из обороны всех остальных.
Поднять MaxSpawnedZombies выше 64 можно, и комментарий в поставляемом конфиге предупреждает, что большие значения будут стоить серверу частоты кадров, а значит, лагов у каждого клиента. Это единственное число на сервере, где «больше» надёжно означает «хуже». Если хотите ночь потяжелее, поднимайте сложность или скорость раньше, чем количество.
Как читать строку статистики сервера#
Гадать, тяжело ли серверу, не нужно. Выделенный сервер с регулярным интервалом пишет в лог строку состояния, и консоль панели показывает её по мере появления:
Time: 412.37m FPS: 31.52 Heap: 5210.4MB Max: 6012.8MB Chunks: 1844 CGO: 212 Ply: 4 Zom: 32 Ent: 71 (148) Items: 23 CO: 4 RSS: 9120.5MB| Поле | Значение | На что смотреть |
|---|---|---|
Time | Минут с момента запуска сервера | Долгий аптайм перед ордой - тревожный знак |
FPS | Частота симуляции сервера | Падение до однозначных чисел - лаги, которые чувствуют все |
Heap, Max | Управляемая память: используемая и выделенная | Рост в течение недели |
Chunks | Загруженные чанки | Высокое значение, когда игроки разбрелись |
Ply | Подключённые игроки | |
Zom | Живые зомби | Должно держаться около ожидаемого размера орды |
Ent | Сущности, активные и всего | Растущий итог значит, что что-то не исчезает |
Items | Выброшенные предметы в мире | Здесь копятся мешки с лутом после орды |
RSS | Память, которую занимает процесс | Именно это число сравнивается с лимитом тарифа |
Поля стабильны уже много лет, но их точный набор немного различается между версиями. Важно читать их на протяжении вечера. Запишите строку в 21:00 по игровому времени, ещё раз на пике орды и ещё раз после 04:00. Если FPS резко падает, пока Zom держится на 32, сервер не вытягивает 32 зомби вокруг этих баз. Если FPS держится, а игроки всё равно жалуются, смотрите на их соединения, а не на сервер - как это различить, описано в статье задержка, джиттер и потеря пакетов. Если RSS близок к лимиту тарифа ещё до начала орды, это проблема памяти, а не зомби.
Консольные команды mem и le выдают ту же информацию по запросу. le выводит список всех сущностей, и так вы узнаёте, что «лаги» - это двести брошенных мешков с лутом или стадо животных, застрявшее в каньоне.
Базы, поиск пути и почему у одной группы лагает, а у другой нет#
У двух групп с одинаковыми настройками и одинаковым числом игроков ночи орды могут проходить совершенно по-разному, и разница обычно в базе.
Несколько баз - это несколько орд. Орда спавнится вокруг игроков. Четыре игрока в четырёх базах - это четыре отдельные осады, четыре набора загруженных чанков и четыре задачи поиска пути. Четыре игрока в одной базе - одна. Попросить группу обороняться в ночь орды вместе - самое большое улучшение производительности из доступных, и оно ничего не стоит.
Обрушения конструкций дорогие. Когда зомби ломают опору, всё, что на ней держится, нужно пересчитать, а падающие блоки на мгновение становятся физическими объектами. Высокая база на тонких опорах, которая рушится по частям, создаёт всплеск работы, который сервер сразу чувствует. Низкие, широкие, хорошо поддержанные конструкции к нему добрее.
Лабиринты заставляют зомби думать. Зомби выбирают маршрут, оценивая прочность блоков на возможных путях. Длинный коридор-серпантин с множеством альтернативных разрушаемых стен даёт им больше вариантов для оценки при каждом изменении блока. Конструкции-воронки с одним очевидным маршрутом дешевле лабиринтов.
Dynamic mesh работает в фоне. DynamicMeshEnabled пересчитывает структурные данные для участков, изменённых игроками. Если DynamicMeshLandClaimOnly оставлен в true, эта работа ограничена заприваченными участками - это то, что нужно. Полное отключение экономит немного CPU; отключение LandClaimOnly на старом сервере делает только хуже.
Мешки с лутом накапливаются. Убитые зомби оставляют мешки, и после долгой орды их много. Пока они не исчезнут, они считаются предметами и сущностями. Обычно это не главная статья расходов, но в загруженную ночь набегает, и поле Items в строке статистики это показывает.
Ничто из этого не повод указывать игрокам, как строить. Это повод знать, куда смотреть, когда оборона одной базы заставляет заикаться ночь у всех.
Изменения настроек, которые помогают сильнее всего#
В порядке того, насколько они помогают и насколько мало игроки их замечают:
- Перезапускайте сервер перед ордой. На большинстве серверов 7 Days память растёт в течение недели. Перезапуск днём в день кровавой луны, с предупреждением, даёт орде начаться с чистой кучей. Как выбрать час, описано в статье расписания перезапусков, которые помогают. При
BloodMoonRangeравном0это легко запланировать, потому что орда всегда приходится на число, кратноеBloodMoonFrequency. - Обороняйтесь вместе. Это не настройка, но она стоит больше любой из них.
- Снижайте `BloodMoonEnemyCount`, а не `MaxSpawnedZombies`. Для восьми игроков по 6 на каждого - это 48 живых вместо 64, равномерно распределённых по базам. Если вместо этого снизить общий потолок, бюджет заберёт та база, у которой спавн начнётся первым.
- Сложность создавайте скоростью и уровнем сложности.
ZombieBMMoveна4с 6 на игрока - ночь тяжелее, чем3с 12 на игрока, и при этом дешевле. - Держите `DayNightLength` в разумных пределах. Девяносто минут - частый компромисс для групп, играющих вечерами. Очень длинные дни растягивают нагрузку орды на час реального времени.
- Проверьте тариф. Если
FPSпадает на чистом, недавно перезапущенном сервере со скромной ордой и одной базой, ограничением стала доля CPU. Тут действует правило из статьи CPU или RAM для игровых серверов: прежде чем докупать один ресурс, проверьте, какой из них упёрся в предел.
Разумная отправная точка для разных групп:
| Группа | BloodMoonEnemyCount | MaxSpawnedZombies | ZombieBMMove |
|---|---|---|---|
| 2-4 друга, без напряга | 8 | 64 | 2 |
| 4-6 игроков, стандарт | 8 | 64 | 3 |
| 8 игроков, одна общая база | 6 | 64 | 3 |
| 8+ игроков, несколько баз | 4 | 64 | 3 |
| Небольшая группа, которой нужна боль | 12 | 64 | 4 |
Расписание вокруг ночи орды#
На сервере с фиксированной кровавой луной раз в семь дней полезная автоматизация проста. Перезапуск за несколько часов до неё, сохранение и резервная копия наутро.
В RE:NODE вкладка Schedules принимает cron-выражение и список упорядоченных задач с задержками. Расписание перед ордой может выглядеть так: консольная команда say "Restart in 5 minutes for horde night", задержка в пять минут, saveworld, короткая задержка, затем действие питания restart. Расписание на утро после: saveworld, задержка, затем резервная копия. Restart в панели отправляет корректную остановку, так что мир записывается до выхода процесса, а если орда когда-нибудь всё же доведёт сервер до лимита памяти, его остановят и перезапустят начисто, а не оставят уходить в своп. Это лучше альтернативы, но всё равно остановка без сохранения, так что полагаться стоит именно на перезапуск перед ордой. Синтаксис есть в статье cron-выражения по-простому.
Чтобы подогнать расписание под игровой календарь, нужно немного арифметики. Игровые дни не совпадают с реальными, поэтому фиксированная еженедельная запись cron будет смещаться относительно кровавых лун, если группа не играет в предсказуемое время. Большинство групп в итоге ставят ежедневный перезапуск на час, когда никто не играет, и он покрывает ночь орды вместе со всеми остальными ночами.
Решение проблем#
Во время орды зомби дёргаются и телепортируются. Упал FPS сервера. Проверьте строку статистики. Снизьте число на игрока, соберите игроков в одной базе, перезапустите сервер перед следующей ордой.
Орда меньше, чем указано в настройке. Её ограничивает MaxSpawnedZombies, или игроки разбрелись, и бюджет делится с зомби вокруг кого-то в дикой местности.
Орда так и не пришла. BloodMoonFrequency равен 0, или её сдвинул BloodMoonRange. gettime показывает текущий день; считайте от него.
Сервер упал на пике орды. Посмотрите на RSS относительно лимита тарифа в строках перед падением. Если было близко, дело в памяти: перезапускайте перед ордами и подумайте о следующем тарифе. Если с памятью всё было в порядке, прочитайте последние строки лога в поисках ошибки мода - это вторая частая причина.
Ночь орды проходит нормально, а первый день свежего сервера лагает. Это генерация мира и первое исследование, а не орда. См. статью генерация мира в 7 Days to Die.
Лаги продолжаются после 04:00. Оставшиеся зомби и мешки с лутом или ещё не улёгшееся обрушение. le покажет, что ещё живо.
FAQ#
BloodMoonEnemyCount считается на игрока?
Да. Это число живых одновременно зомби на каждого игрока, поэтому итог растёт вместе с числом людей онлайн. MaxSpawnedZombies ограничивает общее число на весь сервер.
Какое значение MaxSpawnedZombies безопасно?
Оставьте 64, если вы не измерили, что сервер держит хорошую частоту симуляции и выше. Поднять его - самый надёжный способ заставить ночь орды лагать, а тяжёлую ночь лучше делать скоростью и сложностью.
Почему у нас ночь орды хуже, чем на сервере друга с теми же настройками?
Конструкция баз и разброс игроков. Несколько отдельных баз - это несколько осад, а высокие сооружения, рушащиеся по частям, создают всплески работы для физики и поиска пути. Больше обычного игроков онлайн в эту ночь тоже умножает число зомби.
Можно ли отключить кровавые луны?
Да, BloodMoonFrequency со значением 0. Блуждающие орды при этом всё равно бывают. Многие группы предпочитают увеличить частоту, например до 14 дней, а не убирать событие совсем.
Как протестировать орду, не дожидаясь неделю?
Как администратор, с помощью settime переведите часы на вечер дня кровавой луны, сыграйте её и следите за строкой статистики в консоли. Потом верните время обратно или проводите тест на копии сервера.
Решит ли лаги орды тариф побольше?
Только если серверу действительно не хватает CPU или памяти. Сначала прочитайте строку статистики. Если FPS держится, а у игроков всё равно лаги, проблема в их соединениях или в базе, и дополнительные ресурсы этого не изменят.




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