DGuard

Прогрузка мира и граница: как убрать лаги от генерации чанков

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

Команда DGuard6 мин

Порядок такой: задайте границу мира командой /worldborder set, поставьте плагин Chunky и выполните в консоли chunky worldborder и chunky start. Затем повторите для Незера и Энда. Лучше всего — до открытия сервера, пока на нём нет игроков. После этого сервер только читает готовые чанки с диска, а не строит их на лету.

Почему генерация чанков лагает

Чтобы создать новый чанк, сервер строит рельеф, пещеры, руды и постройки, считает свет и записывает результат на диск. Загрузить уже готовый чанк несравнимо дешевле. Пока игроки ходят по обжитым местам, генерации почти нет. Но стоит кому-то полететь на элитрах в неизведанные земли — сервер начинает строить десятки новых чанков, и тик перестаёт укладываться в 50 мс.

Особенно это заметно на анархиях и выживании с большим миром. Читеры с ElytraFly и BoatFly летают быстрее честных игроков и грузят генерацию сильнее всех. Убедиться, что лаги именно от генерации, поможет профайлер spark — как его снять, описано в статье почему лагает сервер.

Шаг 1. Поставьте границу мира

Граница ограничивает, сколько мира вообще может появиться. Без неё прогружать нечего: мир бесконечен. Команда задаёт диаметр в блоках, а не радиус: /worldborder set 10000 — это 5000 блоков в каждую сторону от центра.

Граница 10 000 × 10 000 блоков вокруг 0, 0
/worldborder center 0 0
/worldborder set 10000
/worldborder get
  • С версии 1.21.9 у каждого измерения своя граница: команда меняет её только там, где выполнена. Для Незера и Энда задайте свою, например /execute in minecraft:the_nether run worldborder set 5000.
  • Помните, что в Незере один блок равен восьми блокам верхнего мира, поэтому граница там может быть меньше.
  • Если хотите плавно расширять границу, учтите: с 1.21.11 время в команде указывается в тиках, а секунды — с суффиксом s.
  • За границей мобы естественным образом не появляются. Поэтому прогружайте мир внутри границы, а не шире неё.
  • Есть и жёсткий потолок в server.properties — max-world-size, расстояние от центра до границы в блоках (по умолчанию 29999984). Для прогрузки удобнее /worldborder: его меняют командой, без правки файла и перезапуска.

Шаг 2. Прогрузите мир плагином Chunky

Chunky — плагин, который генерирует чанки заранее. Он работает на Paper, Spigot, Folia, Fabric, Forge, NeoForge и Sponge, распространяется под лицензией GPL-3.0. Задачу можно поставить на паузу и продолжить позже, а прогресс виден прямо в консоли.

  1. 1

    Установите

    Скачайте Chunky с Modrinth, положите в plugins/ и перезапустите сервер. Введите в консоли chunky — если плагин ответил списком команд, он работает. Как ставить плагины вообще — в статье как установить плагин.

  2. 2

    Выберите мир и область

    chunky world world выбирает мир, chunky worldborder подгоняет центр и радиус под границу из шага 1. Без границы — chunky center 0 0 и chunky radius 5000: радиус в блоках.

  3. 3

    Запустите

    chunky start. Прогресс, скорость и оставшееся время Chunky пишет в консоль, в игре — chunky progress.

  4. 4

    Управляйте задачей

    chunky pause ставит на паузу с сохранением прогресса, chunky continue продолжает, chunky cancel отменяет задачу — уже созданные чанки остаются.

Консоль сервера (в игре — со слешем)
chunky world world
chunky worldborder
chunky start
chunky progress

Шаг 3. Незер и Энд

Игроки строят порталы и летают по Энду на элитрах — эти миры генерируются так же. Повторите шаги для каждого, меняя только мир. На Paper 1.21.x миры по умолчанию называются world_nether и world_the_end; документация Chunky упоминает и варианты the_nether и the_end. С 26.1 Paper хранит измерения по-новому, в папке world/dimensions/, поэтому если Chunky не находит мир, сверьте его имя на своём сервере.

Незер и Энд на Paper 1.21.x
chunky world world_nether
chunky worldborder
chunky start

chunky world world_the_end
chunky worldborder
chunky start

Когда прогружать: до открытия

Документация Chunky советует прогружать мир до того, как зайдут игроки: так обычно быстрее, и игра не страдает. Лучшее время — до открытия сервера или сразу после вайпа; следующее по удобству — ночь с минимальным онлайном.

Скорость прогрузки упирается в железо: по документации Chunky важнее всего быстрое ядро процессора, достаточное число потоков, SSD и хотя бы 4 ГБ памяти. Сколько выделять серверу — в статье сколько оперативной памяти нужно.

Место на диске и бэкапы

Мир растёт не линейно: площадь — это квадрат радиуса, поэтому радиус 10 000 занимает примерно вчетверо больше места, чем 5000. Прикиньте размер заранее — Chunky для этого рекомендует калькулятор размера мира. И не забудьте, что резервные копии вырастут вместе с миром: см. резервные копии сервера.

Прогрузка и античит

Просадки TPS бьют по всему серверу, и античит не исключение: проверки, завязанные на время, при лагах видят то, чего не было. Прогруженный мир убирает один из частых источников таких просадок. А DGuard вдобавок копит улики и не банит за одно срабатывание: бан — только при 400 очках в трёх разных эпизодах, поэтому один лаг честного игрока не накажет. ElytraFly и BoatFly он проверяет на любом тарифе.

Частые вопросы

/worldborder set задаёт радиус или диаметр?

Диаметр. /worldborder set 10000 ставит границу в 5000 блоках от центра в каждую сторону; в Chunky этому соответствует радиус 5000.

На какой радиус прогружать мир?

Документация Chunky советует начинать с радиуса поменьше, например 5000, и увеличивать по мере надобности. Ориентируйтесь на онлайн, режим и свободное место на диске: размер мира растёт как квадрат радиуса.

Можно ли прогружать мир, когда на сервере есть игроки?

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

Что будет, если перезапустить сервер во время прогрузки?

Задача не продолжится сама: по умолчанию continue-on-restart в Chunky выключен. Выполните chunky continue, и прогрузка пойдёт с того места, где остановилась.

Нужно ли прогружать Незер и Энд?

Да, если игроки туда ходят: эти миры генерируются так же и так же роняют TPS. Повторите chunky world и chunky start для каждого мира.

Источники

Все разделы
Оптимизация6 минПочему лагает сервер Minecraft и как найти причинуСначала поймите, что лагает: сервер (низкий TPS), сеть (пинг) или компьютер игрока (FPS). Если сервер — измерьте MSPT и снимите профиль spark: он покажет, что съедает 50 мс тика.ЧитатьСоздание сервера6 минСколько памяти нужно серверу MinecraftУниверсального числа «на N игроков» нет: расход памяти зависит от онлайна, дальности прорисовки, плагинов и того, сколько мира загружено одновременно. Документация Paper начинает с 4 ГБ, а на странице флагов Aikar советует 6–10 ГБ при любом онлайне. Дальше — замеряйте spark и добавляйте память, только если её действительно не хватает.ЧитатьЯдра7 минЯдро Paper: установка и настройка сервераPaper — ядро сервера Minecraft с плагинами, оптимизациями и гибкими настройками. Здесь — как его поставить, что где лежит после первого запуска, какие настройки стоит знать и как обновляться, не рискуя миром.Читать

Поставьте лучший античит для современного Minecraft

DGuard ловит все 47 видов читов из нашего сравнения — у ближайшего соперника, Intave, 27. Полная защита на любом тарифе, до 30 игроков онлайн — бесплатно.