Оптимизация сервера Minecraft

Blog

Запуск собственных серверов Minecraft периодически меняется то по способу создания, то по методикам оптимизации. Игра постепенно становится более навороченной, и требования к серверной части возрастают. Майнкрафт собрал грандиозное число поклонников, поэтому есть смысл изучить данную статью, чтобы и гики были удовлетворены, и для хейтеров не было причин набрасываться на организатора нового сервера.

Оптимизация Сервера Minecraft (1)

Простая концепция мира из «простейших кубиков» постепенно превратилась в среду для общения, создания весьма сложных объектов, копирующих реальный мир. И вот это накладывает некоторые ограничения. Чем детальнее игрок создает элементы, тем выше нагрузка на процессор, оперативную память сервера. Ситуация дополнительно усложнена тем, что на один хост подключается несколько пользователей. Рассмотрим типовые проблемы на примере версии Java Edition.

Виды серверов

Рассмотрим несколько популярных названий серверов Minecraft. 

Клиент игры

Простейший вариант Server Minecraft – сервер, встроенный в клиент самой игры. Всего-то нужно выбрать создание нового мира, кликнуть подтверждение, и виртуальная вселенная станет доступной по локальной сети. Правда, поиграть вместе с удаленными пользователями не удастся, придется довольствоваться «домашними». Да и допустимая нагрузка на него минимальная, максимум пара-тройка аккаунтов, из-за чего такой вариант практически никогда не рассматривают.

Vanilla

Одно из популярных названий серверов Minecraft – Vanilla. Это оригинальный модуль, автором которого является компания Mojang Studios. Он имеет простой функционал по созданию сервера с персональным виртуальным миром. Подключиться к нему можно из любой точки планеты, где есть доступ к интернету. Разобраться в настройке довольно легко, новичкам можно ознакомиться с подробной инструкцией (размещена в игровой Wiki).

Image1

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

Bukkit

Второй вариант сервера Майнкрафт для ПК – Bukkit. Решение создано энтузиастами, которые не стали изобретать велосипед, а использовали в качестве базы версию Vanilla. Его расширили путем интеграции поддержки модов (модификаций) и плагинов. Пользователей привлекают в Bukkit как менее суровые требования к оперативной памяти, так и возможность добавлять в игровой процесс блоки нового типа.

Image3

Первое позволяет арендовать у провайдера cloud.timeweb.com тарифы подешевле, чем при выборе сервера Minecraft Vanilla. Второе заметно разнообразит игровой процесс. Единственный минус у решения заключается в заброшенном репозитории – никто его не обновляет с 2014 года, потому что разработчики проекта были включены в команду Mojang Studios и теперь работают над развитием официальных сервисов. 

SpigotMC

Общий недостаток предыдущих вариантов сервера в Minecraft – это отсутствие автоматизации. Из простенького мира, состоящего из однотипных кубиков, игра превратилась в увлекательную и весьма сложную забаву. Поэтому появление поддержки API в продукте SpigotMC стало своевременным. В качестве базы нового ядра была взята «заброшенная» разработка Bukkit. Ее переработали, внесли массу фишек для повышения производительности и надежности.

Image2

Единственный недостаток сервера Майнкрафт на ПК SpigotMC заключается в его официальной блокировке в Git-репозитории. Поэтому скачивать исходники придется при помощи специальной утилиты BuildTools. Она представляет собой инструмент, избавляющий от дистрибуции софта в скомпилированном виде. Благодаря самостоятельному исполнению процедуры, запреты от DMCA становятся бессмысленными.

PaperMC

Еще один действующий проект Servers Minecraft – PaperMC. В нем также основной фишкой стало наличие поддержки API, а это автоматически означает расширенные возможности по созданию или модернизации существующих плагинов. Формально разработка является форком от SpigotMC, но функционально она представляет собой «новый взгляд» на оптимизацию Minecraft. Помогает в развитии решения довольно развитое комьюнити, позволяющее оперативно решать вопросы.

Image5

Плагины, разработанные под Spigit в 99%, без доработок начинают работать на PaperMC. Обратная совместимость также возможна, ее желательно проверять на тестовом аккаунте. Отчасти это повлияло на то, что их причисляют к топу серверов Майнкрафт. Пользователи могут экспериментировать с обеими, не переживая, что понравившийся модуль будет недоступен. Но нужно учитывать, что официальной поддержки не будет, она распространяется только на официальные разработки внутри проекта.

Проблемы и решения

При создании нового сервера Майнкрафт нужно понимать, что архитектура приложения имеет ряд особенностей. Например, немалая часть решений, независимо от количества выделенных процессорных мощностей, для работы платформы будет использовать 1 ядро. Остальные останутся незадействованными (фактически простаивающими). Это стоит учитывать при аренде облачных ресурсов; в зависимости от ситуации важнее тактовая частота, а не многоядерность процессора, не влияющая на производительность.

Image4

Отдельный вопрос – объем оперативной памяти. Здесь нужно учитывать:

  1. Количество миров, открываемых одновременно.
  2. Размер каждого генерируемого виртуального пространства.
  3. Общее количество игроков, кому будет предоставлен доступ.

Плюс к перечисленному рекомендуется учитывать особенности работы Java-приложений. Они для комфортной работы всегда требуют определенного запаса оперативки. Например, если разработчик рассчитывает на потребление 8 Гбайт ОЗУ, лучше обеспечить программу объемом до 12 Гбайт, не меньше. Приведенные цифры весьма условны, зато хорошо отражают суть вопроса. Тем более, при аренде удаленного сервера тарифы позволяют резервировать ресурсы с приличным запасом.

Чтобы избежать проблем с запуском сервера Minecraft, стоит учитывать ряд правил:

  1. Потребление оперативки рекомендуется контролировать специальными программами вроде LagMeter. Они дают объективную картину в режиме реального времени.
  2. Стоит регулярно проверять наличие обновлений плагинов и устанавливать их. Разработчики работают над ускорением своих продуктов, устранением неполадок.
  3. Желательно все генерируемые карты ограничивать, например, при помощи плагина вроде WorldBorder. Такой подход снижает общую нагрузку на сервер.
  4. Есть смысл экспериментировать с новыми плагинами. И менять тяжеловесные модули на более легкие, с меньшими требованиями к процессору и оперативной памяти.

Приносят пользу и плагины для очистки дропа. Таким термином называют предметы, выпадающие при смерти моба (персонажа) или разрушении блоков. Чем больше скапливается несобранных или «оставленных на потом» дропов, тем больше системных ресурсов программа использует попусту. Для такой оптимизации Minecraft используют плагины NoLagg и McClean. Стоит просматривать статистику до их применения и после, чтобы выбрать оптимальный режим работы сервера.

Генерация карты блоков

Теперь об игровом процессе. При первом подключении к серверу новый персонаж автоматически появится на общей точке сбора (так называемый спаун). Это единственное место, координаты для которого генерируются сервером предварительно. Процедура выполняется на основании настроек в конфигурационных файлах серверной части приложения. Ключевой параметр здесь – дальность прорисовки объекта, измеряемая в чанках.

Image7

Один чанк – область карты размером 16х16 и высотой в 256 блоков. Сколько их нужно выделить, зависит от настроек сервера. И отчасти от его владельца, выбирающего параметры по собственному усмотрению. Процесс генерации точки появления игровых персонажей требует от сервера выделения существенных ресурсов, ведь все происходит динамически, с хранением данных в оперативной памяти, постоянным увеличением объема файла, содержащего карту миру.

И чем больше пользователей входит на сервер, тем выше потребность разобраться, как оптимизировать Minecraft. Новички часто отталкиваются от нагрузки при спауне всего одного игрока, максимум пары десятков. Но при входе тысячи пользователей сервер «упадет» без шансов выдержать нагрузку. В лучшем случае на момент массового респауна они будут наблюдать некоторые «тормоза», что тоже напрягает игроков.

Если значение TPS (Ticks per Second, тактов в секунду) упало ниже 20, сервер выкинет персонажей из мира по таймауту. Штатно один TPS равен 50 мс, а 1 секунда реального мира – 20 тактам игрового. Здесь все зависит от владельца сервера. Так, один из старейших ресурсов 2b2t (2builders2tools) спокойно «переваривает» карту с границей мира в 30 млн блоков. Ее объем достиг уже 8 Тбайт, и на этом рост, похоже, не ограничится.

Image6

Но не всем доступны столь огромные ресурсы, чтобы потянуть практически бесконечные миры. Решение проблемы одно – ограничить собственный мир конкретными координатами и сгенерировать карту заранее. Такой подход позволяет избежать нагрузки на сервер из-за отсутствия динамической генерации блоков, процессору достаточно считать уже существующий ландшафт. Заодно он дает возможность прогнозировать потребление оперативной памяти.

Оптимальный вариант – это воспользоваться плагином WorldBorder. Новичкам лучше создавать мир в виде окружности с центром на точке спауна. Выполняется это командой:

/wb set <радиус в блоках> spawn

Пересечь условную границу не получится, игровой персонаж будет отброшен на несколько блоков назад, если попытается пройти на «несуществующую территорию». Если встретится упрямый пользователь, который начнет целеустремленно пытаться выйти за грань карты, его автоматически перекинут на точку спауна.

Команда для предварительной генерации мира в соответствии с выбранной формой:

/wb fill

Стоит подтвердить ее выполнение при помощи:

/wb confirm

Процессор Intel Xeon Gold 6240 справляется с генерацией мира радиусом 5000 блоков примерно за 2 часа. Всего можно будет создать примерно 40 млрд блоков. При увеличении радиуса время возрастает соразмерно общему количеству генерируемых элементов. На весь период создания карты на сервере будет резко снижен показатель TPS, это нужно учитывать при наличии на нем активных игроков. Также стоит заранее выделить достаточное количество свободного места.

Так, на карту радиусом 5000 блоков уходит почти 2 Гбайт от объема дискового накопителя. Такие моменты напрямую влияют на выбор тарифа при аренде облачных ресурсов. Версия плагина особо не играет роли, хоть он и разработан для версии Minecraft 1.14. Пока случаев несовместимости не было зарегистрировано, можно экспериментировать без ограничений. Полный список команд для WorldBorder приведен на официальном форуме плагина.

Проблемные блоки

Существует еще один момент, который необходимо предусмотреть при подборе конфигурации под сервер и решении вопроса, как оптимизировать Майнкрафт. Это динамическая генерация блоков уже внутри рабочей карты. Если выпадение предметов особой нагрузки не дает, то на массовые взрывы «виртуальной взрывчатки» (той самой TNT) уходит много ресурсов. Все дело в том, что при ее активации начинает действовать сила гравитации.

Image9

Она распространяется на соседние блоки, взорванные бомбой. Их разлет рассчитывается сразу по мере распространения взрывной волны. Заодно генерируется целый пакет предметов, которые вываливаются из разрушенных блоков. Задача крайне ресурсоемкая, поэтому стоит проверить заранее, как реагирует сервер на нагрузку (лучше по графику загрузки процессора-оперативки). И уже исходя из этого выбирать подходящие параметры сервера для Майнкрафта.

Если для текущей конфигурации нагрузка чрезмерная, возможно, лучше отказаться от блоков типа TNT. То же относится к кристаллам края. Кристаллы, в отличие от взрывчатки, детонируют сразу по всей площади, и при единовременном взрыве большого количества способны уронить слабый сервер, чего легко избежать, например, при использовании плагина WorldGuard. Он работает в паре с WorldEdit и ставится после него. 

Заключение

Вот мы и завершили краткий обзор оптимизации серверов Майнкрафт, их «узких» мест. Особой сложности при оптимизации ресурсов нет, но важно правильно спланировать максимальное количество игроков на один хост. И заранее создать карты, если это укладывается в стратегию продвижения. Отключать популярные блоки TNT лучше не стоит, их отсутствие может повлиять на привлекательность ресурса, особенно молодого.

Telegram
VK
Скопировать ссылку

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону