Сервер на Fabric может работать заметно экономнее vanilla с коротким списком серверных модов, и игрокам для входа ничего устанавливать не нужно. Основной набор - Lithium для игровой логики, FerriteCore для памяти, Krypton для сети и ModernFix для запуска и общих исправлений; все четыре стремятся не менять ничего, что может заметить игрок. C2ME распараллеливает генерацию чанков - он самый мощный и наименее консервативный. Добавьте spark для измерений, Chunky для предгенерации и на этом остановитесь, пока профайлер не скажет иначе. Чего эти моды не делают - так это не меняют ванильные правила, как Paper, и именно поэтому технические игроки выбирают этот путь.
Зачем вообще Fabric ради производительности#
Paper - привычный ответ на «у меня тормозит сервер», и для сервера с плагинами он правильный. Но часть своей скорости Paper получает за счёт изменения поведения: он исправляет дюпы, меняет активацию сущностей, по-другому разрешает некоторые пограничные случаи с редстоуном и воронками и предлагает настройки, которые сознательно жертвуют точностью ради времени тика. Для сервера сообщества это хорошая сделка. Для технического сервера выживания, где игроки строят фермы с точностью до тика по видео, снятым в vanilla, это постоянный поток жалоб «в одиночной игре работает, а здесь нет».
Путь через Fabric сохраняет ванильный сервер и заменяет его медленные части изнутри. Главное правило основных модов производительности - игра должна вести себя идентично: они переписывают то, как что-то вычисляется, а не результат. Цена - потеря экосистемы плагинов (Fabric не загружает плагины Bukkit), а выигрыш - сервер, который совпадает по поведению с одиночной игрой и работает гораздо экономнее vanilla. Сам выбор в целом разобран в статье Paper, Fabric или vanilla; эта статья - о том, как хорошо сделать сторону Fabric.
Ещё одно преимущество: ни один из модов ниже не нужен на клиенте. Сервер Fabric только с серверными модами принимает немодифицированные ванильные клиенты, так что игроки продолжают пользоваться тем лаунчером, который у них уже есть.
Установка сервера Fabric#
Fabric публикует на своём сайте единый исполняемый jar-файл лаунчера для серверов. Вы выбираете версию Minecraft, версию загрузчика и версию установщика и скачиваете один файл. При первом запуске он скачивает ванильный jar-файл сервера и нужные библиотеки, а затем запускается.
$ java -Xms4G -Xmx4G -jar fabric-server-mc.1.21.1-loader.0.16.5-launcher.1.0.1.jar noguiНомера версий в этом имени файла - только пример; берите актуальные с сайта Fabric для вашей версии Minecraft. Первый запуск создаёт eula.txt; укажите eula=true и запустите снова. После этого у вас обычная ванильная структура - одна папка world с Нижним миром и Эндом внутри, server.properties, logs/ - плюс папка mods/ и папка config/, которая заполняется по мере того, как моды создают свои настройки.
Два правила для папки mods/:
- Версия Minecraft должна совпадать точно. Мод, собранный под 1.21.1, не обязательно загрузится на 1.21.4. На страницах модов есть файл под каждую версию; берите подходящий.
- Проверяйте зависимости. Большинство модов Fabric зависят от Fabric API - это отдельный мод, который тоже кладётся в
mods/. Некоторые моды производительности, в том числе Lithium, намеренно от него не зависят. На странице каждого мода указано, что ему нужно, а сообщение Fabric об отсутствующей зависимости ясно говорит, какой именно.
На панельном хостинге вы загружаете jar-файл лаунчера и моды через файловый менеджер или SFTP и указываете имя jar-файла в настройках запуска. В RE:NODE линейка Minecraft поставляется с Paper, поэтому сервер Fabric - это ваша собственная установка: загрузите лаунчер, укажите на него во вкладке Startup, и панель будет запускать его как любой другой jar-файл. Белого списка разрешённых модов нет, но нет и переключения на Fabric в один клик.
Основная четвёрка#
Эти моды стоят почти на каждом сервере Fabric, где думают о производительности, и они рассчитаны на совместную работу.
| Мод | Что оптимизирует | Меняет поведение? |
|---|---|---|
| Lithium | Игровую логику: ИИ, физику, тики блоков, коллизии, доступ к чанкам | Нет, так задумано |
| FerriteCore | Память, которую занимают состояния блоков и связанные данные | Нет |
| Krypton | Сетевой стек: сжатие, шифрование, обработку пакетов | Нет |
| ModernFix | Время запуска, память и набор мелких исправлений | Нет, за редкими исключениями |
Lithium - главный из них. Он переписывает горячие участки по всему серверу - поиск пути мобов, проверки коллизий сущностей, тики воронок и блочных сущностей, доступ к чанкам и блокам, случайный тик, расчёт взрывов - с прямой целью давать идентичный результат. Настраивается через config/lithium.properties, который изначально пуст. Каждая оптимизация - это mixin, который можно отключить по отдельности, если вы когда-нибудь обнаружите различие в поведении:
# Отключите группу оптимизаций, если подозреваете еёmixin.ai.pathing=falseЭтот файл понадобится редко. Он полезен в основном для поиска виновника методом деления: если механизм ведёт себя не так, как в одиночной игре, отключение групп по одной покажет, причастен ли Lithium, - и в этом случае проект хочет об этом услышать.
FerriteCore уменьшает объём памяти, который Minecraft тратит на представление состояний блоков и связанных данных, устраняя дубликаты структур, которые игра создаёт во множестве копий. На ванильном сервере экономия скромная; на сервере с модами, где тысячи блоков и состояний, она может быть большой. У него есть собственный файл конфигурации mixin в config/ с той же схемой отключения.
Krypton заменяет части сетевого стека более быстрыми реализациями, включая нативный код сжатия и шифрования из проекта прокси Velocity. Выигрыш растёт с числом игроков: при пяти вы его не увидите, при пятидесяти - возможно. На игровое поведение он никак не влияет.
ModernFix начинался как сборник исправлений медленного запуска модпаков и вырос в универсальный мод, который сокращает потребление памяти и время загрузки на Fabric и NeoForge. На сервере с небольшим числом модов он в основном ускоряет запуск. Его опции лежат в config/modernfix-mixins.properties, значения по умолчанию разумны.
C2ME и работа с чанками#
Генерация чанков - самое дорогое, что делает сервер Minecraft, и vanilla выполняет её с ограниченным параллелизмом. C2ME (Concurrent Chunk Management Engine) распараллеливает генерацию, загрузку и сохранение чанков по ядрам. На сервере, где игроки исследуют новый ландшафт, или во время предгенерации разница может быть большой.
Но это и мод из списка, который скорее всего доставит проблемы:
- Он меняет многопоточность внутри генерации мира, а это код, о работе которого моды и датапаки делают определённые предположения. Обычные конфликты - моды генерации мира и сложные датапаки генерации.
- Его выгода растёт с числом ядер. На выделении в одну-две vCPU распараллеливать почти нечего, и C2ME может конкурировать с главным потоком за ту же маленькую долю.
- Его конфигурация в
config/c2me.tomlсодержит опции числа потоков и отдельных функций. Значения по умолчанию стараются быть безопасными; менять их стоит после измерений.
Проверка C2ME простая: возьмите копию мира, сгенерируйте фиксированную область с ним и без него, сравните время и MSPT во время прогона и пройдитесь по границам сгенерированной области в поисках странностей. Если вы один раз сгенерировали весь мир и дальше держите границу, постоянная польза C2ME резко падает, и многие серверы используют его только на этапе предгенерации. Команды Chunky, которые работают на Fabric точно так же, есть в статье граница мира и предгенерация.
Освещение - вторая тяжёлая работа с чанками. Раньше стандартным решением был мод Starlight, затем Mojang переписала ванильный движок освещения, и для новых версий Starlight стал не нужен. ScalableLux продолжает эту идею на свежих версиях Fabric. Относитесь к нему как к C2ME: полезен при интенсивной генерации, но его нужно тестировать, а не принимать на веру.
Моды, которые меняют поведение, и когда они того стоят#
Основная четвёрка сохраняет ванильное поведение. Следующая группа сознательно его меняет, и каждый мод стоит ставить, только если вы знаете, какую проблему он решает.
ServerCore приносит в Fabric настройки в духе Paper: радиусы активации сущностей, динамическую дальность прорисовки и симуляции, которая снижается при росте MSPT, настраиваемые лимиты мобов и ограничения тиков чанков. Это ближайший аналог конфигурации Paper на Fabric, и он меняет ванильное поведение так же, как Paper. Используйте его, если вам нужны моды, совместимые с vanilla, но защита от перегрузки как у Paper.
VMP (Very Many Players) рассчитан на серверы с большим числом игроков: отслеживание сущностей, отправку чанков и прочую работу, которая растёт с каждым игроком. Он важен при десятках игроков, а не при пяти.
Alternate Current заменяет ванильный алгоритм обновления редстоун-пыли гораздо более дешёвым. Ванильная пыль порождает огромное количество лишних обновлений блоков; Alternate Current даёт те же состояния питания с куда меньшим их числом. Порядок обновлений отличается, и это может повлиять на механизм, зависящий от ванильного порядка. Большинство построек работает; некоторые, точные до тика, - нет.
Clumps объединяет сферы опыта в более крупные, чтобы фермы боссов и мобов не заполняли область тысячами сущностей-сфер. Общее количество опыта остаётся прежним.
Carpet - не мод производительности как таковой, но технические серверы ставят его ради команд профилирования и управления и длинного списка необязательных правил. Каждое правило выключено, пока вы его не включите, так что установка Carpet сама по себе ничего не меняет.
| Мод | Когда использовать | На что обратить внимание |
|---|---|---|
| C2ME | Узкое место - исследование мира или предгенерация | Моды генерации мира, маленькие выделения CPU |
| ServerCore | Нужна защита в духе Paper на Fabric | Меняет ванильное поведение |
| VMP | Десятки игроков одновременно | Мало пользы на небольших серверах |
| Alternate Current | Постройки с редстоуном съедают время тика | Порядок обновлений отличается от vanilla |
| Clumps | Фермы опыта устраивают бурю из сфер | На практике ничего |
Что не нужно ставить на сервер#
Самая частая ошибка с производительностью на Fabric - ставить клиентские моды на сервер, потому что их названия звучат как что-то про производительность.
- Sodium, Iris, ImmediatelyFast, Entity Culling и похожие моды оптимизируют рендеринг. Сервер ничего не рендерит. В лучшем случае они ничего не делают, в худшем сервер падает при запуске с
Cannot load class ... in environment type SERVER- так Fabric сообщает, что на выделенном сервере затронут клиентский класс. - Моды шейдеров и ресурсов - из той же категории.
- Сборки «FPS boost» - это клиентские наборы. Прочитайте список и ничего не берите.
Надёжное правило: если на странице мода говорится о кадрах в секунду, это клиентский мод. Если говорится о тиках, памяти, чанках или сети, это может быть серверный мод, и на странице будет указано, нужен ли он и на клиенте. Общее разделение на модов только для сервера, только для клиента и для обоих описано в статье сервер с модами без крашей.
Измерения до и после#
Мод производительности, который нельзя измерить, - это суеверие. Поставьте spark (у него есть сборка для Fabric) раньше всего остального из этого списка и снимите исходные значения:
/spark tps/spark health/spark profiler start... play normally for five to ten minutes .../spark profiler stop/spark tps показывает TPS и MSPT за несколько интервалов; MSPT (миллисекунды на тик) - вот число, которое важно, потому что TPS держится на 20 ровно до момента, когда MSPT переваливает за 50. /spark health показывает память и CPU. Профайлер выдаёт ссылку на flame graph, где видно, на что ушло время тика. В 1.20.3 и новее ванильная команда /tick query даёт тайминги тиков вообще без модов.
Сравнивайте сопоставимое: то же число игроков, та же активность, то же время суток. Затем добавьте один мод, перезапустите и снова профилируйте. Как читать flame graph и где проявляется каждая категория лагов, объясняет статья как читать отчёт spark.
В тот же заход стоит включить несколько ванильных настроек, потому что они часто важнее любого мода:
view-distance=8simulation-distance=6sync-chunk-writes=truenetwork-compression-threshold=256view-distance и simulation-distance - самые сильные рычаги на любом сервере. sync-chunk-writes=false уменьшает подвисания при сохранении ценой немного большего риска повредить чанк, если процесс будет убит посреди записи; оставьте true, если профайлер не показывает, что проблема именно в сохранении. Настройки кучи и сборки мусора разобраны в статье флаги JVM и версии Java, и для Fabric они применимы без изменений.
В RE:NODE консоль показывает графики памяти, CPU и диска относительно реальных лимитов вашего тарифа - это вторая половина измерений: если график CPU упирается в вашу долю, а MSPT высокий, тик ограничен процессором, и моды выше - правильные инструменты. Если же у предела память, помогут FerriteCore и меньшая дальность прорисовки; и помните, что при достижении лимита памяти контейнер останавливается и чисто перезапускается, а не уходит в swap.
Разумный стартовый список#
Для сервера выживания на Fabric с ощущением vanilla:
- Fabric API (он нужен большинству других модов)
- Lithium
- FerriteCore
- Krypton
- ModernFix
- spark
- Chunky для предгенерации; после генерации мира удалите его или оставьте без дела
- C2ME, только если измерения показали, что узкое место - исследование или предгенерация
Этот список сохраняет ванильное поведение, ничего не требует на клиенте и оставляет сервер простым в обновлении: когда выходит новая версия Minecraft, основные моды производительности обычно обновляются одними из первых. Сохраняйте копию рабочей папки mods/ перед каждым обновлением и не обновляйтесь в день релиза. План на случай, если один из модов отстанет, - в статье что делать, когда обновление мода всё сломало.
FAQ#
Нужно ли игрокам устанавливать Lithium и другие моды?
Нет. Lithium, FerriteCore, Krypton, ModernFix, C2ME, spark и Chunky - серверные моды, и сервер Fabric только с серверными модами принимает ванильные клиенты. Игроки могут поставить Sodium или другие клиентские моды ради своего FPS, но серверу это безразлично.
Fabric с Lithium быстрее Paper?
Зависит от того, что тормозит, и делают они разную работу. Paper меняет поведение и предлагает агрессивные настройки; Lithium сохраняет поведение идентичным. Настроенный Paper обычно выдерживает большую нагрузку, а Fabric с Lithium выбирают, когда точная ванильная механика важнее последних нескольких миллисекунд.
Можно ли использовать C2ME вместе с Lithium?
Да, их часто запускают вместе. Конфликты C2ME обычно возникают с модами и датапаками генерации мира, а не с другими модами производительности. Тестируйте на копии мира, особенно перед предгенерацией.
Почему мой сервер Fabric падает с «environment type SERVER»?
В папке mods/ сервера лежит клиентский мод, который попытался загрузить класс, существующий только в игровом клиенте. Уберите с сервера моды рендеринга, шейдеров, HUD и интерфейса. В краш-логе указан мод, который вызвал падение.
Работают ли эти моды на Forge или NeoForge?
Некоторые да. FerriteCore и ModernFix выпускают сборки для обоих загрузчиков. Lithium ориентирован прежде всего на Fabric, а в линейке Forge есть порты той же работы под другими названиями. Проверяйте на странице каждого мода загрузчик и версию Minecraft, которые используете.




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