Небольшое вступление
Оптимизация игровых серверов в Minecraft (как и полноценная их разработка) изначально может показаться особенно сложной задачей для тех, кто ни разу не имел опыта с этим. Подобные ключевые моменты в разработке вашего сервера всегда требуют понимания множества тонкостей игры, принципов её работы и изучения большого объёма материала.В этом руководстве вы сможете найти всю необходимую информацию по оптимизации и управлению игровым сервером в Minecraft
Немного обо мне и почему и для кого написано это руководство
Кто меня знает,Несколько важных моментов
Чтобы что-то оптимизировать, вам нужно что-то сделать, так ведь? Ну, в данном руководстве мы хотим оптимизировать ваш игровой сервер, так что.. здесь всё должно быть очевидно.И перед запуском - вам нужно определить, что из себя в целом будет представлять ваш сервер. Вам необходимо определиться с версией, изданием игры, серверным оборудованием и плагинами. В этом вам может помочь me4502, который создал свой портал для объяснения многих аспектов игры и грамотного запуска вашего сервера: How to actually run a Minecraft Server: The Ultimate Guide | Me4502 (madelinemiller.dev). Ссылки, указанные на материалы в портале me4502, могут мелькать и здесь. Поэтому, вы можете непосредственно сразу пробежаться по ссылкам в его руководстве. В них он максимально подробно и правильно объяснит вам многие вещи, которые здесь я расписывать не буду (просто потому что моё мнение в плане подобных вопросов в подавляющем большинстве случаев ничем не отличается от Maddy Miller'а, и я также советую прислушаться вам к нему).
Большинство указанных здесь материалов (если вообще не все) актуальны только для последней версии игры и Java её издания, а также затрагивает лишь сервера, основанные на bukkit. К сожалению, я, как и многие другие авторы, не могу поддерживать старые версии игры, а также я не имею достаточного опыта с иным изданием (bedrock) и модовыми серверами (forge, fabric).
Далее - можете приступать к самому запуску. О том, как это сделать, вы сможете прочитать в материалах, указанных ниже, либо получив инструкции от вашего хостера.
Что делаем для начала?
Для начала, перед работой с самим сервером в кубаче, вам ну просто необходимо прочитать официальную документацию PaperMC (Home | PaperMC Docs).Почему именно её? Да всё просто - это официальная документация, прочитав которую (хотя бы даже раздел об администрировании), вы уже сможете понять практически всю основу, а на основе самой бумаги (PaperMC) основываются практически все современные bukkit-ядра, так что рациональнее всего было бы использовать именно его и изначально изучать именно документации их ядра.
Кроме того, любой, кто также более-менее разбирается в устройстве кубических серверов, посоветует вам именно Paper или некоторые его форки*.
Выделять здесь какие-то ядра я не собираюсь.
Они считаются наиболее безопасными и проверенными из всех (о них кратко вы можете прочитать либо в статье выше, либо поискать самим), в отличии от «экспериментальных форков»*
Для работы ядра и разработки вашего сервера в целом, вам потребуется скачать одну из версий JDK (Java Development Kit). Однако существует множество реализаций JDK, хотя все они используют один и тот же язык - Java. В основном выделяют всего две: OpenJDK и Oracle JDK. Обе эти сборки примерно идентичны друг другу, однако, Oracle лицензировала свои собственные сборки JDK и требует оплаты за их использование в коммерческих целях. OpenJDK же полностью бесплатен и имеет открытый исходный код, так что использовать сборки от Oracle нам просто нет смысла (особенно, если ваш сервер стоит на Linux). OpenJDK же тоже имеет несколько реализаций*, но все они также мало чем могут отличиться друг от друга и при разработке сервера в Minecraft вы не заметите каких-либо изменений в любом из них.
Для поиска задержек используют инструмент Spark (spark (lucko.me)). Перед оптимизацией, внимательно изучите поведение вашего сервера с применением профилировщика и уже на основе полученных данных о нём подберите оптимальные значения и предпримите необходимые меры. Здесь всё индивидуально, ведь на работу сервера влияет множество факторов. Кроме того, вам настоятельно рекомендуется ознакомиться с такими понятиями, как TPS (Ticks Per Second) и MSPT (Milliseconds Per Tick), о которых вы сможете подробно узнать в одном из разделов документации Spark: TPS and MSPT | spark docs (lucko.me).
Надеюсь, вы всё же смогли определиться с ядром (хотя бы из тех трёх, вышеупомянутых мной). Впрочем, я ничего вам и не говорил о выборе правильного ядра перед оптимизацией самих конфигураций. Но, прочитав, вы должны сами для себя определить, что вам лучше использовать. Может показаться, что я обязал вас использовать только PaperMC или их правильные форки
Флаги оптимизации
И начнём мы с самого запуска* вашего сервера, а именно - флагов оптимизации в вашем скрипте.Существует множество уже готовых генераторов подобных скриптов с флагами оптимизации Aikar's*, которые между собой мало чем могут отличаться.
Однако, хочется отметить лишь самые удобные - генератор скриптов от PaperMC: Start Script Generator | PaperMC Docs и от birdflop: Minecraft Flags Generator - Birdflop.
Флаги, используемые в этих генераторах - безопасны и принесут вам пользу (в подавляющем большинстве случаев). Но кроме представленных там флагов существует ещё множество. Вам просто стоит быть внимательнее и обращать своё внимание в первую очередь на их безопасность.
Изменение значений файлов конфигураций
Основное решение проблем с производительностью сервера - правильная настройка файлов вашего ядра. Разработчики предлагают нам набор инструментов, которые могут помочь повысить производительность при грамотном их использовании.*Примечание: данное руководство на первый взгляд может показаться «идеальной настройкой» вашего ядра для превосходного результата в плане повышения производительности. Но, как отмечает сам автор:
Не стоит слепо ставить все те рекомендуемые автором значения, ведь в конечном счёте, если вы не испытываете критических проблем с производительностью - вы рискуете сделать лишь хуже в плане полного нарушения игрового процесса на сервере. Автор описывает каждый пункт, отмечая при этом все риски и действительную пользу от изменения того или иного параметра.
Впрочем, вы можете попробовать сперва ознакомиться с руководством Paper Chan, которое стремится сохранить максимально ванильное поведение. Вместо готовых значений, вам будут предложены рекомендуемые диапазоны* или советы, в рамках которых вы сможете сохранить комфортную игру и снизить потребление ресурсов.
Кроме того, автор советует вам несколько плагинов для решения проблем с производительностью. О них мы поговорим в следующем пункте…
Полезные плагины оптимизации
Сразу стоит отметить:Однако, если вы всё же видите какой-либо плагин, обещающий подобную «магию», внимательно изучите его страницу, а также код (по возможности). Задайте себе несколько вопросов: Насколько рационально его использовать в вашем случае? Нет ли подобного функционала в вашем ядре? Как именно этот плагин выполняет свою работу и что именно он делает, для чего? Какие будут «побочные» эффекты при использовании этого плагина? Не исправлено ли уже это на вашей версии игры, помимо ядра?
Попробуйте ответить на них. Paper Chan в своей статье (Paper chan's Little Guide to Minecraft Server Optimization! | Paper Chan hideout (paper-chan.moe)) советует также такие плагины, как:
OkTreasures* (OkTreasures | Hangar (papermc.io)):
harderdespawn* (harderdespawn | Hangar (papermc.io))
AntiVillagerLag* (AntiVillagerLag - Minecraft Plugin (modrinth.com)):
Эти плагины, вероятно, действительно могут помочь вам в каких-то случаях. Но, посмотрев на них, какой вывод мы можем сделать? Первый плагин стал бесполезным с новой версией игры, второй подходит только для некоторых случаев, а третий нужен только в случаях сильных задержек, которые вынудили бы игроков самостоятельно оптимизировать сущностей вашего сервера. И это только плагины, которые выглядят вполне себе полезно и убедительно. Поэтому сейчас нет причин использовать какие-либо плагины оптимизации на последней версии вашей игры (на момент написания этой статьи последняя версия игры - 1.20.6).
Микро-оптимизация
Кратко о том, что это такое:Вам действительно нет смысла оптимизировать то, что не принесёт вам какой-то значительной пользы в этом. Пожалуйста, не тратьте своё время на руководства, в которых вы можете найти лишь мелкие изменения, на деле ничего не меняющих.
Folia - что это?
Относительно недавно точно уж подняло шуму новое ядро - Folia (Folia | PaperMC), новый форк Paper от самих PaperMC. Все говорили о переменах, новой эре игровых серверов в кубаче… Но что же имеем на деле?Folia действительно позволяет вам сохранять превосходный геймплей даже при сотнях игроков онлайн. Как они этого добились - вы можете узнать из статьи проекта Paper Chan: Folia - Multithreading Coming to your Minecraft server | Paper Chan hideout (paper-chan.moe).
Однако, Folia требует огромного количества потребляемых ресурсов, и большинство всех плагинов bukkit не будет работать на ней. Приятно, конечно, видеть, что разработчики этих плагинов добавляют поддержку фолии постепенно, но это слишком долгий процесс, чтобы внести во все необходимые плагины поддержку этого ядра. Да и это, скорее всего, будет просто не нужно. Большинство находятся не в той аудитории, которая смогла бы позволить себе мощное оборудование для поддержания работы фолии. Если вы планируете держать на сервере около двухсот игроков и больше, а также имеете возможность купить необходимое оборудование и имеете все необходимые на ней плагины - Folia для вас!
Безопасность
Относительно безопасности вашего сервера - грамотная настройка, постоянные обновления на новые версии и установленные с проверенных (официальных) источников ресурсы сделают всё возможное, чтобы устранить различные уязвимости, которые также могут нанести существенный удар по вашей производительности.Многие также устанавливают такие плагины, как: ExploitFixer, LPX и т. п. И хотя эта тема довольно-таки спорная, но что я могу сказать про эту «парочку»?
И здесь касательно премиум-плагинов и закрытого исходного кода. Многие задаются вопросом, а что же лучше: премиум-плагин или бесплатный? Об этом рассказал me4502 в своей статье: Are free or premium Minecraft plugins better? | Me4502 (madelinemiller.dev).
Что хочется кратко выделить из неё, что будет характерное для этого раздела? Это раздел о безопасности (Security) соответственно. Обфусцированные плагины могут нести в себе куда большую опасность, чем проекты с открытым исходным кодом (коими в подавляющем большинстве являются бесплатные плагины). Кроме того, с закрытым исходным кодом вы не сможете самостоятельно исправить ту или иную уязвимость, которая может «найтись» у вас при использовании этого плагина, а также многое чего ещё, о чем расскажет вам Maddy Miller.
Пиратские плагины или плагины на сомнительных площадках? - тоже по большей части закрытый код. Точно так же несёт в себе опасность, только на этот раз в куда большем размере, чем с официальными ресурсами на проверенных площадках. Так что, будьте аккуратны при выборе вашего программного обеспечения для сервера и всегда проверяйте ресурсы, если получаете их от какого-либо человека (в том числе студии, компании, простые разработчики-работяги).
Ещё несколько немаловажных моментов:
НЕ запускайте ваш сервер от рут-пользователя. Предупреждение об этом стоит вовсе не случайно. Это может нести в себе потенциальные риски, если удастся получить к серверу доступ.
НЕ запускайте сервер в оффлайн-моде. Может показаться, что это будет хорошим решением ваших проблем с онлайном и прибылью, но на деле их будет гораздо больше. Открывая доступ на свой сервер неавторизированным в системе Microsoft пользователям, вы сильно рискуете.
Анти-читы
Раздел, который может относиться к разделу безопасности.Запомните: нет ни одного анти-чита, который бы вас сейчас защитил полностью. Популярные анти-читы, которые вы сможете найти на площадках, собственно, находятся в публичном доступе. Ничего не мешает создателям чит-клиентов обратиться к этому анти-читу (в некоторых случаях им даже необязательно его покупать) или его коду (некоторые анти-читы также находятся просто в публичном доступе), чтобы написать обход. И в этом случае даже «грамотная настройка» вашего анти-чита ничем не поможет. Максимум, что вы можете сделать - усилить проверки (тем самым повышая количество ложных срабатываний в несколько раз, что сделает игру на вашем сервере просто невыносимой), или же их ослабить (тем самым облегчая работу для читов, но при этом делая игру комфортной). Какой есть выход? - написать собственный анти-чит. Но, если подумать, борьба с читерством действительно ли будет стоить затраченных на это средств? Вас всё равно не убережёт никакой анти-чит, если предметом для обхода будете являться именно вы. Так стоит ли тратиться на разработку собственного анти-чита? Я думаю, что нет.
Многие также находят решение этой проблемы в отключении модифицированных клиентов. Но это лишь оттолкнёт ваших игроков, ведь многие игроки используют модифицированные клиенты для более плавной и комфортной игры, не более. Вы же не хотите забирать у них эту возможность, правда? Да и это будет вовсе бесполезно, ведь чит-клиенты способны подменить свой клиент на Vanilla, например. Таким образом, вы запрещаете игру легальным игрокам и разрешаете её для нелегальных. Это смешно.
Впрочем, если же вы всё-таки решили использовать анти-чит (что я вам делать всё же рекомендую, ведь далеко не все клиенты способны на обходы вашего анти-чита) - не используйте их связки без должной настройки. Это может привести лишь к ещё большим конфликтам и ложным срабатываниям, потому что каждый анти-чит применяет свои методы борьбы с читерством. Однако, я также не отрицаю существование хороших связок, имейте это ввиду. Всё это требует отдельного разбора и подробного анализа.
Хостинг
Правильный выбор оборудования позволит вашим игрокам играть с комфортом, а также вам иметь возможность более гибко настраивать свой сервер, в том числе в плане оптимизации.Однако, не стоит доверять сомнительным организациям. Вы также рискуете остаться ни с чем. Внимательно изучайте отзывы, читайте пользовательское соглашение, проверяйте реквизиты, сравнивайте услуги и цены на них. Это всё может выдать в себе «нечестного хостинга». Например, так вы можете просто подарить кому-то свою сборку или рискнуть получить множество уязвимостей, выяснить, что администратор без вашего ведома изменял какие-либо файлы и прочее. Также от хостинга зависит ваша защита от DDoS-атак, которые часто могут устраивать, например, конкуренты, что также очевидно скажется на игре.
Спасибо за внимание!
Надеюсь, этот массивный набор строк и ссылок действительно помог кому-то. А может кто-то будет использовать его просто для поиска потерянных ссылок на ресурсы… В общем, неважно.Материала, изложенного в данном руководстве, вполне хватает для самой обычной оптимизации игрового сервера в Minecraft. Это обычная процедура, которую выполняют разработчики для каждой своей сборки. Если вам есть что дополнить или исправить - не стесняйтесь писать в обсуждение!