Blog · blog
Лучшие моды для улучшения производительности Minecraft-серверов
Задержка на стороне сервера — это другая проблема, чем FPS клиента. Настройка JVM флагов, предварительно сгенерированные чанки и разумная дальность прорисовки решают большую часть проблем.
Задержки на сервере — это совсем другое явление, чем задержки на стороне клиента.
Руководства для клиентов говорят об FPS: ваша собственная GPU отрисовывает кадры. Производительность сервера — это совершенно другая метрика, тики в секунду, сколько раз в секунду сервер может выполнить свой полный игровой цикл. Когда TPS падает ниже 20, каждый подключенный игрок ощущает это как «резиновый эффект», задержку попаданий и мобов, отстающих от их фактического положения, независимо от того, насколько мощный ПК у отдельного игрока. Решение этой проблемы полностью лежит на стороне сервера.
Это различие важно, потому что эти две проблемы постоянно смешиваются. Игрок с 300 FPS локально все равно почувствует сервер, работающий со скоростью 12 TPS, и никакие изменения клиентских модов это не изменят. Если вы управляете сервером, особенно оживленным лобби мини-игры с постоянно перезагружаемыми аренами BedWars или SkyWars, именно эти исправления приносят наибольшую отдачу от ваших усилий.
Выберите серверное программное обеспечение, разработанное для высокой нагрузки.
Стандартное серверное программное обеспечение Minecraft и неоптимизированная настройка Spigot практически все выполняют на одном потоке. Paper и форки, такие как Purpur, перестраивают большие части этого конвейера для работы асинхронно и многопоточно, а также поставляются с длинным списком оптимизаций по умолчанию, которых никогда не было в ванильной версии. Это самый большой рычаг воздействия, доступный до того, как вы притронетесь к какому-либо плагину или настройке.
Бумага
Стандартный современный выбор. Асинхронная загрузка фрагментов, оптимизация отслеживания сущностей и обширный набор настроек paper.yml, которые большинство администраторов никогда полностью не изучат.
Пурпур
Бумажная вилка с дополнительными элементами управления и переключателями игровых настроек. Стоит того, если вам нужен больший контроль, не покидая экосистемы Paper.
Ваниль и стандартный Spigot
Функционально, но реальная производительность не раскрывается при работе с чем-то большим, чем небольшой сервер с низкой нагрузкой.
Настраивайте флаги JVM, а не только конфигурацию сервера
Серверы Minecraft работают внутри Java Virtual Machine, и настройки сбора мусора JVM по умолчанию никогда не были оптимизированы для конкретного шаблона использования памяти Minecraft. Флаги Aikar — это широко используемый, публично документированный набор флагов запуска JVM, которые настраивают сборщик мусора именно для этого шаблона, и они значительно сокращают частоту и продолжительность зависаний, связанных со сбором мусора, при реальной нагрузке игроков.
Предварительно сгенерируйте свой мир до того, как игроки его увидят
Одной из самых распространенных причин внезапного падения TPS является генерация сервером новых чанков в реальном времени по мере того, как игроки исследуют необлаянные территории. Эта работа по генерации напрямую конкурирует со всем остальным, что сервер пытается сделать в тот же тик. Такой инструмент, как Chunky, предварительно генерирует чанки заранее, в контролируемом и ограниченном режиме, чтобы игроки, исследующие позже, никогда не вызывали этот скачок.
Для сети мини-игр это имеет меньшее значение для самих арен, которые обычно статичны и малы, чем для любого открытого хаба или лобби-мира, где игроки могут бродить.
Ограничьте дальность просмотра и дальность симуляции
Эти два параметра контролируют, сколько мира сервер должен держать загруженным и симулировать вокруг каждого игрока, и это настройки, которые операторы чаще всего оставляют по умолчанию слишком высокими для их количества игроков и оборудования.
| Настройка | Что контролирует | Распространенная ошибка |
|---|---|---|
| Дальность просмотра | Сколько чанков отправляется каждому клиенту | Оставляется по умолчанию слишком высоким для количества игроков |
| Дальность симуляции | Как далеко мобы, блоки и редстоун фактически симулируют | Устанавливается равной дальности просмотра, когда это не требуется |
Расстояние симуляции обычно первое, что стоит сократить. Игрокам не требуется симуляция мобов и редстоуна на таком же расстоянии, как им требуется отрисовка чанков, и снижение этого параметра позволяет восстановить реальное время тика с гораздо меньшим влиянием на ощущения от игры.
Профилируйте, прежде чем гадать
Попытки угадать причину лагов отнимают время. Профайлер, такой как spark, точно показывает, куда тратится время сервера, будь то конкретный плагин, генерация мира, обработка сущностей или что-то другое, вместо того, чтобы вы случайным образом меняли настройки в надежде на улучшение.
Установите Paper или Purpur
Сначала перейдите с ванильной или стандартной версии Spigot. Это откроет все оптимизации, перечисленные ниже.
Примените флаги Aikar к вашему скрипту запуска
Скопируйте набор флагов, указанный в документации, в команду запуска вашего сервера и перезапустите его. Это одноразовое изменение, которое принесет постоянную пользу.
Предварительно создайте свой мир с Chunky
Запустите это в часы низкой нагрузки, чтобы игроки, исследующие мир, никогда не запускали генерацию чанков в реальном времени позже.
Установите дальность обзора и дальность симуляции намеренно
Сопоставьте их с вашим фактическим количеством игроков и аппаратным обеспечением, а не оставляйте настройки платформы по умолчанию.
Профиль с искрой под реальной нагрузкой
Запишите отчёт в часы пик и устраните именно то, на что он указывает, а не догадывайтесь.
Производительность на стороне сервера — это не вся история.
Поддержание стабильного TPS — это только половина опыта. Каждый игрок по-прежнему отрисовывает этот стабильный сервер на своем компьютере, и самый надежный сервер не поможет тому, чей собственный клиент задыхается из-за рендеринга, памяти или несовместимого шейдерпака. Если вы управляете сетью BedWars или SkyWars и уже проделали вышеуказанную работу, то вторая половина плавного опыта для ваших игроков — это то, что происходит на их стороне. Именно этот пробел создан для устранения Terminus, настроенная производительность клиента для соответствия работе сервера, которую вы уже выполнили.
FAQ
Нет. Модификации клиента изменяют то, что происходит на компьютере игрока. Задержки сервера существуют в цикле тиков сервера, и только изменения на стороне сервера, программное обеспечение, флаги, плагины, настройки мира, до них доходят.
Серверное программное обеспечение. Переход с обычной или неоптимизированной версии Spigot к Paper или Purpur открывает возможность использования асинхронной и многопоточной работы, на которой основаны многие другие оптимизированные сборки.
Да, особенно в сборщике мусора Minecraft, который стандартные настройки обрабатывают плохо при реальной нагрузке. Они не исправят по-настоящему недостаточный сервер, но на достаточном оборудовании заметно сгладят зависания, связанные с GC.
Проверьте TPS сервера с помощью команды вроде /tps или плагина, например, spark. Если TPS держится около 20, а вы всё равно чувствуете рывки, проблема, скорее всего, в вашем клиенте или соединении, а не на сервере.
Получить Terminus
Tuned client performance to match the server work you already did.