// Minecraft

Pregenerowanie chunków dla płynniejszego serwera Minecraft

Pregenerowanie chunków dla płynniejszego serwera Minecraft

Znasz ten moment: ktoś podpina fajerwerki pod elytrę, leci w stronę horyzontu i cały serwer zaczyna się zacinać. To nie przypadek. Generowanie nowych fragmentów świata to jedna z najcięższych rzeczy, jakie robi twój serwer Minecraft, a domyślnie dzieje się to dokładnie w najgorszym momencie: gdy gracze są online.

Pregenerowanie odwraca tę sytuację. Pozwalasz serwerowi zbudować świat z wyprzedzeniem, w wybranym przez ciebie momencie, więc eksploracja sprowadza się potem do wczytywania gotowych chunków zamiast tworzenia ich na bieżąco. Kosztuje cię to trochę miejsca na dysku i jedną noc obliczeń, ale oszczędza lag-spike'ów w każdej gorącej chwili później.

Dlaczego nowe chunki są takie ciężkie

Chunk to kolumna o wymiarach 16 na 16 bloków, którą serwer generuje w całości. Składa się na to sporo pracy: obliczanie ukształtowania terenu, drążenie jaskiń, rozmieszczanie struktur, rozsiewanie drzew i rud oraz obliczanie światła. Jeden chunk to nic wielkiego, ale eksplorujący gracz żąda ich dziesiątek naraz — a z fajerwerkami pod elytrą szybko robią się z tego setki na minutę.

Nowoczesne oprogramowanie serwerowe, takie jak Paper, przenosi część tej pracy do osobnych wątków, ale obliczenia to obliczenia: w godzinach szczytu generowanie chunków objawia się przycięciami, rubberbandingiem albo spadającym TPS. Bez żadnych działań tak już zostanie, bo każdy nowy gracz idący w inną stronę otwiera kolejny świeży teren.

Nie masz pewności, czy to naprawdę generowanie chunków jest winowajcą? Najpierw zmierz to profilerem spark; w bazie wiedzy o sparku znajdziesz, jak czytać taki pomiar. Lagi częściej mają kilka przyczyn niż jedną.

Najpierw world border, dopiero potem generowanie

Pregenerowanie bez granicy to wylewanie wody z tonącej łodzi: świat Minecrafta jest w praktyce niemal nieskończony, więc najpierw musisz określić, jak duży w ogóle móże się stać. Robisz to wbudowanym world borderem:

  1. /worldborder center 0 0 ustawia środek granicy w punkcie początkowym świata (użyj współrzędnych swojego spawnu, jeśli leży gdzie indziej).
  2. /worldborder set 10000 ustala szerokość świata na 10 000 bloków.

Uważaj na klasyczną pułapkę: liczba przy set to średnica, nie promień. Border 10 000 oznacza więc 5 000 bloków od środka do krawędzi. Niezależnie od pregenerowania taka granica to i tak dobry pomysł: utrzymuje świat i backupy w rozsądnych rozmiarach, a graczy blisko siebie.

Zrób to jednak zanim twoja społeczność zacznie budować na dziko, i zapowiedz to. Border zmniejszony po fakcie zostawia bazy graczy poza granicą — a takie niespodzianki kosztują cię zaufanie. Powiększanie natomiast zawsze przechodzi bez problemów.

Tak pregenerujesz z Chunky

Chunky to standardowy wybór do tej roboty: darmowy, aktywnie rozwijany, dostępny jako plugin i jako mod. Podstawa to garść komend:

  1. Najpierw zrób pełny backup świata.
  2. chunky worldborder — Chunky automatycznie przyjmuje obszar wewnątrz twojego world bordera jako zaznaczenie.
  3. chunky start — generowanie rusza, a postęp pojawia się okresowo w konsoli.
  4. chunky pause i chunky continue — pauzować i wznawiać możesz zawsze, także po restarcie; Chunky pamięta, gdzie skończył.

Serwer podczas generowania normalnie pozostaje online, ale spodziewaj się wyraźnie gorszej wydajności, dopóki proces trwa. Zaplanuj go więc na ciche godziny i śmiało pauzuj, gdy wieczorem jest dużo graczy. Czas trwania zależy od promienia i procesora, na którym działa serwer: od godzinki dla małego świata po całą noc lub dłużej dla dużego.

Warto wiedzieć: nie musisz kończyć tego za jednym razem. Pozwól Chunky pracować co noc kilka godzin i pauzuj za dnia; po paru dniach świat będzie równie dobrze gotowy. A jeśli później powtórzysz generowanie, Chunky po prostu pominie wszystko, co już istnieje — podwójnej roboty nigdy nie wykonuje.

Ile powinno się pregenerować?

Więcej nie znaczy automatycznie lepiej. Najpierw spójrz, jak twoi gracze naprawdę korzystają ze świata: na większości serwerów prawie wszyscy grają w promieniu kilku tysięcy bloków od spawnu, z pojedynczym odkrywcą jako wyjątkiem. Kilka wskazówek:

  • Mały serwer survival ze znajomymi: border od 5 000 do 10 000 bloków wystarczy z zapasem na miesiące gry.
  • Serwer publiczny: licz szerzej, na przykład border od 10 000 do 20 000, w zależności od tego, ilu odkrywców się spodziewasz.
  • Nether: nie zapomnij o nim, zwłaszcza gdy gracze budują tam długie tunele podróżne. Przez skalę 1 do 8 border Netheru musi mieć tylko jedną ósmą wielkości bordera overworldu.
  • End: zwykle najmniej pilny; wiele serwerów pomija tu pregenerowanie albo trzyma go na małym obszarze.

Lepiej wygeneruj skromny obszar, który później rozszerzysz, niż od razu gigantyczny świat „na wszelki wypadek”. Rozszerzanie jest proste: powiększasz border i uruchamiasz Chunky ponownie — istniejące chunki pomija sam. Jeśli przy okazji chcesz też zmniejszyć obciążenie wczytánych chunków, przyjrzyj się view-distance; w omówieniu server.properties przeczytasz, które ustawienia mają tu znaczenie.

Ile to kosztuje: dysk i inne minusy

Uczciwie mówiąc, pregenerowanie ma swoją cenę. Najważniejsze punkty:

  • Miejsce na dysku: każdy wygenerowany chunk leży na dysku, nawet jeśli nikt tam nigdy nie dotrze. Dla overworldu 10 000 na 10 000 bloków licz się szybko z wieloma gigabajtami, zależnie od terenu. I rośnie to gwałtownie: dwa razy większy promień oznacza cztery razy więcej chunków.
  • Backupy: stają się proporcjonalnie większe i wolniejsze. Sprawdź więc, ile miejsca ma twój pakiet, zanim wybierzesz ogromny promień.
  • Przestarzałe chunki: wygenerowane chunki zachowują teren z wersji Minecrafta, w której powstały. Gdy wyjdzie aktualizacja z nowymi biomami czy strukturami, zobaczysz je tylko na świeżym terenie. Wiele serwerów po takiej aktualizacji celowo powiększa border, żeby nowy teren powstał poza nim.
  • Żaden cudowny środek: pregenerowanie eliminuje tylko koszt generowania. Lagi od farm, entity czy ciężkich pluginów w istniejącym obszarze zostają bez zmian.

Serwer, który to udźwignie

Pregenerowanie opiera się głównie na CPU i dysku, a potem z rezultatu korzysta każdy gracz. W MC-Node twój serwer działa na własnym sprzęcie z dyskami NVMe w centrum danych Previder w Hengelo, z ochroną DDoS w cenie — a właśnie szybki dysk pomaga błyskawicznie wczytywać te wszystkie gotowe chunki. Wybrane pakiety:

PakietCena miesięcznie
Cobblestone2,16 zł
Coal9,50 zł
Iron14,26 zł
Redstone23,76 zł
Diamond33,26 zł
Diamond - Premium75,60 zł

Wszystkie pakiety możesz wypowiedzieć co miesiąc, więc możesz zacząć od małego i skalować, gdy urosną świat i liczba graczy. Pełna oferta czeka w sklepie Minecraft MC-Node. Ustaw border, pozwól Chunky przemielić noc i przy następnym locie na elytrze nikt nie zauważy niczego na TPS.

// WYPRÓBUJ SAM
Twój serwer Minecraft online w 60 sekund
Zobacz pakiety →