Перейти к основному контенту

Почему важно учитывать нагрузку ферм на сервере?

Эта статья предназначена для тех, кто не слишком углубляется в технические детали нагрузки ферм. Особенно она будет полезна тем, кто любит строить, не задумываясь о том, почему что-то работает именно так или почему нужно делать иначе.

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

Чтобы комфортно играть всем на сервере при 20 TPS, нужно поддерживать MSPT ниже 50. Посмотреть MSPT в игре, можно в табе нажав на клавишу TAB.

<потом будет скрин>tablist.png

Почему важно соблюдать ограничения на сервере?

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

Что такое TPS и MSPT?

TPS и MSPT — это ключевые показатели производительности Minecraft-сервера.

TPS (Ticks Per Second) измеряет, сколько игровых тиков сервер обрабатывает за одну секунду. В идеальных условиях TPS всегда должно быть 20 — это значит, что сервер работает без задержек и обрабатывает игровые события с максимальной скоростью.

MSPT (Milliseconds Per Tick) показывает, сколько времени уходит на обработку одного игрового тика в миллисекундах. Каждый тик должен обрабатываться за 50 миллисекунд или меньше, чтобы поддерживать TPS на уровне 20. Если MSPT превышает 50, сервер начинает замедляться, что приводит к лагам и снижению TPS.

Эти показатели помогают понять, насколько эффективно работает сервер и как на его производительность влияют различные элементы, такие как фермы, механизмы и скопления мобов.

Что такое FPS?

FPS (Frames Per Second) — количество кадров в секунду, которое зависит от конфигурации ПК и оборудования игрока. Этот параметр может значительно варьироваться в зависимости от мощности графической карты, процессора и других факторов на стороне клиента.

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

Примеры и тесты из практики

В этой статье мы скорее всего не будем углубляться в технические детали или сложные объяснения. Вместо этого приведем конкретные примеры и результаты тестов, проведенных в игровом мире. Это поможет лучше понять, как различные механики и постройки влияют на сервер, и почему важно учитывать их воздействие.

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

Описание тестового стенда

Для проверки производительности и влияния различных механик на сервер использовался тестовый стенд. Он включает в себя следующую конфигурацию:

  • CPU: AMD Ryzen 9 7950X (16/32, 4.5-5.7GHz)
  • Кулер: Dark Rock Pro 4
  • Материнская плата: MSI PRO B650-P WIFI
  • Оперативная память: Kingston FURY 32 GB DDR5 6000 MHz Beast EXPO x2 (всего 64GB)
  • GPU: GIGABYTE GeForce RTX 4070 WINDFORCE OC 12G
  • Блок питания: ASUS ROG-STRIX-850G
  • Накопитель: Samsung 980 PRO 500 GB
  • Дисплей: LG UltraGear 32" (165Hz) 
  • Система: Windows 11 Pro 24H2

Настройки мира:

  • Minecraft: 1.21.1
  • Мод-лоадер: Fabric 0.16.9

Используемые моды:

  • carpet-extra-1.21-1.4.148 — Дополнение к основному моду
  • fabric-api-0.110.0+1.21.1 — API для загрузчика
  • fabric-carpet-1.21-1.4.147+v240613 — Основной мод для измерения нагрузок
  • sodium-fabric-0.6.0+mc1.21.1 — Базовая оптимизация
  • worldedit-mod-7.3.8 — Базовый мод для создания структур/ферм

Настройка Sodium:

Sodium_settings_all.png

Хотя тестовый стенд отличается от реальной конфигурации сервера, его основная цель — предоставить ориентировочные данные. Мы не стремимся к идеальной точности, а фокусируемся на получении приблизительных цифр, которые помогают оценить общее влияние игровых механик на TPS и MSPT. Это позволяет выявить ключевые проблемы и принять меры для оптимизации.

Несмотря на то, что сервер работает на ядре Paper, а тесты проводятся на Fabric, полученные данные будут полезны. Fabric приближен к ванильной механике, а Paper включает множество оптимизаций. Учитывая эти нюансы, тестовый стенд все же позволит получить достаточно близкие к реальности результаты.

При проведении тестов будут оцениваться FPS, TPS и MSPT

Создание мира

Мир был создан абсолютно ванильным образом с использованием стандартных настроек на первой и второй вкладке. Третья вкладка осталась без изменений.

World_create_all.png

Первый взгляд

На первом взгляде, сразу после входа в мир, не будет никаких ферм, нагрузок или мобов. Это чистая, пустая игровая среда, которая позволяет нам увидеть начальное состояние мира без влияния каких-либо механик или построек, создающих дополнительную нагрузку на сервер.

world.webp

Основные команды
  • /profile health 7200 — carpet команда, которая позволяет мониторить состояние здоровья сервера на протяжении 7200 тиков.
  • /tick sprint 7200 — ванильная команда для активации ускорения времени, выполняемая на протяжении 7200 тиков, чтобы ускорить процесс тестирования.
  • /tick query — ванильная команда, которая позволяет получить информацию о текущем состоянии тиков.
Дополнительные команды:

Для создания дополнительных виртуальных игроков

  • /tp 500 70 500 & /player Dalandis spawn in creative
  • /tp -500 70 -500 & /player IronCAT_ spawn in creative
  • /tp 500 70 -500 & /player SoftPanda3 spawn in creative
  • /tp -500 70 500 & /player _BaXy_ spawn in creative

Основной аккаунт для тестов и скриншотов — prestig9110, который будет находиться в точке /tp 0 86 0.

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

Для тестов, которые проводятся в воздухе, будет использоваться высота 270 блоков, в то время как для тестов на земле — высота 70 блоков.

Тест #1: Стандартная прогрузка с несколькими игроками
  • Проверка нагрузки с 5 игроками на высоте 70 блоков. Игроки в разных точках. 

test_1.1.png

  • Проверка нагрузки с 5 игроками на высоте 270 блоков. Игроки в разных точках. 

test_1.2.png

  • Проверка нагрузки с 5 игроками на высоте 270 блоков. Все игроки в одной точке.

test_1.3.png

  • Проверка нагрузки с 5 игроками на высоте 270 блоков. Все игроки в одной точке.

test_1.4.png

Нагрузка на сервер зависит от расстояния между игроками и их положения. Когда игроки находятся далеко друг от друга, каждый из них загружает в среднем 70 враждебных мобов и +-30/35 мирных мобов, что суммарно для 5 игроков даёт 350 враждебных и +-175 мирных мобов. Если все игроки находятся в одной точке, количество загружаемых мобов делится между ними, и сервер грузит только одно количество мобов на всех, например, +-70 враждебных мобов на 5 игроков.

Аналогичная ситуация возникает и с чанками. При радиусе симуляции в 8 чанков, для одного игрока серверу нужно обработать 256 чанков. Если игроки распределены по разным точкам, то обрабатывается 256 * 5 = 1280 чанков. Однако если все игроки находятся в одной точке, они используют одни и те же чанки, и серверу нужно обработать только 256-280 чанков, так как они не могут точно стоять в одной точке. 

Если игроки находятся в воздухе, это также влияет на нагрузку. В воздухе меньше блоков, с которых могут появляться мобы, и так как вокруг в 80% пустота, нагрузка на сервер снижается. В отличие от земли, где мобы могут спауниться в большем количестве, в воздухе их количество ограничено. Таким образом, небольшим плюсом является строительство в воздухе или выкапывание большой ямы (например, 256x256), что снижает нагрузку на сервер.

В данном примере нет смысла акцентировать внимание на FPS, так как основная нагрузка идёт на сервер.

Тест #2: