// Minecraft

Chunks pregenereren voor een soepelere Minecraft-server

Chunks pregenereren voor een soepelere Minecraft-server

Je kent het moment: iemand bindt vuurwerk onder zijn elytra, vliegt richting de horizon en de hele server begint te haperen. Dat is geen toeval. Nieuwe stukken wereld genereren is een van de zwaarste dingen die je Minecraft-server doet, en standaard gebeurt dat precies op het drukste moment: terwijl er spelers online zijn.

Pregenereren draait dat om. Je laat de server de wereld alvast bouwen op een moment dat jij kiest, zodat verkennen daarna neerkomt op het inladen van kant-en-klare chunks in plaats van ze ter plekke verzinnen. Het kost je wat opslag en een nacht rekenwerk, maar het scheelt lag-spikes op elk druk moment daarna.

Waarom nieuwe chunks zo zwaar zijn

Een chunk is een kolom van 16 bij 16 blokken die de server per stuk genereert. Daar komt veel bij kijken: terreinvormen uitrekenen, grotten uitgraven, structuren plaatsen, bomen en erts strooien en het licht berekenen. Eén chunk is te overzien, maar een verkennende speler vraagt er tientallen tegelijk aan — en met vuurwerk onder een elytra al gauw honderden per minuut.

Moderne serversoftware zoals Paper verplaatst een deel van dat werk naar aparte threads, maar rekenwerk blijft rekenwerk: op een druk moment merk je chunkgeneratie als haperingen, rubberbanding of een dalende TPS. En zonder maatregelen blijft dat zo, want elke nieuwe speler die een andere kant op loopt, opent weer vers terrein.

Twijfel je of chunkgeneratie echt jouw boosdoener is? Meet het eerst met de profiler spark; in de kennisbank over spark staat hoe je zo'n meting leest. Lag heeft vaker meerdere oorzaken dan één.

Eerst een world border, dan pas genereren

Pregenereren zonder grens is dweilen met de kraan open: een Minecraft-wereld is in de praktijk vrijwel oneindig, dus je moet eerst bepalen hoe groot hij mág worden. Dat doe je met de ingebouwde world border:

  1. /worldborder center 0 0 zet het middelpunt van de grens op de wereldoorsprong (gebruik de coördinaten van jouw spawn als die ergens anders ligt).
  2. /worldborder set 10000 maakt de wereld 10.000 blokken breed.

Let op het klassieke instinkertje: het getal bij set is de diameter, niet de radius. Een border van 10.000 betekent dus 5.000 blokken van het middelpunt tot de rand. Los van het pregenereren is zo'n border sowieso een goed idee: hij houdt je wereld en je back-ups behapbaar en spelers een beetje bij elkaar in de buurt.

Doe dit wel vóórdat je community wild om zich heen bouwt, en kondig het aan. Een border die je achteraf kleiner maakt, laat bases van spelers buiten de grens vallen — en dat soort verrassingen kost je goodwill. Groter maken kan daarentegen altijd zonder gedoe.

Zo pregenereer je met Chunky

Chunky is de standaardkeuze voor dit werk: gratis, actief onderhouden en beschikbaar als plugin en als mod. De basis is een handvol commando's:

  1. Maak eerst een volledige back-up van je wereld.
  2. chunky worldborder — Chunky neemt automatisch het gebied binnen je world border als selectie.
  3. chunky start — de generatie begint en de voortgang verschijnt periodiek in de console.
  4. chunky pause en chunky continue — pauzeren en hervatten kan altijd, ook na een herstart; Chunky onthoudt waar het gebleven was.

De server blijft gewoon online tijdens het genereren, maar verwacht wel merkbaar mindere prestaties zolang het draait. Plan het dus in stille uren, en pauzeer gerust als er 's avonds veel spelers zijn. Hoe lang het duurt hangt af van je radius en de CPU waar je server op draait: van een uurtje voor een kleine wereld tot een flinke nacht of langer voor een grote.

Handig om te weten: je hoeft dit niet in één keer af te maken. Laat Chunky elke nacht een paar uur draaien en pauzeer overdag; na een paar dagen is je wereld net zo goed klaar. En herhaal je een generatie later nog eens, dan slaat Chunky alles wat al bestaat gewoon over — dubbel werk doet het nooit.

Hoeveel moet je pregenereren?

Meer is niet automatisch beter. Kijk eerst naar hoe jouw spelers de wereld echt gebruiken: op de meeste servers speelt vrijwel iedereen binnen een paar duizend blokken van spawn, met een enkele ontdekkingsreiziger als uitzondering. Een paar richtlijnen:

  • Kleine survivalserver met vrienden: een border van 5.000 tot 10.000 blokken is ruim genoeg om maanden in te spelen.
  • Publieke server: reken ruimer, bijvoorbeeld een border van 10.000 tot 20.000, afhankelijk van hoeveel verkenners je verwacht.
  • De Nether: vergeet die niet, zeker als spelers er lange reistunnels bouwen. Door de schaal van 1 op 8 hoeft de Nether-border maar een achtste van je overworld-border te zijn.
  • De End: meestal het minst urgent; veel servers slaan pregenereren hier over of houden het klein.

Genereer liever een bescheiden gebied dat je later uitbreidt dan in één keer een gigantische wereld “voor de zekerheid”. Uitbreiden is simpel: border vergroten en Chunky opnieuw laten draaien — bestaande chunks slaat het vanzelf over. Wil je ondertussen ook de belasting van geláden chunks drukken, kijk dan naar je view-distance; in de uitleg over server.properties lees je welke instellingen daarvoor bepalend zijn.

Wat het kost: opslag en andere nadelen

Eerlijk is eerlijk, pregenereren heeft een prijs. De belangrijkste punten op een rij:

  • Opslag: elke gegenereerde chunk staat op schijf, ook als er nooit iemand komt. Voor een overworld van 10.000 bij 10.000 blokken moet je al snel aan meerdere gigabytes denken, afhankelijk van het terrein. En het loopt hard op: een twee keer zo grote radius betekent vier keer zoveel chunks.
  • Back-ups: die worden evenredig groter en trager. Check dus hoeveel opslag je pakket heeft voordat je een enorme radius kiest.
  • Verouderde chunks: gegenereerde chunks houden het terrein van de Minecraft-versie waarmee ze zijn gemaakt. Komt er een update met nieuwe biomen of structuren, dan zie je die alleen in vers terrein. Veel servers vergroten na zo'n update bewust de border, zodat het nieuwe terrein daarbuiten ontstaat.
  • Geen wondermiddel: pregenereren voorkomt alleen de kosten van het genereren. Lag door farms, entities of zware plugins in bestaand gebied blijft gewoon bestaan.

Een server die het aankan

Pregenereren leunt vooral op CPU en opslag, en daarna profiteert elke speler van het resultaat. Bij MC-Node draait je server op eigen hardware met NVMe-opslag in het Previder-datacenter in Hengelo, met DDoS-bescherming inbegrepen — en juist die snelle opslag helpt bij het vlot inladen van al die kant-en-klare chunks. Een greep uit de pakketten:

PakketPrijs per maand
Cobblestone€ 0,50
Coal€ 2,20
Iron€ 3,30
Redstone€ 5,50
Diamond€ 7,70
Diamond - Premium€ 17,50

Alle pakketten zijn maandelijks opzegbaar, dus je kunt klein beginnen en opschalen zodra je wereld en je spelersaantal groeien. Het volledige aanbod staat in de Minecraft-webshop van MC-Node. Border zetten, Chunky een nachtje laten stampen, en van de volgende elytra-tocht merkt niemand meer iets op de TPS.

// ZELF PROBEREN
Je Minecraft-server binnen 60 seconden online
Bekijk de pakketten →