Przejdź do treści
CraftRadar
Redakcja serwisu

Chunk w Minecrafcie — co to jest i jak wpływa na wydajność

Świat Minecrafta jest podzielony na chunki 16×16. Każdy z nich ładuje się, generuje i symuluje osobno. Tłumaczymy, jak chunki wpływają na wydajność serwera i co z tym zrobić.

Świat Minecrafta jest podzielony na chunki — bloki 16×16, na pełnej wysokości świata. Każdy chunk to osobna jednostka generowania, ładowania, zapisywania i symulowania. Dla gracza chunk jest niewidoczny. Dla administratora serwera — to nazwy plików, wąskie gardła wydajnościowe i metryka, którą trzeba mieć pod kontrolą.

Chunk w Minecrafcie – pajęczy mob na serwerze Minecraft

Czym jest chunk?

Chunk to fragment świata o wymiarach 16 × 16 bloków w poziomie i pełnej wysokości w pionie (od -64 do 320 w obecnych wersjach). To 384 × 256 = ok. 100 tys. bloków na chunk.

Świat Minecrafta to praktycznie nieskończona siatka chunków. Generowane są na żądanie, gdy gracz zbliży się do nieodkrytego obszaru.

Cykl życia chunka

  1. Generation — chunk powstaje z noise function (krajobraz, biomy, struktury).
  2. Loaded — chunk jest w pamięci, gracze go widzą i moga z nim wchodzić w interakcję.
  3. Ticking — chunk jest w simulation-distance, serwer aktywnie symuluje świat (moby, redstone).
  4. Inactive — chunk wciąż w pamięci, ale poza simulation-distance.
  5. Unloaded — chunk zapisany na dysk, usunięty z pamięci.

Każda zmiana stanu kosztuje. Optymalizacja chunków to przede wszystkim minimalizowanie tych przejść.

Region files

Chunki zapisywane są w plikach .mca w folderze world/region/. Każdy plik trzyma 32×32 = 1024 chunków. Format Minecrafta używa NBT z kompresją zlib.

world/
  region/
    r.0.0.mca       # chunki 0-31, 0-31
    r.0.1.mca       # chunki 0-31, 32-63
    r.-1.0.mca      # chunki -32 do -1, 0-31
    ...

Po godzinie eksploracji świat publicznego serwera może mieć 1000+ plików .mca = setki MB.

Wpływ chunków na wydajność

Każdy chunk to praca:

  • Generation — 5–30 ms na chunk.
  • Tick — 0.1–0.5 ms (zależnie od liczby entity).
  • Save — 1–5 ms na chunk.
  • Load — 1–10 ms (zależnie od dysku).

30 graczy w simulation-distance=4 to ~30 × π × 4² ≈ 1500 ticking chunków co tick. To dużo pracy CPU.

Anti-xray a chunki

Paper anti-xray modyfikuje chunki przed wysłaniem do klienta — diamenty są zastępowane „obfuscation blocks". Klient nie widzi rud przez ściany, nawet z cheatami.

Włączenie kosztuje ~10–15% więcej CPU przy ładowaniu chunków, ale to standardowa cena dla bezpieczeństwa.

Granice chunków

F3 + G w grze pokazuje granice chunków. Złota informacja dla buildersów:

  • farmy mobów najlepiej budować na granicy chunków,
  • spawn light wynosi 16 bloków = chunk,
  • portale Netheru łączą się tylko, gdy są w „zachodnim" chunku,
  • ender pearle ładują chunk, gdzie wylądują.
Chunk w Minecrafcie – snapshot Minecrafta na serwerze Minecraft

Pre-generowanie

Najlepszy sposób na zmniejszenie obciążenia. Plugin Chunky:

/chunky world world
/chunky radius 5000
/chunky start

Generuje wszystkie chunki w promieniu 5000 bloków. Po zakończeniu gracze nie wymuszają nowej generacji — eksploracja kosztuje tylko ładowanie z dysku.

World border

Granica świata zatrzymuje generowanie nowych chunków. Komenda /wb:

/wb world set 5000
/wb damage set 2 0
/wb warning distance set 100

Po pre-generacji + ustawieniu bordera — zero nowych chunków. To zwykle największy zysk wydajności na publicznym serwerze.

Forceload

Spawn powinien być zawsze załadowany. Komenda /forceload add:

/forceload add 0 0 32 32

Forceloadowane chunki nie są wyładowywane, nawet gdy nie ma graczy. Idealne dla spawn'u, kluczowych farm i głównych baz administracyjnych.

Lagiczne chunki

Czasem jeden chunk z 1000 entity, gigantyczną farmą mobów lub skomplikowanym redstone potrafi zarzynać serwer. Plugin LaggRemover lub spark:

/spark heatmap chunks

Pokaże, które chunki są najgorętsze. Zwykle to 5–10 chunków zżera 80% pracy serwera. Po ich zoptymalizowaniu (ograniczenie entity) serwer odżywa.

Kompresja chunków

Pliki .mca są skompresowane (zlib). Średni chunk to ~10–50 KB na dysku, ale w pamięci może zajmować 200+ KB. To jeden z powodów, dla których RAM-fs daje takie zyski.

Niektóre serwery używają zstd zamiast zlib (Paper experimental). Lepsza kompresja, mniejsze pliki, ale niewielki narzut CPU.

Podsumowanie

Chunk to atom świata Minecrafta — 16×16 bloków, jednostka ładowania, generowania, zapisywania. Większość problemów wydajnościowych serwera wynika z chunków: generowanie nowych, ładowanie z dysku, ticking 1500 chunków na raz, lagging chunki z farmami.

Pre-generowanie + world border + spark heatmap to trójka, która rozwiązuje 90% chunkowych problemów wydajnościowych. Zrozumienie chunków to fundament pracy każdego administratora serwera Minecraft.

Dodaj serwer

Wpisz adres serwera Minecraft, aby dodać go do listy. Dodanie jest darmowe.

Nie masz jeszcze serwera? Zobacz, jak go założyć.