Przejdź do głównej zawartości

Jak poprawnie pregenerować świat? (Chunky)

Generowanie terenu to najbardziej obciążający proces dla procesora (CPU) na serwerze Minecraft. Kiedy gracz biegnie w nieodkryte rejony, pojedynczy wątek serwera musi w czasie rzeczywistym wykonać miliardy skomplikowanych obliczeń: wygenerować siatkę szumu 3D, wyznaczyć biomy, rozmieścić jaskinie, wstrzyknąć rudy i wygenerować struktury. Jeśli robi to 5 graczy jednocześnie w różnych kierunkach – serwer dławi się i natychmiast gubi TPS-y.

Pregenerowanie rozwiązuje ten problem u źródła. Zmuszamy maszynę, aby wykonała tę tytaniczną pracę "na sucho", zanim wpuścisz graczy. Podczas normalnej rozgrywki serwer nie liczy już żadnej matematyki – po prostu odczytuje gotowe, zapisane bajty z dysku i wysyła do klienta.


Wymagania i instalacja

Poradnik opiera się na darmowym narzędziu Chunky. Występuje ono zarówno jako plugin, jak i modyfikacja. Działa wyłącznie po stronie serwera – gracze nie muszą go instalować u siebie.

  1. Pobierz plik .jar pasujący do Twojego silnika z oficjalnej strony Chunky na Modrinth.
  2. Umieść plik w odpowiednim katalogu serwera:
    • Dla silników Paper / Purpur / Spigot: wrzuć do folderu plugins/.
    • Dla silników Fabric / Forge / NeoForge: wrzuć do folderu mods/.
  3. Uruchom ponownie serwer, aby Chunky wygenerował pliki konfiguracyjne.
Ważne

Wszystkie poniższe komendy wpisuj wyłącznie z poziomu Konsoli w panelu hostingu (pomijając ukośnik / na początku). Silnik Chunky celowo blokuje wywoływanie tych komend zwykłym graczom z poziomu czatu w grze ze względów bezpieczeństwa.


Planowanie i matematyka wagi (Kluczowe!)

Zanim wpiszesz jakąkolwiek komendę, musisz zrozumieć prawo nieliniowego wzrostu wagi świata.

Podwojenie promienia świata nie zwiększa jego wagi dwukrotnie – zwiększa ją mniej więcej czterokrotnie. Dodatkowo w nowszych wersjach Minecrafta (z uwagi na podniesienie limitu wysokości mapy do y=320 oraz gęste podziemne jaskinie) pliki regionów ważą kilkukrotnie więcej niż dawniej.

Zaplanuj wolne miejsce na dysku hostingu na podstawie poniższych, uśrednionych danych dla wersji 1.21+:

Promień (od punktu 0,0)Wymiary fizyczne mapySzacowana waga na dyskuSzacowany czas CPU
1 000 kratek2k x 2k~0.5 GB~2 minuty
2 500 kratek5k x 5k~1.5 GB~11 minut
5 000 kratek (Zalecany)10k x 10k~3 GB~45 minut
7 500 kratek15k x 15k~10 GB~1.5 godziny
10 000 kratek20k x 20k~17 GB~3 godziny
Wskazówka

Dokładną wagę dla niestandardowych wymiarów sprawdzisz w kalkulatorze online: onlinemo.de/world. Dla standardowych serwerów survival optymalny start to promień 5000. Daje to graczom potężny teren do eksploracji, a w razie potrzeby barierę można w przyszłości bezpiecznie poszerzyć.


Ustawienie fizycznej granicy

Najlepszą praktyką jest spięcie Chunky'ego z domyślną barierą świata w Minecraft. Dzięki temu gracze fizycznie nie wyjdą poza wygenerowany przez Ciebie obszar.

Pułapka matematyczna: Silnik Minecrafta w komendzie /worldborder przyjmuje wartość jako Średnicę (od brzegu do brzegu). Chunky oraz ludzie operują pojęciem Promienia (od środka do brzegu). Jeśli chcesz wygenerować świat o promieniu 5000 kratek (w lewo -5000, w prawo +5000), barierze Vanilla musisz podać wartość dokładnie dwa razy większą (10000).

Wpisz kolejno komendy:

worldborder center 0 0
worldborder set 10000

Sprawdź poprawność wpisując komendę: worldborder get. Konsola powinna zwrócić: The world border is currently 10000 blocks wide.
(Wskazówka: na serwerach Forge/Fabric konsola może wymagać pełnej składni: execute in minecraft:overworld run worldborder set 10000).


Konfiguracja zadania w Chunky i Start

Teraz powiemy silnikowi Chunky, aby odczytał stworzoną przed chwilą barierę i rozpoczął proces.

  1. Wybierz wymiar docelowy:

    chunky world world

    (Domyślne nazwy w Paper to: world dla Overworldu, world_nether dla netheru oraz world_the_end dla Endu. Na serwerach Forge/Fabric wpisz np. chunky world minecraft:overworld).

  2. Zleć pobranie współrzędnych z bariery:

    chunky worldborder

    (Konsola zwróci informację: "Set task to center: 0, 0, radius: 5000.0". Upewnij się, że podany radius to dokładnie połowa Twojej bariery Vanilla).

  3. Uruchom generator:

    chunky start

Serwer wejdzie w tryb maksymalnego obciążenia. W konsoli zaczną pojawiać się komunikaty o postępie wyrażone w procentach i szacowanym czasie do końca. W tym czasie na serwerze nie może przebywać żaden gracz.


Zarządzanie procesem i optymalizacja logów

Podczas wielogodzinnego generowania konsola zostanie zalana tysiącami powiadomień. Możesz tym sterować:

  • chunky quiet 15 – zmienia częstotliwość raportów w konsoli na jeden komunikat co 15 sekund (domyślnie jest to 1 sekunda).
  • chunky silent – całkowicie wycisza raporty w konsoli (proces nadal generuje chunki w tle).
  • chunky progress – jednorazowo wyświetla w konsoli aktualny stan procentowy.
  • chunky pause – wstrzymuje generowanie (przydatne, gdy musisz pilnie wejść na serwer).
  • chunky continue – wznawia spauzowane zadanie.
  • chunky cancel – bezpowrotnie anuluje obecne zadanie generowania.

Rozwiązywanie problemów

Serwer wyłączył się z błędem "Out of Memory"

Generowanie milionów obiektów chunków w krótkim czasie zapycha tzw. Garbage Collector w silniku Javy. Maszyna po kilku godzinach ciągłej pracy może spuchnąć w pamięci RAM i wyłączyć się z błędem braku pamięci.

To całkowicie normalne i nie oznacza uszkodzenia mapy.
Chunky zapisuje swój stan na dysku na bieżąco. Jeśli serwer scrashuje:

  1. Włącz serwer ponownie.
  2. Wpisz w konsoli komendę: chunky continue.
  3. Proces ruszy dokładnie od kratek, na których skończył przed crashem.
WSKAZÓWKA:

Aby serwer wznawiał pracę automatycznie po każdym restarcie, wejdź w pliki do plugins/Chunky/config.yml i zmień opcję continue-on-restart na true.