RE:NODE

Minecraft11 мин чтения

Paper, Fabric или ваниль: какое серверное ПО выбрать

Для чего нужен каждый серверный jar Minecraft, плагины и моды, форки Paper, о которых стоит знать, и как переключаться между ними, не потеряв мир.

Обновлено

2 прочтений

Это не три версии одного и того же. Ваниль - собственный сервер игры без изменений. Paper - сильно переписанный форк, сделанный ради производительности и плагинов. Fabric - загрузчик модов, который плагины не запускает вообще. Выбирая между ними, вы на самом деле выбираете, что хотите иметь возможность добавить позже, и практическая граница проходит по одному вопросу: хотите ли вы, чтобы люди заходили, просто набрав адрес? Если да, вам нужны плагины, а значит, Paper. Если вам нужны новые блоки, машины и измерения, вам нужен загрузчик модов, и все устанавливают сборку. Всё ниже - детали к этому.

Три вещи, между которыми вы на самом деле выбираете#

Полезно увидеть генеалогическое древо: названия становятся понятнее, когда знаешь, что от чего ответвилось.

Mojang serverthe referenceCraftBukkitthe Bukkit APIFabricmod loaderForge, NeoForgemod loaderSpigotpatched CraftBukkitPaperplugins, performancePurpur, PufferfishPaper forks
Откуда берётся каждый серверный jar

Всё в левой цепочке предоставляет API Bukkit, поэтому плагин, написанный в 2014 году для CraftBukkit, нередко и сегодня загружается на Paper. Всё в правой цепочке патчит код самой игры напрямую, поэтому моды ломаются при каждом обновлении игры, а плагины обычно нет.

Есть то, что у них у всех общее: главный цикл тиков однопоточный. Генерация чанков, запись файлов и сеть в современных версиях вынесены из него, но сама симуляция - мобы, редстоун, воронки, обновления блоков - выполняется в одном потоке и на ванили, и на Paper, и на Fabric, и на Forge. Поэтому для сервера Minecraft тактовая частота важнее числа ядер, и поэтому «больше ядер» редко лечит лаги. Единственное заметное исключение - Folia, о ней ниже.

Ваниль: эталонная реализация#

Серверный jar, который публикует Mojang. Вы принимаете EULA в eula.txt, запускаете, и получаете ровно игру, вплоть до странностей редстоуна и краевых случаев мобо-ферм.

bash
$ java -Xms2G -Xmx2G -jar server.jar --nogui

В чём она хороша:

  • Корректность. Если ваши игроки строят механизмы, зависящие от точного порядка обновлений, или вы проверяете, работает ли конструкция фермы, прежде чем строить её, ваниль - единственный ответ, правильный по определению.
  • Снапшоты и день релиза. Ваниль доступна в тот момент, когда выходит версия. Paper и загрузчики модов отстают на дни или месяцы.
  • Датапаки. Датапак меняет рецепты, таблицы добычи, достижения, предикаты и функции без изменения серверного ПО и без чего-либо на клиенте. Ваниль их запускает, как и всё остальное на этой странице. Для многих запросов «а можно изменить X» датапак - это весь ответ.

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

Paper: плагинный сервер, который запускают почти все#

Paper - это ваниль с переписанными затратными путями, большим набором исправлений ошибок, несколькими сотнями добавленных параметров конфигурации и подключённым API плагинов Bukkit/Spigot. При том же числе игроков в том же мире у него ниже MSPT, чем у ванили, и разрыв растёт вместе с числом сущностей, потому что тики сущностей, поведение воронок, загрузка чанков и распространение света - то, где переписано больше всего.

Кроме того, вместо одного конфигурационного файла у вас их пять:

ФайлЧто в нём хранится
server.propertiesСобственные настройки ванили: порты, дальности, сложность, белый список
bukkit.ymlЛимиты спавна по категориям, GC чанков, тиков на цикл спавна
spigot.ymlРадиусы активации сущностей, радиусы слияния, дальность спавна мобов
config/paper-global.ymlОбщесерверные настройки Paper, включая unsupported-settings
config/paper-world-defaults.ymlНастройки Paper для каждого мира, переопределяемые для конкретного мира

Конфигурацию Paper разделил на два последних файла в 1.19; старые руководства, где упоминается единственный paper.yml, устарели. Настройки в каждом из них, которые действительно что-то меняют, разобраны в статье руководство по оптимизации Paper.

Платой служит поведение. Paper исправляет то, что ваниль считает особенностями, а некоторые фермы на этих особенностях держатся. Блок unsupported-settings в config/paper-global.yml существует как раз для того, чтобы вернуть часть из них, - какие пункты он предлагает, меняется от версии к версии, так что читайте свой файл, а не пост о старой версии. Paper может также заменить реализацию редстоуна гораздо более дешёвой, и на сервере, полном редстоуна, это большой выигрыш и тонкое изменение поведения в краевых случаях. Если в вашем сообществе много технических игроков, скажите им, какое серверное ПО вы используете, прежде чем они потратят выходные на проект.

Spigot всё ещё существует, а Paper - его полная замена: те же плагины, тот же spigot.yml, строго больше конфигурации и строго лучше производительность. Причин выбирать Spigot вместо Paper для нового сервера не осталось.

Fabric и загрузчики модов#

Fabric - загрузчик модов, меняющих саму игру. В этом всё различие: плагин обращается к API, который предоставляет сервер, а мод переписывает собственные классы игры. Последствия видны сразу.

  • Клиентам нужны те же моды. Всё, что добавляет контент или меняет правила, должно существовать на обеих сторонах в одной версии, иначе клиента кикнет или он рассинхронизируется. Игроки ставят сборку через лаунчер, а не вводят адрес.
  • Моды ломаются при каждом обновлении игры и ждут своих авторов. Сервер Fabric обычно успевает за игрой за неделю-две; сборка Forge или NeoForge может отставать на целую версию месяцами.
  • API плагинов нет. Fabric не загрузит плагин Bukkit, и никакая конфигурация этого не изменит. Некоторые привычные инструменты портированы - у LuckPerms есть сборка для Fabric, есть серверные моды для журнала блоков и форматирования чата, - но экосистема составляет малую долю от размера плагинной.
  • Fabric API - это отдельный мод. От него зависит почти каждый мод Fabric, и его отсутствие - самая частая причина сбоя при первом запуске.

Forge и NeoForge относятся к той же категории, с более долгой историей и более тяжёлыми сборками. Установку сборки, таблицу версий Java и чтение краш-репорта, когда что-то из этого не запускается, описывает статья сервер с модами без вылетов.

У Fabric есть и по-настоящему веская причина существовать на немодифицированном сервере: серверные моды производительности. Lithium, FerriteCore и Krypton не меняют ничего, что видит игрок, ничего не требуют от клиента и заметно удешевляют работу сервера Fabric. Сервер на Fabric с ощущением ванили и тремя модами производительности - реальный вариант, если вам нужно ванильное поведение без ванильной цены, и, в отличие от Paper, он сохраняет поведение в краевых случаях.

Плагины или моды: черта, которая решает#

Почти любой вопрос «что мне запускать» сводится к этой таблице.

Вам нужноЗапускайтеИгроки устанавливают
Приваты, права, экономика, домаPaperНичего
Новые блоки, машины, мобы, измеренияFabric, Forge или NeoForgeСборку
Точное ванильное поведение для тестовVanillaНичего
Ванильное поведение, дешевле для сервераFabric только с серверными модамиНичего
Игроки с консолей и мобильныхBedrock или Paper с GeyserНичего
Несколько миров за одним адресомVelocity перед бэкендами PaperНичего

Строка про Bedrock - это действительно другая программа, а не очередной jar: сравнение есть в статье Bedrock или Java, а мост, если нужны оба, - в статье Geyser и Floodgate. Строка про Velocity - то, к чему прибегают, когда одного сервера становится мало: прокси держит публичный порт и передаёт игроков на бэкенды лобби, выживания и мини-игр, которые можно перезапускать независимо. О секрете пересылки, в котором чаще всего и ошибаются, рассказывает статья как построить сеть на Velocity.

Форки Paper, о которых стоит знать#

Три форка упоминают постоянно, и каждый решает узкую задачу.

  • Purpur - это Paper плюс очень много игровых переключателей: настройки по мобам, ездовые мобы, настраиваемое поведение кристаллов Энда, purpur.yml, полный того, что ваниль никогда бы не открыла. Те же плагины, тот же профиль производительности. Берите, если нужны эти ручки, игнорируйте, если нет.
  • Pufferfish - Paper, настроенный на производительность жёстче, с асинхронным поиском пути мобов и динамическим дросселированием ИИ сущностей по расстоянию. Он меняет немного точности поведения на время тика на загруженных серверах.
  • Folia - форк PaperMC с регионной многопоточностью. Он разбивает мир на независимо тикающие регионы по потокам, и это единственный настоящий ответ на потолок одного потока. Недостаток серьёзен: плагины должны быть написаны именно под Folia, а большинство - нет. Он создан для очень большого числа игроков, разбросанных по большому миру, а не для SMP на пятьдесят человек, где все сидят в одном городе.

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

Почти для всех ответ - обычный Paper. Форки - это оптимизации решения, а не само решение.

Переключение между ними без потери мира#

Мир переживает большинство переходов. Не переживает всё, что добавил мод, а споткнуться люди чаще всего на структуре папок.

Ваниль хранит все три измерения внутри одной папки мира: world/region, world/DIM-1/region для Нижнего мира, world/DIM1/region для Энда. Paper и все серверы на основе Bukkit разделяют их на world, world_nether и world_the_end на верхнем уровне. Fabric и Forge следуют структуре ванили. Итак:

  1. Корректно остановите сервер и дождитесь завершения сохранения. Никогда не копируйте мир из-под работающего сервера.
  2. Сделайте backup, который действительно можно восстановить, а не копию в той же папке. Разницу объясняет статья backup, которые действительно восстанавливаются, а backup панели именно поэтому хранятся вне защищаемой машины.
  3. Переход с ванили или Fabric на Paper: создайте world_nether и world_the_end, переместите world/DIM-1 в первую, а world/DIM1 во вторую, сохранив внутренние имена папок. Затем положите jar Paper и запустите.
  4. Переход с Paper обратно на ваниль или Fabric: наоборот. Верните две папки измерений внутрь world. Дополнительные файлы Paper и папка plugins просто игнорируются.
  5. Запустите, когда онлайн никого нет, затем зайдите и проверьте именно Нижний мир и Энд. Если какое-то из них оказалось новым миром, папки перенесены неверно, а ваши исходные данные всё ещё лежат под другим именем.

Единственный переход, который что-то теряет, - с модифицированного на немодифицированный. Ваниль и Paper заменяют незнакомые блоки воздухом и молча отбрасывают неизвестные предметы. Forge, напротив, отказывается загружать мир с недостающими записями реестра, пока вы не подтвердите, что принимаете потерю. В любом случае сначала сделайте backup и ждите дыр на месте машин. В обратную сторону - добавление загрузчика модов к существующему ванильному миру - безопасно, потому что пока ничего не отсутствует.

Обновления версий - отдельная проблема с той же дисциплиной; как сделать его без отката, описано в статье обновление версий Minecraft.

Что запускаем мы и почему это Paper#

Линейка Minecraft здесь поставляется с Paper, с версией Java, подобранной под версию Minecraft, с уже принятым EULA и с миром, сгенерированным до вашего первого входа. Это не нейтральность, а та же рекомендация, что дана в этой статье, только в готовом виде. Paper - то, что в итоге запускает подавляющее большинство серверов с числом игроков больше горстки, а начинать с чего-то другого значит начинать с работы.

Если вам нужно другое, вас никто не блокирует: файловый менеджер и SFTP в вашем распоряжении, белого списка разрешённых jar или модов нет, переменные запуска редактируются. Но это ваша установка. Переключения в один клик на Fabric, Forge или модпак нет, и ничто в панели не знает, что такое .mrpack. Заложите вечер, храните backup ванильного мира и сначала прочитайте две статьи про загрузчики.

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

FAQ#

Paper лучше Spigot?

Да, без реальных оговорок. Paper - форк Spigot, сохраняющий тот же API плагинов, добавляющий несколько сотен параметров конфигурации и переписывающий затратные части тика. Каждый плагин Spigot запускается на Paper. Сценария, в котором новому серверу стоило бы выбрать Spigot, не осталось.

Можно ли запускать плагины на Fabric?

Нет. Плагины рассчитаны на API Bukkit, которого Fabric не реализует. У некоторых известных инструментов есть порты для Fabric - в том числе у LuckPerms, - и у Fabric есть собственные серверные моды для журналирования и чата, но каталог гораздо меньше. Прослойки, якобы запускающие плагины Bukkit на Fabric, существуют, но ненадёжны.

Удалит ли переход на Paper мой мир?

Нет, но переставит его. Paper разделяет Нижний мир и Энд на отдельные папки верхнего уровня, поэтому эти два измерения выглядят пустыми, пока вы не переместите DIM-1 и DIM1 в world_nether и world_the_end. Обычный мир переносится нетронутым. Сделайте backup перед началом и проверьте оба измерения потом.

Заметят ли игроки разницу между Paper и ванилью?

Большинство нет. Технические игроки заметят: Paper меняет некоторые краевые случаи порядка обновлений и исправляет ошибки, на которых держатся определённые конструкции ферм. Если ваше сообщество строит механизмы, сразу скажите, какое серверное ПО вы используете, и прочитайте блок unsupported-settings в config/paper-global.yml, прежде чем что-либо обещать.

Что выбрать небольшому серверу для друзей?

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

А Folia для большого сервера?

Только если число игроков действительно велико и они разбросаны по миру, и только если плагины, от которых вы зависите, её поддерживают. Регионная многопоточность Folia - настоящий ответ на потолок одного потока, но плагин, написанный для Paper, без изменений на ней не запустится, а людный спавн от регионов не выигрывает.


Комментарии

Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000