Minecraft Руководство

Прегенерация чанков в Minecraft плагином Chunky: устранение лагов при исследовании

Как настроить и запустить предварительную генерацию чанков на сервере Minecraft с помощью плагина Chunky: установка границы мира, оптимизация потоков ЦП и устранение просадок TPS при исследовании карты.

Прегенерация чанков в Minecraft плагином Chunky: устранение лагов при исследовании

Генерация новых чанков в реальном времени — главный источник лагов, падения TPS и «зависания в воздухе» на многопользовательских серверах Minecraft. Когда игроки надевают элитры, садятся на лодки или просто исследуют незнакомые территории, серверный поток вынужден одновременно выполнять шум Перлина для рельефа, рассчитывать 3D-пещеры, расставлять структуры и просчитывать освещение. Решением проблемы является предварительная генерация (прегенерация) мира с помощью плагина Chunky.

В этой статье рассматривается установка плагина Chunky на серверы Paper и Purpur, расчёт границ мира, мониторинг процесса прегенерации и оптимизация ресурсов сервера.

Почему генерация чанков на лету вызывает просадки TPS#

Начиная с обновления «Пещеры и скалы», высота мира в Minecraft была увеличена до 384 блоков (от Y=-64 до Y=320). Увеличенный объём блоков и сложная геометрия биомов требуют в разы больше процессорных циклов на генерацию каждого чанка 16×16 блоков.

Когда новый чанк запрашивается игроком:

  1. Сервер запускает многопоточную генерацию рельефа и структур.
  2. Основной поток сервера вынужден синхронизировать завершённые чанки перед отправкой клиенту.
  3. Если генерация затягивается, основной тик сервера превышает 50 миллисекунд (MSPT > 50), из-за чего показатель TPS падает с 20.0 до 8–12.
  4. Игроки сталкиваются с телепортацией назад (rubberbanding) и невидимыми границами мира.

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

Установка плагина Chunky и подготовка границы мира#

Chunky — современный асинхронный плагин прегенерации, совместимый с Paper, Purpur, Spigot и Fabric. Скачайте актуальный релиз плагина и поместите его в каталог plugins/:

bash
cd /opt/minecraft/plugins
wget https://github.com/pop4959/Chunky/releases/latest/download/Chunky.jar

Перезапустите сервер или выполните загрузку плагина:

bash
sudo systemctl restart minecraft
sudo journalctl -u minecraft -n 30 --no-pager | grep -i "chunky"

Перед запуском генерации обязательно установите границу мира (worldborder). Это предотвратит случайный выход игроков за пределы прегенерированной зоны:

bash
/worldborder center 0 0
/worldborder set 10000

Команда устанавливает границу мира размером 10 000 на 10 000 блоков (радиус 5000 блоков от координат X:0, Z:0).

Запуск и мониторинг процесса прегенерации#

Подключитесь к консоли сервера (или используйте RCON) и задайте параметры генерации плагину Chunky:

bash
/chunky world world
/chunky shape square
/chunky center 0 0
/chunky radius 5000

Проверьте выбранные параметры перед стартом:

bash
/chunky quiet 10
/chunky start

Параметр quiet 10 ограничивает частоту вывода статуса в консоль до одного сообщения каждые 10 секунд, что снижает замусоривание системных журналов.

Для проверки текущего прогресса используйте команду:

bash
/chunky progress

Вывод покажет общее число сгенерированных чанков, процент выполнения, текущую скорость (чанков/сек) и оставшееся время (ETA).

Если сервер испытывает чрезмерную нагрузку во время прайм-тайма, процесс можно временно приостановить:

bash
/chunky pause
/chunky continue

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

Расчёт дискового пространства для сгенерированных регионов#

Прегенерация требует достаточного объёма дискового пространства на NVMe-накопителе. Чанки Minecraft упаковываются в файлы регионов по 32×32 чанка (512×512 блоков) в каталоге world/region/:

  1. Радиус 5000 блоков формирует квадратную площадь 10 000 × 10 000 блоков.
  2. Площадь содержит приблизительно 390 625 чанков (или около 400 файлов .mca).
  3. В среднем один файл региона современного мира занимает от 15 до 30 МБ в зависимости от плотности пещер и структур.
  4. Общий объём диска для зоны радиусом 5000 блоков составляет около 8–12 ГБ для обычного мира, плюс 3–5 ГБ для Нижнего мира (Nether) и Края (End).

Убедитесь в наличии свободного места на диске перед запуском задачи:

bash
df -h /opt/minecraft

Прегенерация дополнительных измерений#

Для полного исключения лагов необходимо прегенерировать Нижний мир и Энд. Переключите мир в Chunky и скорректируйте радиус с учётом масштаба координат:

bash
/chunky world world_nether
/chunky center 0 0
/chunky radius 1250
/chunky start

Поскольку 1 блок в Незере равен 8 блокам в обычном мире, радиус 1250 блоков полностью покрывает зону радиуса 10 000 блоков верхнего мира.

После завершения всех задач плагин выведет сообщение: [Chunky] Task finished for world!Ваш сервер полностью защищён от лагов, связанных с генерацией чанков.

Источники#