Оптимизация TPS на Minecraft-сервере: полный гайд

Оптимизация TPS на Minecraft-сервере: полный гайд

Что такое TPS и почему это важно

TPS (Ticks Per Second) - это пульс вашего Minecraft-сервера. Каждый тик - это один цикл обновления игрового мира: движение мобов, рост растений, обработка редстоуна, физика блоков, регистрация действий игроков. В идеале сервер выполняет 20 тиков в секунду, то есть каждый тик занимает не более 50 миллисекунд.

Когда TPS падает ниже 20, всё начинает тормозить. Мобы двигаются рывками, блоки ломаются с задержкой, игроки жалуются на "лаги сервера". При TPS 15 игра уже ощутимо неприятна. При TPS 10 и ниже сервер фактически непригоден для игры.

Важно понимать разницу между TPS и пингом. Пинг - это задержка сети между игроком и сервером. TPS - это производительность самого сервера. У игрока может быть идеальный пинг в 10ms, но если TPS сервера 12, лаги всё равно будут. И наоборот: сервер может держать стабильные 20 TPS, но игрок с плохим интернетом будет лагать из-за высокого пинга.

Главные причины низкого TPS

Прежде чем оптимизировать, нужно понять, что именно нагружает сервер. Вот самые частые причины.

Слишком много сущностей

Каждый моб, дропнутый предмет, стрела, лодка, вагонетка - это сущность, которую сервер обрабатывает каждый тик. Ферма с сотнями коров в одном загоне убивает TPS быстрее, чем что-либо другое. Дропнутые предметы, которые никто не подбирает, копятся и нагружают сервер.

Тяжёлые плагины

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

Загрузка чанков

Генерация новых чанков - одна из самых затратных операций. Когда несколько игроков одновременно исследуют новые территории, сервер должен генерировать десятки чанков в секунду. Это колоссальная нагрузка.

Редстоун

Сложные редстоун-механизмы, особенно часы (clock circuits) и большие системы, генерируют тысячи обновлений блоков за тик. Один игрок с бесконечным редстоун-часами может положить весь сервер.

Размер мира

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

Оптимизация Paper.yml / paper-global.yml

Paper (и его форки вроде Purpur) дают огромное количество настроек для оптимизации. Вот ключевые параметры.

Для Paper 1.19.4+ (paper-global.yml и paper-world-defaults.yml)

# paper-world-defaults.yml

# Уменьшаем дистанцию активации мобов
entities:
  spawning:
    despawn-ranges:
      monster:
        hard: 96
        soft: 28
      creature:
        hard: 96
        soft: 28
      ambient:
        hard: 64
        soft: 28

# Ограничиваем спавн мобов
spawn-limits:
  monsters: 50      # ванилла: 70
  animals: 8        # ванилла: 10
  water-animals: 3  # ванилла: 5
  ambient: 1        # ванилла: 15

# Оптимизация чанков
chunks:
  max-auto-save-chunks-per-tick: 8
  delay-chunk-unloads-by: 10s
  entity-per-chunk-save-limit:
    experience_orb: 16
    arrow: 8
    item: 32

# Ограничение редстоуна
redstone-implementation: ALTERNATE_CURRENT

Ключевые настройки Purpur

Если вы используете Purpur (форк Paper с дополнительными оптимизациями):

# purpur.yml
settings:
  dont-send-useless-entity-packets: true

world-settings:
  default:
    mobs:
      zombie:
        aggressive-towards-villager-when-lagging: false
      villager:
        lobotomize:
          enabled: true  # отключает сложный AI у застрявших жителей

Аудит плагинов: находим тяжёлые плагины

Слепая оптимизация конфигов не поможет, если у вас один плагин сжирает 60% серверного тика. Нужно найти виновника.

Spark - лучший инструмент профилирования

Установите плагин Spark. Это самый точный профайлер для Minecraft.

/spark profiler start    # Начать профилирование
/spark profiler stop     # Остановить и получить отчёт
/spark tps               # Текущий TPS
/spark health            # Общее состояние сервера

Spark покажет, какие плагины и какие конкретно операции занимают больше всего времени. Ищите плагины, которые занимают больше 10-15% серверного тика.

Timings (встроенный в Paper)

/timings on      # Включить сбор данных
# Подождите 5-10 минут
/timings paste   # Получить ссылку на отчёт

Отчёт Timings покажет каждый плагин и каждый обработчик событий с точным временем выполнения. Красные строки - это проблемные места.

Что делать с тяжёлым плагином

Если нашли плагин, который тормозит сервер, у вас три варианта: заменить его на более оптимизированный аналог, настроить его (увеличить интервалы обновления, отключить ненужные функции), или удалить, если он не критичен.

View Distance и Simulation Distance

Эти два параметра оказывают огромное влияние на производительность.

View Distance - сколько чанков вокруг игрока отправляется клиенту для отрисовки. Simulation Distance - сколько чанков вокруг игрока реально обрабатываются сервером (мобы, редстоун, рост растений).

# server.properties
view-distance=7           # ванилла: 10
simulation-distance=4     # ванилла: 10

Снижение simulation-distance с 10 до 4 - это сокращение обрабатываемой площади более чем в 6 раз. Эффект на TPS колоссальный.

Если игрокам важен красивый вид, можно держать view-distance повыше (7-8), а simulation-distance низким (4-5). Далёкие чанки будут видны, но не будут нагружать сервер.

Прегенерация мира

Генерация чанков на лету - дорогая операция. Решение: сгенерировать все чанки заранее.

Плагин Chunky делает это эффективно:

/chunky radius 5000       # Радиус в блоках от центра
/chunky start             # Начать генерацию
/chunky pause             # Пауза (если нужна)
/chunky continue          # Продолжить

Генерируйте мир, когда на сервере мало игроков, или вообще в оффлайне. После прегенерации установите границу мира, чтобы игроки не уходили за пределы сгенерированной территории:

/worldborder set 10000    # Граница мира 10000 блоков

DDoS-атаки и TPS: скрытая связь

Вот о чём редко говорят в гайдах по оптимизации TPS: DDoS-атаки напрямую убивают производительность сервера, даже если не роняют его полностью.

Как атака влияет на TPS

При DDoS-атаке на Minecraft-сервер происходит следующее. Тысячи поддельных подключений забивают сетевой стек. Сервер тратит процессорное время на обработку фальшивых пакетов вместо игровых тиков. Бот-атаки создают сотни фейковых игроков, каждый из которых - нагрузка на сервер. Даже если атака не "ложит" сервер полностью, TPS проседает до 10-15, и игроки испытывают жуткие лаги.

Вы можете идеально настроить Paper, вычистить тяжёлые плагины, прегенерировать мир, но одна бот-атака обнулит все ваши усилия.

Как мы решаем эту проблему

В MineGuard мы фильтруем вредоносный трафик до того, как он достигнет вашего сервера. Наш фильтр отсекает ботов, фальшивые подключения и мусорные пакеты на сетевом уровне. Ваш сервер получает только легитимный трафик от настоящих игроков.

Результат: даже во время активной DDoS-атаки ваш сервер держит стабильные 20 TPS, потому что вся нагрузка от атаки ложится на наш фильтр, а не на ваше железо. Мы видели случаи, когда серверы с идеально настроенным Paper проседали до 5 TPS при бот-атаках, а после подключения нашей защиты держали стабильные 19.9-20.0 даже под атакой.

Мониторинг TPS: держим руку на пульсе

Оптимизация - это не разовое действие. Нужно постоянно следить за состоянием сервера.

Spark для постоянного мониторинга

/spark tps                    # Текущий TPS (1m, 5m, 15m)
/spark health                 # CPU, память, TPS в одном отчёте
/spark profiler start --timeout 300  # Профилирование на 5 минут

Запускайте профилирование в часы пиковой нагрузки, чтобы поймать реальные проблемы.

Автоматические алерты

Настройте уведомления о падении TPS. Многие панели управления (Pterodactyl, AMP) поддерживают это из коробки. Если у вас кастомная настройка, используйте плагин, который отправляет webhook в Discord при падении TPS ниже порога.

На что смотреть

  • TPS 19.5-20.0 - отлично, сервер работает идеально
  • TPS 18.0-19.5 - нормально, незначительные просадки
  • TPS 15.0-18.0 - нужна оптимизация, игроки начинают замечать лаги
  • TPS ниже 15.0 - серьёзные проблемы, нужно срочно разбираться

Чек-лист оптимизации

Подведём итог. Пройдитесь по этому списку:

  1. Обновите ядро до Paper или Purpur последней версии
  2. Настройте paper-world-defaults.yml: лимиты мобов, despawn-ranges, ALTERNATE_CURRENT
  3. Установите simulation-distance 4-5, view-distance 7-8
  4. Прегенерируйте мир через Chunky и установите границу
  5. Проведите аудит плагинов через Spark - найдите и замените тяжёлые
  6. Ограничьте сущности: лимиты на фермы, автоочистка дропа
  7. Подключите DDoS-защиту, чтобы атаки не влияли на TPS
  8. Настройте мониторинг TPS через Spark
  9. Регулярно проверяйте Timings-отчёты после обновлений плагинов

TPS-оптимизация - это комплексный процесс. Нет одной волшебной настройки, которая всё исправит. Но если системно пройтись по каждому пункту, разница будет огромной. Серверы, которые стабильно держат 20 TPS, удерживают игроков. Серверы с лагами - теряют их.


Sunucunuzu DDoS Saldırılarından Koruyun

5 dakikada kurulumla ücretsiz koruma. 1 TB bant genişliği dahil.

Ücretsiz Deneyin


İlgili Makaleler