Folia: pelny poradnik po wielowatkowym serwerze Minecraft

Folia: pelny poradnik po wielowatkowym serwerze Minecraft

Folia: pelny poradnik po wielowatkowym serwerze Minecraft

Serwer Minecraft dziala w jednym watku. To bylo normalne w 2011 roku, gdy na serwerze siedzialo 20 osob. Dzis, gdy serwery obsluguja setki i tysiace graczy naraz, jeden watek staje sie waskim gardlem. Folia rozwiazuje ten problem i w tym poradniku omawiamy wszystko: od teorii do praktycznej konfiguracji.

Co to jest Folia

Folia to fork Papera od zespolu PaperMC. Glowna idea: podzielic swiat gry na regiony (regions) i tikowac kazdy region w osobnym watku. Zamiast jednego glownego watku obslugujacego caly swiat sekwencyjnie, Folia rozklada obciazenie miedzy wszystkie dostepne rdzenie procesora.

Technicznie nazywa sie to "regionalized multithreading". Kazdy region to grupa zaladowanych chunkow obslugiwana niezaleznie. Jesli w jednym rogu mapy idzie duza budowa redstone, a w drugim 50 graczy walczy z mobami, te procesy nie przeszkadzaja sobie nawzajem.

Jak Folia rozni sie od Papera

Paper (i Spigot, i Vanilla) dzialaja wedlug jednego schematu: jeden glowny watek tikuje caly swiat 20 razy na sekunde. Wszystkie chunki, wszystkie encje, wszystkie mechanizmy redstone, caly swiat obslugiwany jest sekwencyjnie. Jesli TPS spada do 15, cierpia wszyscy gracze na serwerze.

Folia lamie ten model. Kluczowe roznice:

  • Niezalezne regiony. Kazdy region tikuje sie w swoim watku. Lag w jednym regionie nie dotyka innych.
  • Skalowanie po rdzeniach. Wiecej rdzeni CPU = wiecej rownoleglych regionow. Procesor 8-rdzeniowy jest naprawde wykorzystywany na 8 rdzeni, a nie na jeden.
  • Dynamiczny podzial. Regiony nie sa sztywne. Folia automatycznie laczy je i dzieli w zaleznosci od obciazenia i polozenia graczy.
  • Brak globalnego ticka. Pojecie "serwerowego TPS" w znajomym sensie przestaje istniec. Kazdy region ma swoj TPS.

Kiedy Folia jest naprawde potrzebna

Folia nie jest dla kazdego serwera. Scenariusze, gdzie daje odczuwalna korzysc:

  • Duze serwery survival (200+ graczy). Gdy gracze sa rozproszeni po mapie i tworza obciazenie w roznych punktach.
  • Serwery z ogromnymi swiatami. Jesli masz swiat na 50000+ blokow z aktywnymi bazami na calym terenie.
  • Projekty SMP z technicznymi graczami. Farmy redstone i mob grindery tworza ogromne obciazenie. Z Folia farma jednego gracza nie powali serwera dla wszystkich innych.
  • Serwery, gdzie CPU to waskie gardlo. Jesli twoj procesor jest mocny (Ryzen 9, Xeon), ale uzywany w 15%, bo Minecraft obciaza jeden rdzen.

Kiedy Folii NIE warto uzywac

Uczciwie: dla wiekszosci serwerow Folia jeszcze nie pasuje. Dlaczego:

  • Malo graczy (do 100). Paper swietnie radzi sobie z takim obciazeniem. Folia doda zlozonosci bez odczuwalnej korzysci.
  • Zaleznosc od pluginow. Jesli twoj serwer zbudowany jest na 30+ pluginach, wiekszosc z nich prawdopodobnie nie dziala z Folia. Przesiadka wymaga przepisania albo zamiany.
  • Serwery minigier. Arenas, BedWars, SkyWars - gracze skoncentrowani w malej strefie, wielowatkowosc nie daje korzysci.
  • Jesli nie jestes gotowy do debugowania. Folia jest w aktywnym rozwoju. Bugi beda. Dokumentacja ograniczona. Trzeba byc gotowym ogarniac samodzielnie.

Kompatybilnosc pluginow

To najbardziej bolesny punkt. Folia wymaga, zeby pluginy byly napisane z uwzglednieniem wielowatkowosci. Standardowe pluginy Bukkit/Spigot uzywaja Bukkit Scheduler, ktory dziala w glownym watku. W Folii glownego watku nie ma.

Pluginy ktore juz wspieraja Folia:

  • ViaVersion / ViaBackwards - wsparcie wielu wersji
  • Geyser - crossplay z Bedrock Edition
  • Chunky - pregeneracja swiata
  • Spark - profilowanie wydajnosci
  • TAB - customizacja tablisty
  • LuckPerms - system uprawnien
  • PlaceholderAPI - placeholdery (z zastrzezeniami)
  • FoliaLib - biblioteka do adaptacji pluginow

Pluginy ktore NIE dzialaja z Folia bez modyfikacji:

  • Wiekszosc pluginow ochrony (AntiCheat)
  • WorldEdit (czesciowe wsparcie przez FAWE)
  • Wiekszosc pluginow ekonomicznych
  • Pluginy uzywajace Bukkit.getScheduler()

Przed przejsciem sprawdz kazdy plugin. W repozytorium Folia na GitHubie jest aktualna lista kompatybilnych projektow. Pomocne jest tez szukanie "Folia support" w issues twoich pluginow.

Instalacja i konfiguracja Folia

Krok 1: Pobranie

Folia dostepna jest przez PaperMC. Pobierz ostatni build:

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

Krok 2: Uruchomienie

Start analogicznie do Papera. Stworz skrypt startowy:

#!/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

Wazne: przydzielaj minimum 8 GB RAM dla serwerow z 200+ graczy. Folia zjada wiecej pamieci przez wielowatkowosc.

Krok 3: Konfiguracja

Po pierwszym uruchomieniu Folia stworzy standardowe pliki konfiguracyjne Papera plus swoje. Kluczowe ustawienia w config/paper-global.yml:

# Liczba watkow do tickowania regionow
# -1 = automatycznie (polecane)
# Folia sama okresli optymalna liczbe na podstawie CPU
region-threads: -1

W pliku config/paper-world-defaults.yml skonfiguruj zasieg widocznosci pod obciazenie:

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

Krok 4: Migracja swiata

Folia pracuje na tych samych plikach swiata co Paper. Po prostu skopiuj foldery world, world_nether, world_the_end. Zadnej konwersji nie trzeba. Ale zrob backup przed przeniesieniem.

Porownanie wydajnosci: Folia vs Paper

Realne testy na serwerze z Ryzen 9 7950X (16 rdzeni / 32 watki), 64 GB DDR5:

MetrykaPaperFolia
200 graczy, TPS14-1619.8-20.0
400 graczy, TPS8-10 (niestabilne)18.5-19.5
Obciazenie CPU12-15% (1 rdzen na 100%)45-60% (wszystkie rdzenie)
Zuzycie RAM12 GB18 GB
Opoznienie komend czatu50-200 ms5-20 ms

Wyniki mowia same za siebie. Przy malej liczbie graczy (do 50) roznica jest minimalna. Folia rozwija skrzydla przy 200+ graczach, gdy jeden watek fizycznie nie daje rady.

Sprawdzenie kompatybilnosci pluginow

Przed przejsciem na Folia sprawdz swoje pluginy:

  1. Zobacz plugin.yml. Jesli plugin deklaruje folia-supported: true, jest zaadaptowany.
  2. Szukaj w kodzie zrodlowym. Jesli plugin wywoluje Bukkit.getScheduler().runTask() albo runTaskTimer(), jest niekompatybilny.
  3. Sprawdz FoliaLib. Niektore pluginy uzywaja biblioteki FoliaLib dla kompatybilnosci. To dobry znak.
  4. Testuj na staging. Uruchom osobny serwer testowy z Folia i sprawdz kazdy plugin recznie. Niektore pluginy "niby dzialaja", ale padaja pod obciazeniem.

Przyszlosc Folia

PaperMC aktywnie rozwija Folia. Co sie spodziewa:

  • Rozszerzenie API. Wiecej narzedzi dla developerow pluginow, upraszczajacych migracje.
  • Polaczenie z Paperem. Dlugoterminowo wielowatkowosc moze stac sie czescia glownego Papera.
  • Wzrost ekosystemu pluginow. Wraz z rosnaca popularnoscia Folia coraz wiecej autorow adaptuje swoje pluginy.
  • Poprawa wydajnosci. Obecna implementacja daleka jest od idealu. Zespol pracuje nad zmniejszeniem narzutu synchronizacji miedzy regionami.

Folia to nie zastepstwo Papera tu i teraz. To spojrzenie w przyszlosc serwerow Minecraft. Jesli Mojang nie doda natywnej wielowatkowosci (a na razie nie planuja), Folia pozostanie jedynym realnym rozwiazaniem dla duzych serwerow.

Ochrona serwerow Folia przed DDoS

Serwery Folia z 200+ graczami sa smakowitym celem atakow DDoS. Duza spolecznosc, powazna infrastruktura, zmotywowani atakujacy. My w MineGuard pracujemy z serwerami Folia dokladnie tak samo jak z Paperem. Zadna specjalna konfiguracja nie jest potrzebna: nasza ochrona dziala na poziomie sieci, ponizej rdzenia serwera. Nie ma znaczenia, czy uzywasz Papera, Folii, Purpura czy nawet Vanilli - proxy filtrujace ruch dziala zanim pakiety dotra do twojego serwera.

Jesli budujesz duzy serwer Folia, zadbaj o ochrone zawczasu. Przeprowadzka pod ochrone w trakcie ataku zawsze jest trudniejsza i drozsza niz prewencyjne podlaczenie.

Podsumowanie

Folia to powazny krok naprzod dla serwerow Minecraft o wysokim obciazeniu. Wielowatkowosc po regionach pozwala wykorzystac pelna moc nowoczesnych procesorow, a nie ograniczac sie do jednego rdzenia. Ale przejscie wymaga przygotowania: sprawdz pluginy, przetestuj na stagingu i badz gotowy, ze czesc znajomego softu trzeba bedzie zamienic.

Dla serwerow z 200+ graczami, gdzie TPS ciagle siada, Folia moze byc rozwiazaniem, ktorego szukales. Dla malych serwerow Paper nadal pozostaje najlepszym wyborem.


Chroń swój serwer przed atakami DDoS

Darmowa ochrona z konfiguracją w 5 minut. 1 TB ruchu w zestawie.

Wypróbuj za darmo


Powiązane artykuły