Почему важно учитывать нагрузку ферм на сервере?
Эта статья предназначена для тех, кто не слишком углубляется в технические детали нагрузки ферм. Особенно она будет полезна тем, кто любит строить, не задумываясь о том, почему что-то работает именно так или почему нужно делать иначе.
Важно помнить что сервер — это не одиночная игра. В одиночной игре вы можете создавать лаги только для себя, и это никому не помешает. На сервере же ваша ферма или большое количество мобов могут ухудшить игровой опыт других игроков. Это не только раздражает, но и снижает производительность всего сервера. Поэтому существуют ограничения на использование ферм и количество мобов.
Чтобы комфортно играть всем на сервере при 20 TPS, нужно поддерживать MSPT ниже 50. Посмотреть MSPT в игре, можно в табе нажав на клавишу TAB.
<потом будет скрин>
Почему важно соблюдать ограничения на сервере?
Соблюдение ограничений на сервере — ключ к стабильной и комфортной игре для всех участников. Когда фермы или скопления мобов создают чрезмерную нагрузку, это не только снижает производительность сервера, но и ухудшает игровой опыт других игроков. Ограничения основаны на многолетнем опыте администрирования и наблюдениях, позволяя избежать проблем с производительностью, такими как лаги или краши, и поддерживать стабильную работу сервера.
Что такое 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:
Хотя тестовый стенд отличается от реальной конфигурации сервера, его основная цель — предоставить ориентировочные данные. Мы не стремимся к идеальной точности, а фокусируемся на получении приблизительных цифр, которые помогают оценить общее влияние игровых механик на TPS и MSPT. Это позволяет выявить ключевые проблемы и принять меры для оптимизации.
Несмотря на то, что сервер работает на ядре Paper, а тесты проводятся на Fabric, полученные данные будут полезны. Fabric приближен к ванильной механике, а Paper включает множество оптимизаций. Учитывая эти нюансы, тестовый стенд все же позволит получить достаточно близкие к реальности результаты.
При проведении тестов будут оцениваться FPS, TPS и MSPT
Создание мира
Мир был создан абсолютно ванильным образом с использованием стандартных настроек на первой и второй вкладке. Третья вкладка осталась без изменений.
Первый взгляд
На первом взгляде, сразу после входа в мир, не будет никаких ферм, нагрузок или мобов. Это чистая, пустая игровая среда, которая позволяет нам увидеть начальное состояние мира без влияния каких-либо механик или построек, создающих дополнительную нагрузку на сервер.
Основные команды
/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 блоков. Игроки в разных точках.
- Проверка нагрузки с 5 игроками на высоте 270 блоков. Игроки в разных точках.
- Проверка нагрузки с 5 игроками на высоте 270 блоков. Все игроки в одной точке.
- Проверка нагрузки с 5 игроками на высоте 270 блоков. Все игроки в одной точке.
Нагрузка на сервер зависит от расстояния между игроками и их положения. Когда игроки находятся далеко друг от друга, каждый из них загружает в среднем 70 враждебных мобов и +-30/35 мирных мобов, что суммарно для 5 игроков даёт 350 враждебных и +-175 мирных мобов. Если все игроки находятся в одной точке, количество загружаемых мобов делится между ними, и сервер грузит только одно количество мобов на всех, например, +-70 враждебных мобов на 5 игроков.
Аналогичная ситуация возникает и с чанками. При радиусе симуляции в 8 чанков, для одного игрока серверу нужно обработать 256 чанков. Если игроки распределены по разным точкам, то обрабатывается 256 * 5 = 1280 чанков. Однако если все игроки находятся в одной точке, они используют одни и те же чанки, и серверу нужно обработать только 256-280 чанков, так как они не могут точно стоять в одной точке.
Если игроки находятся в воздухе, это также влияет на нагрузку. В воздухе меньше блоков, с которых могут появляться мобы, и так как вокруг в 80% пустота, нагрузка на сервер снижается. В отличие от земли, где мобы могут спауниться в большем количестве, в воздухе их количество ограничено. Таким образом, небольшим плюсом является строительство в воздухе или выкапывание большой ямы (например, 256x256), что снижает нагрузку на сервер.
В данном примере нет смысла акцентировать внимание на FPS, так как основная нагрузка идёт на сервер.