Minecraft chunks laden traag: fixes

Je loopt door je Minecraft-wereld en om je heen laden chunks niet bij. Lege vlaktes, ontbrekende blokken, of je valt zelfs door de wereld heen omdat de grond er nog niet is. Traag ladende chunks zijn niet alleen irritant; ze maken het spel oneerlijk als je in PvP een gebied betreedt dat jouw client nog niet heeft geladen. In dit artikel leg ik uit waarom chunks traag laden en hoe je het oplost.

Wat zijn chunks en waarom zijn ze belangrijk?

Een chunk is een kolom van 16x16 blokken, van bedrock tot de bouwlimiet. De Minecraft-wereld is opgedeeld in duizenden chunks, maar de server laadt alleen de chunks rond elke speler. Wanneer een speler beweegt, moeten nieuwe chunks worden geladen (van schijf of gegenereerd als ze nieuw zijn) en naar de client worden gestuurd. Als dit proces te traag is, ziet de speler lege gebieden of ervaart rubberband-lag.

Oorzaken van traag chunk loading

  1. Trage opslagmedia: chunks worden gelezen van de schijf. Een HDD is hier aanzienlijk trager dan een SSD, en een SSD is trager dan NVMe. Bij het laden van tientallen chunks per seconde maakt het opslagtype een groot verschil.
  2. Niet genoeg RAM voor cache: de server houdt recent geladen chunks in het geheugen. Als er te weinig RAM is, moeten chunks steeds opnieuw van schijf worden gelezen in plaats van uit de cache te komen.
  3. Zware worldgen door mods of datapacks: als een speler een nog niet bestaand gebied betreedt, moet de server die chunks genereren. Mods zoals Terralith of datapacks die de wereldgeneratie veranderen, maken dit proces vele malen zwaarder dan standaard.
  4. Te veel entities in chunks: een chunk vol met honderden mobs, item frames of armor stands kost meer tijd om te laden en te serialiseren. Entity-rijke chunks zijn merkbaar trager.
  5. Single-threaded chunk loading: op Vanilla en Spigot wordt chunk loading op de hoofdthread afgehandeld. Dit betekent dat het laden van chunks concurreert met alles wat de server verder doet (mob AI, redstone, tick processing). Paper en Purpur hebben async chunk loading, wat dit probleem grotendeels oplost.
  6. Te hoge view distance: een view distance van 16 laadt 1089 chunks per speler (33x33). Bij 10 zijn dat er 441 (21x21). Dat is meer dan de helft minder. Met meerdere spelers loopt het snel op.

Oplossingen

1. Gebruik Paper of Purpur

Paper's async chunk loading is de grootste verbetering die je kunt doen. Het verplaatst chunk loading van de hoofdthread naar aparte threads, zodat het laden van chunks niet meer concurreert met de game-tick. Purpur bouwt hierop voort met extra optimalisaties. Als je nog op Spigot of Vanilla draait, is overstappen naar Paper de eerste en belangrijkste stap.

2. Verlaag de view distance

Stel de view-distance in server.properties in op 8 of 10. Dit is de server-side render-afstand. Spelers kunnen hun client-side render-afstand hoger instellen; de server stuurt dan geen chunks buiten zijn eigen limiet. Voor de meeste servers is 8 tot 10 een goede balans tussen zichtbaarheid en prestaties.

3. Pregenereer je wereld

Gebruik de Chunky-plugin om je wereld vooraf te genereren. Dit voorkomt dat de server chunks on-the-fly moet genereren wanneer spelers nieuwe gebieden verkennen. Genereer een gebied dat past bij je wereldgrens (bijvoorbeeld 10.000 blokken in elke richting). Dit kost eenmalig tijd, maar daarna laadt elke chunk direct van schijf in plaats van berekend te worden.

4. Beperk entities

Stel mob caps in via bukkit.yml of Paper's configuratie. Standaardwaarden zijn vaak te hoog voor servers met veel spelers. Verlaag monster-spawns, animal-spawns en water-animal-spawns. Ruim entity-rijke gebieden op met WorldEdit of handmatig. Overweeg een plugin die dropped items na een minuut automatisch verwijdert.

5. Gebruik NVMe-opslag

NVMe-schijven zijn 5 tot 10 keer sneller dan SATA SSD's bij willekeurige lees- en schrijfbewerkingen. Chunks laden is precies dat soort werkbelasting: veel kleine bestanden snel achter elkaar lezen. Als je host NVMe aanbiedt, is het de upgrade waard. HostValues gebruikt NVMe-opslag op alle plannen.

6. Wijs meer RAM toe

Meer RAM betekent meer chunks in de cache. Stel de -Xmx flag in op minimaal 4 GB voor een server met mods, of 6 tot 8 GB voor grote modpacks. Gebruik niet meer dan je plan toestaat; het besturingssysteem heeft ook geheugen nodig.

7. Optimaliseer garbage collection

De Aikar JVM flags verbeteren hoe Java geheugen opruimt. Standaard Java garbage collection kan pauzemomentjes veroorzaken ("lag spikes") waarin ook chunk loading even stopt. De Aikar flags stellen de G1 garbage collector zo in dat opruiming in kleinere, frequentere rondes verloopt. Voeg ze toe aan je startup-commandoregel voor merkbaar soepelere chunk loading.

Wil je chunks die razendsnel laden? HostValues Minecraft-hosting draait op NVMe-opslag met snelle CPU's, zodat chunks laden voordat je ze mist.

Moet ik de hele wereld pregenereren?

Niet de hele wereld, maar wel het gebied waar je spelers actief zullen zijn. Stel een wereldgrens in en pregenereer alles daarbinnen. Dit is het effectiefst bij modpacks met zware wereldgeneratie (Terralith, BOP). Voor een vanillaserver is het minder noodzakelijk, maar het helpt alsnog bij de eerste verkenning. Het pregenereren zelf kost een paar uur tot een dag, afhankelijk van de grootte.

Wat is het verschil tussen view distance en simulation distance?

View distance bepaalt hoeveel chunks de server naar de client stuurt om te renderen. Simulation distance bepaalt in hoeveel chunks de server mobs laat spawnen, redstone laat tikken en gewassen laat groeien. Je kunt de simulation distance lager zetten dan de view distance: de speler ziet dan ver, maar alleen chunks dichtbij zijn "actief". Dit spaart CPU zonder het zicht te beperken. In server.properties stel je beide apart in.

Helpt meer RAM bij chunk loading?

Ja, maar het is niet het hele verhaal. Meer RAM helpt omdat de server meer chunks in het geheugen kan cachen, waardoor ze niet steeds opnieuw van schijf hoeven te worden gelezen. Maar als je opslagmedia traag is, helpt RAM alleen voor chunks die al een keer geladen zijn. En als de CPU de bottleneck is (door zware worldgen), helpt noch meer RAM noch snellere opslag. De ideale server heeft een balans van alle drie: snelle CPU, voldoende RAM en NVMe-opslag.


Komt u er niet uit? Open een support ticket, ons team helpt u graag verder.

Terug naar de blog