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.
- Pobierz plik
.jarpasujący do Twojego silnika z oficjalnej strony Chunky na Modrinth. - 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/.
- Dla silników Paper / Purpur / Spigot: wrzuć do folderu
- Uruchom ponownie serwer, aby Chunky wygenerował pliki konfiguracyjne.
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 mapy | Szacowana waga na dysku | Szacowany czas CPU |
|---|---|---|---|
| 1 000 kratek | 2k x 2k | ~0.5 GB | ~2 minuty |
| 2 500 kratek | 5k x 5k | ~1.5 GB | ~11 minut |
| 5 000 kratek (Zalecany) | 10k x 10k | ~3 GB | ~45 minut |
| 7 500 kratek | 15k x 15k | ~10 GB | ~1.5 godziny |
| 10 000 kratek | 20k x 20k | ~17 GB | ~3 godziny |
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.
-
Wybierz wymiar docelowy:
chunky world world(Domyślne nazwy w Paper to:
worlddla Overworldu,world_netherdla netheru orazworld_the_enddla Endu. Na serwerach Forge/Fabric wpisz np.chunky world minecraft:overworld). -
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).
-
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:
- Włącz serwer ponownie.
- Wpisz w konsoli komendę:
chunky continue. - Proces ruszy dokładnie od kratek, na których skończył przed crashem.
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.