A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

minecraft / optimization.md

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Cannot retrieve contributors at this time
104 lines (79 sloc) 16.4 KB

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents Copy raw contents

Copy raw contents

Майнкрафт, особенно с модами — очень требовательная к ресурсам ПК игра, анон. Если у тебя слабая печка, то ты скорее всего окажешься не доволен производительностью игры. В этой статье специально для тебя были собраны все возможные рекомендации по оптимизации Minecraft, с которыми в кубач можно будет поиграть даже на некропк. Впрочем, пользуйся вдумчиво и аккуратно: некоторые из них могут оказать обратный эффект и лишь усугубить ситуацию.

Эти Моды Повысят Твой ФПС в Майнкрафте | Майнкрафт Открытия

Оптимизация аргументов запуска

Аргументы запуска (JVM флаги) — отличный способ облегчить жизнь твоему сборщику мусора и в целом начать использовать ресурсы комьютера более эффективно. Учти, что некоторым флагам может понадобиться полная версия джавы, т. е. JDK . (или серверная JRE )

  • Оптимизация сборщика мусора G1GC (Aikar’s arguments): клик
  • Оптимизация аргументов для клиента: клик¹²³
  • Матчасть про JVM флаги на хабре: клик

Флаги, не описанные в статьях выше:

  • -XX:+UseStringDeduplication — GC будет пытаться экономить память, уничтожая повторяющиеся строки, в обмен на большее использование процессора из-за большего объёма сканируемой памяти. Потенциально может cэкономить до 13,5% оперативной памяти.
  • -XX:-DontCompileHugeMethods — отключает лимит на длинну методов, которые JVM может скомпилировать. Пруфов пользы и вреда нет.
  • -server — меняет некоторые дефолтные значения JVM флагов и использует другой компилятор байткода, применяющий больше оптимизаций при компиляции. ( источник )
  • -Dorg.lwjgl.util.NoChecks=true — отключает state tracking и дополнительные проверки во время игры, за счёт чего даёт немного производительности.
  • -Dforge.forceNoStencil=true — у некоторых людей лечит лаги при загрузке чанков на 1.7.10. ( источник )

Оптимизация с помощью модов

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

АЛЯРМ. Существует более полный и частообновляемый списочек оптимизационных модов для актуальных версий игры: клик (ещё у этого автора имеется куча другой полезной информации, можешь пошариться у него в проектах, если интересно)

Мод Описание
OptiFine Расширенные настройки графики, оптимизация для некропк, шейдеры для йобапк.
Phosphor Заметные оптимизации светового движка.
Lithium Значительные бусты физики, загрузки чанков, ИИ мобов, редстоуна, etc.
Sodium ВНЕЗАПНО релизнулся. По заявлению автора, бустит фпс в 400%, что правда.
OptiFabric Без этой штучки фабрик и оптифайн не дружат.
FastFurnace и FastWorkbench Кэширование рецептов верстака и печки, что способствует экономии процессорного времени. Эффект заметен лишь на больших серверах с множеством баз. В сингле вряд ли почувствуется.

TIP: В новейших версиях (1.14+) появился новый мод-лоадер: Fabric . Он смог составить конкуренцию всем привычному Forge, что является показателем и огромным достижением, и к фабрику уже тоже имеются оптимизационные моды.

🖥️ Как ПОВЫСИТЬ фпс в Майнкрафт на Слабом Пк

Мод Описание
OptiFine Расширенные настройки графики, оптимизация для некропк, шейдеры для йобапк.
Phosphor Заметные оптимизации светового движка.
VanillaFix Различные багфиксы, а ещё игра не будет закрываться из-за крашей. Musthave!
FoamFix Значительная экономия ОЗУ посредством хитрого шаманства.
AI Improvements Оптимизация ИИ мобов путём кастрирования патфайндинга.
Surge Ускорение загрузки игры и пара багфиксов.
Multithreaded Noise Многоядерная генерация перлин нойза; чем больше ядер у процессора — тем лучше.
Performant Различные оптимизации патфайндинга, оптимизация мобов (и энтитей в целом).
Unloader Более агрессивная выгрузка измерений, что в теории фиксит утечки памяти.
TexFix Экономия памяти при использовании детализированных ресурспаков. (если не используешь их, мод тебе не нужен.
BetterFps Оптимизация рендеринга путём повышения эффективности sin() и cos() функций. (этим по сути дублирует функционал OptiFine, но у мода есть и уникальные фичи, поэтому он тут.
Chunk-Pregenerator Быстрая прегенерация чанков мира в определённом радиусе, очень спасает от лагов во время путешествий в неизученные места. А ещё имеет няшный интерфейс и даже умеет в ретроген!
FastFurnace и FastWorkbench Кэширование рецептов верстака и печки, что способствует экономии процессорного времени. Эффект заметен лишь на больших серверах с множеством баз. В сингле вряд ли почувствуется.
Мод Описание
OptiFine Расширенные настройки графики, оптимизация для некропк, шейдеры для йобапк.
BetterFps Оптимизация рендеринга путём повышения эффективности sin() и cos() функций. Дублирует функционал OptiFine, но есть и уникальные фичи.
Chunk-Pregenerator Позволяет заранее генерировать чанки мира, чем спасает от лагов во время путешествий в неизученные места. А ещё имеет няшный GUI и даже умеет в ретроген. (На 1.7.10-версию GregoriousT советует этот патч для ваниллы и этот патч, если установлен Forge Multipart, чтобы избежать крашей во время прегенерации. Источник.
FastCraft Много разных ощутимых оптимизаций. С OptiFine работает только последняя версия, в которой, ради совместимости с оптифайном, чуть порезали оптимизаций. Так что, если не пользуетесь оптифайном, выбирайте предпоследнюю версию.
Thaumic Fixer Фиксит лаги во время сканирования таумометром в Thaumcraft. Требует, очевидно, Thaumcraft. Используйте на свой страх и риск, ведь в комментариях к моду пишут о множестве проблем и багов.

TIP: Некоторые моды имеют возможность отключить особо тяжёлый функционал, и снизив тем самым нагрузку на ПК.
Например, в конфиге Lycanites Mobs есть опции Disable Model Alpha и Model Multipass, которые облегчат жизнь твоему ПК, порезав рендер моделек ликанитов и альфа-канал. А разработчик Twilight Forest в конфиге мода вообще отвёл отдельную секцию для настроек производительности. Подобное снисхождение для обладателей некропекарен имеется во многих модах, анон, не ленись читать конфиги!

Обновление библиотек старых версий

Если ты играешь на версиях до примерно 1.12.2, то для повышения производительности и исправления багов стоит обновить библиотеки, которые использует майнкрафт.

На официальной вики майнкрафта есть такой гайд, но в новых майнкрафтах используется последний nightly билд lwjgl, а не который по ссылке в вики. Ночной билд можно найти по этой ссылке, а также, помимо путей из вики, части lwjgl лежат в .minecraft/libraries/org/lwjgl/lwjgl .

Также можно обновить vecmath, который лежит в .minecraft/libraries/java3d/vecmath .

Отключение логов

xml version=»1.0″ encoding=»UTF-8″?> Configuration status=»ERROR» packages=»com.mojang.util»> Loggers> Root level=»OFF» additivity=»false»> Root> Loggers> Configuration>

Читайте также:  Как создать учетную запись в Майнкрафте

Ram-диск

Если у тебя ещё остаётся оперативная память, после запуска майнкрафта, ты можешь перенести мир на ram-диск. Также я слышал слух, про то, что имеет смысл перенести JVM на рамдиск и пользуюсь этим советом, но доказательств пользы у меня нет.

TIP: Не пользуйся фичей, если собираешься прегенерировать чанки! Оперативная память закончится моментально. Сейв, с оверворлдом, прогруженным на радиус ~300 чанков, запросто съедает больше гигабайта места! И в целом ей стоит пользоваться, только если после запуска майнкрафта и всего, нужного вам во время игры, у вас остаётся гигабайт-другой оперативки: если вы выделите недостаточно места на рамдиске под мир, то потеряете часть своего драгоценного прогресса по игре, когда сейв заполнит весь рамдиск, а если выделите всё, что у вас есть, и оперативка заполнится, то будете сидеть перед замершим компом и ждать, пока OOMKiller прихлопнет вам майнкрафт!

В Linux используется tmpfs и автобекап. Этот гайд хоть и находится на вики арча, но подойдёт для 99% линуксов.

Для Windows есть огромный зоопарк какого-то софта для рамдисков, тот, кто сейчас это пишет, не может ничего порекомендовать из него.

Источник: github.com

Как оптимизировать сервер Майнкрафт?

Spigot / Paper предлагает настройки, которые значительно улучшают производительность сервера Майнкрафт. В этом руководству представлены предлагаемые значения, позволяющие получить максимальную отдачу от вашего сервера без ущерба для игрового процесса.

Предварительная генерация карты

Предварительная генерация карты имеет большое влияние на устранение лагов на сервере Майнкрафт. Обязательно сделайте это на своем сервере.

  1. Установите плагин WorldBorder
  2. Поставьте разумное ограничение по размерам карты
  3. Пропишите команду: /wb fill
  4. Подождите… это может занять вплоть до нескольких часов в зависимости от размера карты. В идеале это нужно делать до того, как карта будет запущена, так как это вызовет задержку.
  5. Оставьте ограничение мира, чтобы чанки больше никогда не создавались (тогда вся карта будет сразу прогружена и не будет лагов из-за прогрузки чанков).

Bukkit.yml

spawn-limits
По умолчанию: monsters: 70, animals: 10, water-animals: 15, water-ambient: 20, ambient: 15
Оптимизировано: monsters: 50, animals: 8, water-animals: 7, water-ambient: 10, ambient: 1
Влияние на производительность: Большое

➫ Хотя это не просто «количество мобов на игрока», более низкие значения означают меньшее количество мобов. Избегайте слишком низких значений, иначе нехватка мобов будет заметна. Последующие значения в данной статье помогут скрыть это уменьшение.

chunk-gc.period-in-ticks
По умолчанию: 600
Оптимизировано: 400
Влияние на производительность: Среднее

➫ Позволяет быстрее выгружать свободные чанки. Чем меньше тиков, тем выше будет показатель TPS, про который вы можете прочитать в конце этой статьи.

ticks-per.(type)-spawns
По умолчанию: monsters:1, water:1, water-ambient:1, ambient:1
Оптимизировано: monsters:5, water:11, water-ambient:21, ambient:31
Влияние на производительность: Среднее

➫ Этот параметр устанавливает, как часто (в тиках) сервер пытается породить сущности. Увеличение времени между попытками спавна не должно повлиять на игровой процесс. Смещение частоты тиков больше распределяет их по времени.

Примечание: Увеличивайте значение только в том случае, если у вас значительные потери тиков при выполнении задачи mobSpawn.

Spigot.yml

save-user-cache-on-stop-only
По умолчанию: false
Оптимизировано: true
Влияние на производительность: Среднее

➫ Этот параметр отвечает за то, нужно ли серверу всегда хранить пользовательские данные (false) или отложить эту функцию до того момента, как сервер начнет перезапуск или выключится (true)? Это хорошая экономия TPS.

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

entity-activation-range
По умолчанию: animals:32, monsters:32, raiders: 48, misc:16
Оптимизировано: animals:16, monsters:24, raiders: 48, misc:8
Влияние на производительность: Среднее

➫ Существа за пределами этого диапазона будут отмечаться реже. Не устанавливайте слишком низкое значение, иначе вы можете нарушить поведение мобов (аггро, рейды и т.д.).

Примечание: Деревенских жителей следует оставлять в покое (если это возможно), чтобы защитить механику.

tick-inactive-villagers
По умолчанию: true
Оптимизировано: false
Влияние на производительность: Среднее

➫ Включение этого параметра предотвращает установку галочки для жителей за пределами диапазона активации.

Примечание: Ванильное поведение позволяет отмечать всех жителей в загруженных чанках. Включите опцию villagers-active-for-panic, чтобы спасти некоторые железные фермы от разрушения.

nerf-spawner-mobs
По умолчанию: false
Оптимизировано: true
Влияние на производительность: Среднее

➫ Когда включено, мобы из спавнеров не будут иметь ИИ (не будут плавать/атаковать/двигаться). Это большая экономия TPS для массивных ферм мобов, но также ухудшает поведение. Плагин ограничителя фермы может быть лучшим решением.

Примечание: в Paper есть опция, позволяющая заставить мобов, получивших повреждения, прыгать/плавать. Это исправляет фермы, толкающие воду.

Paper.yml

max-auto-save-chunks-per-tick
По умолчанию: 24
Оптимизировано: 6
Влияние на производительность: Большое

➫ Сохранение мира будет происходить с замедлением сохранения чанков. Очень важная функция для современных серверов Майнкрафт.

Примечание: Ниже 6 ставить не рекомендуется, есть возможность несохранения чанков!

max-entity-collisions (в Spigot.yml в некоторых сборках)
По умолчанию: 8
Оптимизировано: 2
Влияние на производительность: Среднее

➫ Зажатые объекты (кофемолки, фермы и т.д.) будут меньше сталкиваться и потреблять меньше TPS в процессе.

grass-spread-tick-rate
По умолчанию: 1
Оптимизировано: 4
Влияние на производительность: Среднее

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

hopper.disable-move-event
По умолчанию: false
Оптимизировано: true
Влияние на производительность: Большое

➫ Это значительно уменьшит отставание хоппера, поскольку предотвратит вызов InventoryMoveItemEvent для КАЖДОГО слота в контейнере.

Предупреждение: Плагины, которые прослушивают InventoryMoveItemEvent, будут сломаны.

prevent-moving-into-unloaded-chunks
По умолчанию: false
Оптимизировано: true
Влияние на производительность: Среднее

➫ Предотвращает попадание игроков в неактивный чанк. Такое происходит из-за лагов и может вызвать еще большие лаги.

use-faster-eigencraft-redstone
По умолчанию: false
Оптимизировано: true
Влияние на производительность: Большое

➫ Эта настройка сокращает анимацию и обновления работы редстоуна на 95%, при этом не ломая механизмы. Тестирование данной функции установило ускорение в 10 раз!

Server.properties

view-distance
По умолчанию: 10
Оптимизировано: 4-8
Влияние на производительность: Сильное

➫ Это самый важный параметр во всех ваших файлах, поскольку он ограничивает расстояние рендеринга чанков. Серверы с открытым миром (например, Survival) должны стремиться использовать значение 6+, но другие серверы с общим хостом, низкими характеристиками или большим количеством игроков могут использовать значение 4-5, если рендеринг чанков вызывает лаги.

TPS — отставания сервера

TPS в Майнкрафте это количество «тиков в секунду». Данный тип отставания сервера является единственным, которым может управлять владелец сервера. Все советы по оптимизации сервера, которые вы прочитали выше в статье предназначены как раз для повышения TPS.

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

Читайте также:  Какие дома можно построить в майнкрафте

Значения TPS

20.0 = Супер — Ваш сервер в идеальном состоянии.
19.95 — 19.99 = Хорошо — Небольшие потери TPS. Почти не влияют на работу сервера.
18.5 — 19.94 = Играбельно — Есть некоторые подвисания, но особо не напрягают.
16.0 — 18.4 = Плохо — Достаточно частые подвисания, нужно искать проблемы в сервере.
= Можете сразу создавать новый сервер…

Ping — задержка подключения

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

Пример: Если взять хостинг с датацентром в США, а ваши игроки будут из России или других стран СНГ, тогда у всех игроков будет очень высокий пинг и у них будут задержки. Опять же если ваши игроки из России, необязательно покупать хостинг с датацентром в России, можно брать в Германии, Франции. Там достаточно играбельный пинг и многие проекты держат там сервера.

Показатели пинга

1 — 90 = Супер!
91 — 179 = Хорошо — Могут быть неудобства во время PvP.
180 — 299 = Плохо — Постоянные зависания во время взаимодействия с блоками/игроками/мобами.
300 — 499 = Ужасно — Почти нереально играть.
500+ = Пора искать сервер поближе к вам.

Источник: raidark.ru

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

В нашем блоге мы уже рассказывали, как создать свой сервер Minecraft, однако с тех пор прошло 5 лет и многое поменялось. Делимся с вами актуальными способами создания и оптимизации серверной части столь популярной игры.

За свою 9-летнюю историю (если считать от даты релиза) Minecraft заработал потрясающее количество поклонников и хейтеров как среди обычных игроков, так и среди гиков. Простая концепция мира из кубиков превратилась из обычного развлечения в универсальную среду для общения и создания различных объектов из реального мира.

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

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

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

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

Vanilla

Компания Mojang Studios распространяет серверную часть игры в виде Java-приложения бесплатно на официальном сайте. Это позволяет создать свой собственный выделенный сервер и персональный мир, сделав его доступным для подключения из любой точки планеты. Для тех, кто делает это впервые, есть отличный туториал, доступный в соответствующей игровой Wiki.

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

Bukkit

Созданное энтузиастами на базе Vanilla-версии серверное приложение Bukkit значительно расширяло возможности игры за счет поддержки плагинов и модов (модификаций). Оно позволило не только добавлять в игровой процесс новые блоки, но и выполнять различные манипуляции, недоступные ванильному ПО. Что интересно, памяти это приложение требовало значительно меньше.

Установить Bukkit не составляет особого труда, соответствующая инструкция есть на ресурсе GamePedia. Но это не имеет смысла, так как с 2014 года команда Bukkit распалась, разработчики проекта стали сотрудниками Mojang Studios, а репозиторий заброшен. Таким образом, Bukkit фактически мертв, и имеет смысл обратить внимание на два следующих проекта.

SpigotMC

Для облегчения жизни разработчиков плагинов была необходимость в API для взаимодействия с игровым миром. Именно эту задачу и решили создатели Spigot, взяв за основу ядро Bukkit и переработав его для достижения лучшей надежности и производительности. Тем не менее, Git-репозиторий проекта был заблокирован в связи с Законом об авторском праве в цифровую эпоху (DMCA), и скачать оттуда исходники невозможно.

На текущий момент SpigotMC активно развивается и используется. Он поддерживает все плагины, созданные под Bukkit, однако с ним обратно не совместим. Чтобы обойти запрет DMCA Takedown, был придуман элегантный способ под названием BuildTools. Этот инструмент избавляет от необходимости дистрибуции скомпилированного приложения и позволяет пользователям выполнить компиляцию Spigot, CraftBukkit и Bukkit из исходного кода. Все это делает запрет DMCA бесполезным.

PaperMC

Казалось бы, все круто, и Spigot стал прекрасным вариантом. Но некоторым энтузиастам этого показалось мало, и они запилили свой собственный форк Spigot «на стероидах». На странице проекта ключевым достоинством указано, что “It’s stupid fast”. Развитое коммьюнити позволяет оперативно решать возникающие вопросы, а расширенное API — делать интересные плагины. Запустить PaperMC можно одной простой командой, приведенной в документации.

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

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

Главное, что нужно понимать, — все, что касается обработки игрового мира будет обрабатываться только на одном вычислительном ядре физического сервера. Так что если вдруг у вас прекрасный сервер с десятком вычислительных ядер, то загружено будет только одно. Все остальные будут фактически простаивать. Такова уж архитектура приложения, и ничего вы с этим поделать не сможете.

Так что при выборе сервера следует обращать внимание не на количество ядер, а на тактовую частоту. Чем она будет выше, тем лучше будет производительность.

Читайте также:  Как вырастить кувшинку Майнкрафт

Что касается вопроса об объеме оперативной памяти, тут следует исходить из следующих показателей:

  • планируемое количество игроков;
  • планируемое количество миров на сервере;
  • размер каждого мира.

Для запуска серверной части рекомендуем воспользоваться флагами, указанными в статье Tuning the JVM – G1GC Garbage Collector Flags for Minecraft. Эта «черная магия» позволяет серверу грамотно настроить «сборщик мусора» и оптимизирует использование оперативной памяти. Не стоит выделять памяти больше, чем реально потребляет сервер при пиковом наплыве игроков.

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

“Вы действительно считаете, что Луна существует, только когда вы на неё смотрите?” (Альберт Эйнштейн)

Абсолютно новый сервер. Как только игрок первый раз успешно подключается, игровой персонаж появляется на общей точке сбора (спаун). Это единственное место, где игровой мир предварительно генерируется сервером. В этот же момент клиентская часть смотрит в настройки, и ключевым параметром является дальность прорисовки. Измеряется она в чанках (область карты 16×16 и высотой в 256 блоков) Сколько чанков там указано, именно столько и будет запрошено у сервера.

На сервере хранится глобальная карта мира, и если в ней еще нет сгенерированных блоков в точке появления игрового персонажа, то сервер их динамически генерирует и сохраняет у себя. Мало того, что это требует больших вычислительных ресурсов, так еще и постоянно увеличивает размер карты мира. На одном из старейших анархических серверов 2b2t (2builders2tools) размер карты уже превысил 8 Tb, а граница мира проходит на отметке в 30 млн блоков. С этим сервером связаны тысячи историй, и он заслуживает отдельной статьи серии статей.

Генерация мира вокруг одного игрока — не проблема. Генерация мира вокруг сотни игроков вызовет незначительные тормоза сервера на протяжении короткого времени, после чего нагрузка снизится. Генерация мира на дальность прорисовки клиента вокруг тысячи игроков уже способна «уронить» сервер и повыбрасывать с него всех клиентов по таймауту.

В серверном ПО имеется такое значение, как TPS (Ticks per Server — тактов в секунду). Штатно 1 такт равен 50 мс. (1 секунда реального мира равна 20 тактам игрового мира). Если обработка одного такта вырастет до 60 секунд — серверное приложение будет закрыто, выкинув всех игроков.

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

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

/wb set spawn

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

/wb fill

Поскольку данное действие потенциально может затронуть игроков, находящихся на сервере, не забудьте подтвердить выполнение:

/wb confirm

В общей сложности на то, чтобы сгенерировать мир радиусом в 5000 блоков (~40 млрд блоков) ушло примерно 2 часа на процессоре Intel® Xeon® Gold 6240. Поэтому, если хотите запустить прегенерацию большей карты, учитывайте, что этот процесс займет приличное количество времени, а TPS сервера будет серьезно снижено. Кроме того, помните, что даже радиус в 5000 блоков потребует примерно 2 Гб места на дисковом накопителе.

Несмотря на то, что крайняя версия плагина была разработана для Minecraft версии 1.14, опытным путем выяснено, что она прекрасно работает и на последующих версиях. Полный список команд с пояснениями доступен на форуме плагина.

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

Разновидностей блоков в Minecraft великое множество. Однако мы бы хотели остановить внимание читателей на таком блоке, как TNT. Как следует из названия, этот блок представляет собой взрывчатку (примечание редакции — это игровой предмет виртуального мира и ничего с настоящими ВВ этот предмет не имеет). Его особенность такова, что в момент активации на него начинает действовать сила гравитации. Это заставляет сервер обсчитать все координаты, если в этот момент блок начинает падать.

Если блоков TNT несколько, то детонация одного блока вызывает детонацию и включение гравитации у соседних блоков, разбрасывая их во все стороны. Вся эта красивая механика на стороне сервера выглядит как множество операций по подсчету траектории каждого из блоков, а также взаимодействия с соседними блоками. Задача крайне ресурсоемкая, что легко может проверить каждый. Сгенерируйте и подорвите куб из блоков TNT, размером хотя бы 30x30x30. И если вы думали, что у вас хороший мощный игровой компьютер, то сильно заблуждались 😉

/fill ~ ~ ~ ~30 ~30 ~30 minecraft:tnt

Подобный «эксперимент» на сервере с Intel® Xeon® Gold 6240 привел к серьезной «просадке» TPS и 80% нагрузке на CPU в течение всего времени детонации блоков. А следовательно, если кто-либо из игроков сможет проделать подобное, то проблема с производительностью затронет всех находящихся на сервере игроков.

Еще более жесткий вариант — Кристаллы Края. Если TNT все же взрывается последовательно, то Кристаллы Края детонируют все одновременно, что в теории может вообще остановить работу серверного приложения.

Избежать этого сценария можно, только полностью запретив использование данных блоков в игровом мире. Например, с помощью плагина WorldGuard. Обратите внимание, что сам по себе этот плагин не работает без другого плагина WorldEdit. Так что устанавливаете вначале WorldEdit, а затем WorldGuard.

Заключение

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

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

Для этого мы приглашаем всех желающих на наш сервер minecraft.selectel.ru (версия клиента 1.15.2), где воссозданы дата-центры Цветочная-1 и Цветочная-2. Не забудьте согласиться со скачиванием дополнительных ресурсов, они необходимы для корректного отображения некоторых локаций.

Вас ждут квесты, промокоды, «пасхалки» и приятное общение.

  • Блог компании Selectel
  • Серверная оптимизация
  • Игры и игровые консоли

Источник: habr.com