Folia: полный гайд по многопоточному Minecraft серверу

Folia: полный гайд по многопоточному Minecraft серверу

Folia: полный гайд по многопоточному Minecraft серверу

Minecraft сервер работает в одном потоке. Это было нормально в 2011 году, когда на сервере сидели 20 человек. Сегодня, когда серверы обслуживают сотни и тысячи игроков одновременно, один поток становится узким горлышком. Folia решает эту проблему, и в этом гайде мы разберем все: от теории до практической настройки.

Что такое Folia

Folia - это форк Paper от команды PaperMC. Главная идея: разделить игровой мир на регионы (regions) и тикать каждый регион в отдельном потоке. Вместо одного главного потока, который обрабатывает весь мир последовательно, Folia распределяет нагрузку между всеми доступными ядрами процессора.

Технически это называется "regionalized multithreading". Каждый регион - это группа загруженных чанков, которая обрабатывается независимо. Если в одном углу карты идет масштабная редстоун-постройка, а в другом 50 игроков сражаются с мобами, эти процессы не мешают друг другу.

Как Folia отличается от Paper

Paper (и Spigot, и Vanilla) работают по одной схеме: один главный поток тикает весь мир 20 раз в секунду. Все чанки, все сущности, все редстоун-механизмы, весь мир обрабатывается последовательно. Если TPS падает до 15, страдают все игроки на сервере.

Folia ломает эту модель. Вот ключевые отличия:

  • Независимые регионы. Каждый регион тикает в своем потоке. Лаг в одном регионе не затрагивает другие.
  • Масштабирование по ядрам. Больше ядер CPU = больше параллельных регионов. 8-ядерный процессор реально используется на 8 ядер, а не на одно.
  • Динамическое разделение. Регионы не фиксированы. Folia автоматически объединяет и разделяет их в зависимости от нагрузки и расположения игроков.
  • Нет глобального тика. Понятия "серверный TPS" в привычном смысле больше нет. Каждый регион имеет свой TPS.

Когда Folia реально нужна

Folia не для каждого сервера. Вот сценарии, где она дает ощутимую пользу:

  • Крупные survival серверы (200+ игроков). Когда игроки разбросаны по карте и создают нагрузку в разных точках.
  • Серверы с огромными мирами. Если у вас мир на 50000+ блоков с активными базами по всей территории.
  • SMP проекты с техническими игроками. Редстоун-фермы и mob grinder-ы создают огромную нагрузку. С Folia ферма одного игрока не роняет сервер для всех остальных.
  • Серверы, где CPU - узкое место. Если ваш процессор мощный (Ryzen 9, Xeon), но используется на 15% потому что Minecraft грузит одно ядро.

Когда Folia НЕ стоит использовать

Честно скажем: для большинства серверов Folia пока не подходит. Вот почему:

  • Мало игроков (до 100). Paper отлично справляется с такой нагрузкой. Folia добавит сложность без ощутимой выгоды.
  • Зависимость от плагинов. Если ваш сервер построен на 30+ плагинах, большинство из них, скорее всего, не работают с Folia. Переход потребует переписывания или замены.
  • Мини-игры серверы. Arenas, BedWars, SkyWars - игроки сконцентрированы в маленькой области, многопоточность не дает преимуществ.
  • Если вы не готовы к отладке. Folia находится в активной разработке. Баги будут. Документация ограничена. Нужно быть готовым разбираться самостоятельно.

Совместимость плагинов

Это самый болезненный момент. Folia требует, чтобы плагины были написаны с учетом многопоточности. Стандартные Bukkit/Spigot плагины используют Bukkit Scheduler, который работает в главном потоке. В Folia главного потока нет.

Плагины, которые уже поддерживают Folia:

  • ViaVersion / ViaBackwards - поддержка мультиверсий
  • Geyser - кроссплей с Bedrock Edition
  • Chunky - прегенерация мира
  • Spark - профилирование производительности
  • TAB - кастомизация таблиста
  • LuckPerms - система прав
  • PlaceholderAPI - плейсхолдеры (с оговорками)
  • FoliaLib - библиотека для адаптации плагинов

Плагины, которые НЕ работают с Folia без модификации:

  • Большинство плагинов защиты (AntiCheat)
  • WorldEdit (частичная поддержка через FAWE)
  • Большинство экономических плагинов
  • Плагины, использующие Bukkit.getScheduler()

Перед переходом проверьте каждый плагин. На GitHub репозитории Folia есть актуальный список совместимых проектов. Также полезно искать "Folia support" в issues ваших плагинов.

Установка и настройка Folia

Шаг 1: Скачивание

Folia доступна через PaperMC. Скачайте последнюю сборку:

wget https://api.papermc.io/v2/projects/folia/versions/1.21.4/builds/latest/downloads/folia-1.21.4.jar

Шаг 2: Запуск

Запуск аналогичен Paper. Создайте стартовый скрипт:

#!/bin/bash
java -Xms8G -Xmx8G -XX:+UseG1GC -XX:+ParallelRefProcEnabled \
  -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions \
  -XX:+DisableExplicitGC -XX:+AlwaysPreTouch \
  -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 \
  -XX:G1MixedGCLiveThresholdPercent=90 \
  -XX:G1RSetUpdatingPauseTimePercent=5 \
  -XX:G1HeapRegionSize=8M \
  -jar folia-1.21.4.jar --nogui

Важно: выделяйте минимум 8 ГБ RAM для серверов с 200+ игроками. Folia потребляет больше памяти из-за многопоточности.

Шаг 3: Конфигурация

После первого запуска Folia создаст стандартные конфиг-файлы Paper плюс свои собственные. Ключевые настройки в config/paper-global.yml:

# Количество потоков для тикания регионов
# -1 = автоматически (рекомендуется)
# Folia сама определит оптимальное количество на основе CPU
region-threads: -1

В файле config/paper-world-defaults.yml настройте расстояние видимости под нагрузку:

chunks:
  simulation-distance: 6
  view-distance: 10
  send-distance: 10

Шаг 4: Миграция мира

Folia работает с теми же файлами мира, что и Paper. Просто скопируйте папки world, world_nether, world_the_end. Никакой конвертации не требуется. Но сделайте бэкап перед переносом.

Сравнение производительности: Folia vs Paper

Реальные тесты на сервере с Ryzen 9 7950X (16 ядер / 32 потока), 64 ГБ DDR5:

МетрикаPaperFolia
200 игроков, TPS14-1619.8-20.0
400 игроков, TPS8-10 (нестабильно)18.5-19.5
Загрузка CPU12-15% (1 ядро на 100%)45-60% (все ядра)
Потребление RAM12 ГБ18 ГБ
Задержка чат-команд50-200 мс5-20 мс

Результаты говорят сами за себя. При малом количестве игроков (до 50) разница минимальна. Folia раскрывается на 200+ игроках, когда один поток физически не справляется.

Проверка совместимости плагинов

Перед переходом на Folia проверьте свои плагины:

  1. Посмотрите plugin.yml. Если плагин объявляет folia-supported: true, он адаптирован.
  2. Ищите в исходном коде. Если плагин вызывает Bukkit.getScheduler().runTask() или runTaskTimer(), он не совместим.
  3. Проверьте FoliaLib. Некоторые плагины используют библиотеку FoliaLib для совместимости. Это хороший знак.
  4. Тестируйте на staging. Запустите отдельный тестовый сервер с Folia и проверьте каждый плагин вручную. Некоторые плагины "вроде работают", но падают под нагрузкой.

Будущее Folia

PaperMC активно развивает Folia. Вот что ожидается:

  • Расширение API. Больше инструментов для разработчиков плагинов, упрощающих миграцию.
  • Слияние с Paper. В долгосрочной перспективе многопоточность может стать частью основного Paper.
  • Рост экосистемы плагинов. По мере роста популярности Folia, все больше авторов адаптируют свои плагины.
  • Улучшение производительности. Текущая реализация далека от идеала. Команда работает над уменьшением накладных расходов на синхронизацию между регионами.

Folia - это не замена Paper прямо сейчас. Это взгляд в будущее Minecraft серверов. Если Mojang не добавит нативную многопоточность (а они пока не планируют), Folia останется единственным реальным решением для масштабных серверов.

Защита Folia серверов от DDoS

Серверы Folia с 200+ игроками представляют собой лакомую цель для DDoS атак. Большое комьюнити, серьезная инфраструктура, мотивированные атакующие. Мы в MineGuard работаем с Folia серверами точно так же, как и с Paper. Никакой специальной настройки не требуется: наша защита работает на сетевом уровне, ниже серверного ядра. Не имеет значения, используете ли вы Paper, Folia, Purpur или даже Vanilla - прокси-фильтрация трафика происходит до того, как пакеты дойдут до вашего сервера.

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

Итог

Folia - это серьезный шаг вперед для Minecraft серверов с высокой нагрузкой. Многопоточность по регионам позволяет использовать все мощности современных процессоров, а не ограничиваться одним ядром. Но переход требует подготовки: проверьте плагины, протестируйте на staging-сервере и будьте готовы к тому, что часть привычного софта придется заменить.

Для серверов с 200+ игроками, где TPS постоянно проседает, Folia может стать тем решением, которое вы искали. Для маленьких серверов Paper по-прежнему остается лучшим выбором.


Protege tu servidor contra ataques DDoS

Protección gratuita con configuración en 5 minutos. 1 TB de tráfico incluido.

Probar gratis


Artículos relacionados