Das offizielle Minecraft Wiki twittert hier: Wiki-Twitter   Noch keinen Server gefunden? Es gibt einen Wiki-Server
Die Wiki-Daten sind auf einen neuen Host umgezogen, aktuell gibt es noch Probleme mit den Bildern.

Chunk

Aus Minecraft Wiki
Wechseln zu: Navigation, Suche
Ein Chunk

Ein Chunk (von engl. Stück) ist ein 16×16 Blöcke großer und 256 Blöcke hoher Teilbereich einer Minecraft-Welt. In einem solchen Chunk werden alle Daten gespeichert, die für diesen Abschnitt der Welt relevant sind. Sowohl die aktuell geladene Spielwelt als auch die auf dem Speichermedium gesicherte Spielwelt werden als Chunks verwaltet.

Die Chunkdaten enthalten alle Blöcke, Biom-Informationen, Blockobjektdaten (z.B. Truheninhalte) und Objektdaten (Kreaturen, Fahrzeuge etc.) in einem Chunk.

Man kann sich die Chunkgrenzen mit F3+G anzeigen lassen, Details siehe Debug-Bildschirm#Weitere Debug-Tasten.

Geladene und sichtbare Chunks[Bearbeiten | Quelltext bearbeiten]

Das Speichern und Laden von Daten kostet Zeit und verlangsamt das Spiel. Würde man zur Spielbeschleunigung die gesamte Welt auf einmal im Hauptspeicher halten, wäre der Hauptspeicherbedarf (RAM) zu groß und das Laden beim Start des Spiels und Speichern beim Beenden würde viel zu lange dauern. Würde man stattdessen jeden Block einzeln speichern, würde das Spiel nicht mehr flüssig ablaufen, sondern ständig ruckeln. Daher wurde die Lösung gefunden, die Welt chunkweise zu speichern und zu laden, wobei immer 32×32 Chunks in einer gemeinsamen Regiondatei enthalten sind (dies wurde im Region Format eingeführt und bislang so beibehalten).

Beim Betreten des Spiels werden der Chunk, in dem sich der Spieler befindet, und die ihn umgebenden 8 Chunks in alle Richtungen geladen. Das sind (8 + 1 + 8)2 = 289 Chunks. Sobald sich der Spieler Richtung Horizont bewegt und dabei eine Chunkgrenze überschreitet, werden die hinter ihm liegenden Chunks außerhalb des Bereiches gespeichert und der vor ihm liegende Bereich mit neuen Chunks aufgefüllt. Sollten dafür noch keine Chunks existieren, werden sie generiert, was etwas länger dauert, als sie einfach nur zu laden.

Im Menü/Optionen/Grafikeinstellungen kann man die Sichtweite von 2 bis 16 oder auf manchen Rechnern sogar bis 32 Chunks einstellen. Bei der Einstellung "2" sind 2 Chunks in alle Richtungen um den Spieler sichtbar, also (2 + 1 + 2)2 = 25 Chunks.

Geladen sind jedoch immer mindestens 8 Chunks in alle Richtungen. Bei größeren Sichtweiten sind entsprechend mehr Chunks geladen.

Das Laden und Entladen der Chunks geschieht allerdings nicht sofort, sondern zeitverzögert. Daher muss man bei Chunk-Experimenten immer lange genug warten, bis alle Chunks richtig geladen und entladen sind, sonst erhält man falsche Ergebnisse.

Blockupdates[Bearbeiten | Quelltext bearbeiten]

Blockupdates finden nur innerhalb der Sichtweite statt.

Dies kann man nachweisen, indem man in jeweils 16 Blöcken Abstand z. B. ein Tropenholz mit Kakaopflanzen aufstellt und dann zum Ausgangspunkt zurückkehrt. Das Pflanzenwachstum geschieht durch zufällige Blockupdates. Nach genügend langer Wartezeit prüft man nach, bis in welche Entfernung Blockupdates stattgefunden haben, d. h. wo die Kakaopflanzen voll ausgewachsen sind.

Bei einer Sichtweite von 2 Chunks gibt es Blockupdates nur in den angrenzenden 2 Chunks, obwohl der Ladebereich 8 Chunks beträgt. Bei einer Sichtweite von 16 Chunks gibt es Blockupdates im gesamten Ladebereich von 16 Chunks.

Objektbewegungen[Bearbeiten | Quelltext bearbeiten]

Objekte bewegen sich nur in geladenen Chunks, aber nicht in den Randbereichen. Nähern sie sich der Grenze des geladenen Bereichs bis auf 2 Chunks, bleiben sie stehen.

Das kann man mit einer Lore nachweisen, die man auf ein mit Antriebsschienen versorgtes Gleis setzt, das in jedem Chunk eine Sensorschiene hat, die einen Kolben auslöst, der einen Block verschiebt. Schickt man die Lore los, wartet eine angemessene Zeit und zerstört sie dann aus der Ferne mit dem Befehl /kill @e[type=minecart], kann man anhand der verschobenen Blöcke nachprüfen, wie weit sie gefahren ist.

Bei einer Sichtweite von 2 bis 8 Chunks sind es immer 6 Chunks. Bei einer größeren Sichtweite sind es (Sichtweite - 2) Chunks. Ein Güterfernverkehr über größere Strecken ohne Spielerbegleitung ist somit nicht möglich.

Drops sind auch Objekte. Man kann in jedem Chunk einen Block droppen, zum Ausgangspunkt zurückkehren und nach 5 Minuten prüfen, in welchen Chunks die Drops verschwunden sind. Das Ergebnis ist das gleiche wie bei der Lore.

Befehle[Bearbeiten | Quelltext bearbeiten]

Befehle können nur auf geladene Chunks wirken.

Wendet man den Befehl /setblock an und setzt einen Block bei ~, ~16, ~32, ~48 etc., erhält man, sobald man den geladenen Bereich überschreitet, die Meldung: "Kann Block nicht außerhalb der geladenen Welt platzieren".

Das kann man nicht nur mit Blöcken, sondern auch mit Objekten testen. Platziert man z. B. in jedem Chunk ein Huhn, tötet der Befehl /kill @e[type=chicken] bei einer Sichtweite bis 8 Chunks alle Hühner in 8 Chunks Entfernung. Weiter entfernte Hühner bleiben am Leben. Bei größerer Sichtweite sind entsprechend mehr Chunks geladen und durch Befehle erreichbar.

Spawning[Bearbeiten | Quelltext bearbeiten]

Das Spawnen von Monstern geschieht immer in einem Bereich von 8 Chunks Entfernung (siehe Spawn#Der Spawn-Bereich). Die Sichtweite spielt dabei keine Rolle.

Redstone-Signale[Bearbeiten | Quelltext bearbeiten]

Redstone-Signale haben eine Besonderheit: Sie werden auch in Chunks weitergeleitet, die außerhalb des geladenen Bereichs liegen.

Um dies zu prüfen, kann man ein immer wieder verstärktes Redstone-Kabel beliebig weit verlegen und in jedem Chunk an einen Kolben anschließen, vor den man einen Block legt. Dann kehrt man zum Ausgangspunkt zurück, aktiviert das Signal mit einem Hebel, wartet einen Moment und deaktiviert es wieder. Dann kann man prüfen, wie weit das Signal geleitet wurde und stellt fest, dass es mehr als 32 Chunks sind (größere Entfernungen wurden bisher nicht getestet). Das kann nur funktionieren, wenn ein Chunk nachgeladen wird, sobald ein aktives Redstone-Signal hinein läuft.

Allerdings zählt ein nachgeladener Chunk nicht zum Bereich der geladenen Chunks und ist vom Ausgangspunkt aus weiterhin weder durch Befehle noch durch Objekte erreichbar.

Anders sieht es mit an dieses Kabel angeschlossenen Befehlsblöcken aus. Mit einem durchgehenden Kabel kann man auch einen Befehlsblock in weiter Entfernung aktivieren. Aufgrund der Länge des Kabels ist eine entsprechende Signalverzögerung zu beobachten.

Ebenso läuft ein Taktgeber in einem nachgeladenen Chunk nur, solange das Signal vom Ausgangspunkt in diesen Chunk hineinläuft. Sobald es beendet wird, wird der Chunk wieder entladen und der Taktgeber stoppt.

Spezielle Chunks[Bearbeiten | Quelltext bearbeiten]

Ewige Chunks[Bearbeiten | Quelltext bearbeiten]

In der Oberwelt sind der Chunk mit dem Spawnbereich-Mittelpunkt und die umliegenden Chunks in einem Radius bis zu 8 Chunks in gewisser Weise ewig geladen, egal wie weit man sich von ihnen entfernt. Dort platzierte Flüssigkeiten fließen weiter, Feuer breitet sich aus und herumliegende Gegenstände verschwinden. Andererseits verhalten sich diese Chunks in Bezug auf gerade entfernte Flüssigkeiten, ausgehendes Feuer sowie Zufällige Block Ticks wie ungeladene Chunks.

Im Einzelspielermodus gilt das, solange der Spieler irgendwo in der Oberwelt ist. Wechselt er die Dimension oder verlässt er das Spiel, wird auch dieser Chunk entladen.

Schleimchunks[Bearbeiten | Quelltext bearbeiten]

Schleime spawnen unterhalb Ebene 40 in zufällig ausgewählten Schleimchunks. Die Wahrscheinlichkeit, dass ein Chunk ein spezieller Schleimchunk ist, beträgt 10 %. Dazu wird für jeden neu generierten Chunk mittels einer Pseudo-Zufallsfunktion in Abhängigkeit vom Startwert ein für alle Mal festgelegt, ob dies ein Schleimchunk ist oder nicht:

Random rnd = new Random(seed +
                        (long) (xPosition * xPosition * 0x4c1906) +
                        (long) (xPosition * 0x5ac0db) + 
                        (long) (zPosition * zPosition) * 0x4307a7L +
                        (long) (zPosition * 0x5f24f) ^ 0x3ad8025f);
return rnd.nextInt(10) == 0;

Die Funktion ermittelt eine Zufallszahl von 0 bis 9, indem sie auf auf die Koordinaten des Chunks und den Startwert der Welt zurückgreift. Ist diese Zahl eine 0, handelt es sich um einen Schleimchunk. Koordinaten eines Chunks werden übrigens gebildet, indem eine Blockkoordinate durch 16 geteilt und dann abgerundet wird.

Auch im Pilzland und dessen Variante, der Pilzlandküste, treten Schleimchunks auf. Auf Grund der speziellen Gegebenheit des Bioms können allerdings keine Schleime spawnen, was die betroffenen Chunks ganz normal erscheinen lässt.

Mehrspielermodus[Bearbeiten | Quelltext bearbeiten]

Im Mehrspielermodus hält der Server die Chunkbereiche um jeden Spieler herum in seinem Hauptspeicher. Je mehr Spieler auf der Welt verteilt sind, desto größer ist die Menge an geladenen Chunks. Jeder Spieler hält die Welt um sich herum in Bewegung, d. h. in allen geladenen Chunks berechnet der Server die Blockupdates, Objektbewegungen, Redstone-Signale etc.

Daher muss ein Server je nach Spielermenge mit einem entsprechend großen Hauptspeicher ausgestattet sein.

Erst wenn sich sämtliche Spieler von einem bestimmten Chunk entfernen, wird sein momentaner Zustand eingefroren und in den Chunkdaten gespeichert.

Im Mehrspielermodus ist man üblicherweise über eine Datenfernverbindung wie das Internet mit dem Server verbunden. Für ein flüssiges Spiel sollte dabei die übertragene Datenmenge nicht zu groß sein. Daher begrenzen manche Server die Übertragungsmenge auf beispielsweise 8 Chunks in jede Richtung. Auch wenn man eine größere Sichtweite einstellt, kann man dann nicht weiter als 8 Chunks sehen.

Der zentrale Oberwelt-Chunk ist im Mehrspielermodus immer geladen, solange der Server läuft, also auch wenn kein Spieler in der Oberwelt ist und sogar, wenn kein Spieler im Spiel ist. Dies kann man testen, indem man einen Kolben an einen langsamen Taktgeber anschließt und vor dem Kolben eine Sandsäule aufstellt, sodass der Kolben den Sand Block für Block in ein bodenloses Loch schiebt.

Chunkfehler[Bearbeiten | Quelltext bearbeiten]

Wenn es durch einen Bug zu Beschädigungen eines Chunks kommt und die Welt nicht mehr geladen werden kann, hat man nur die Möglichkeit, von außen einzugreifen. Wenn der beschädigte Chunk bekannt ist, kann man versuchen, ihn mit einem Editor wie MCEditzu löschen. Das Spiel wird den fehlenden Chunk dann neu generieren, sobald er geladen wird. Der Chunk wird dabei wieder im Ursprungszustand erzeugt. Alle auf diesem Chunk vom Spieler gemachten Veränderungen sind nicht mehr vorhanden.

Ein Chunkfehler

Im Mehrspielermodus entstehen manchmal Anzeigefehler durch Chunks, die fehlerhaft oder gar nicht vom Server zum Client übertragen wurden. Dort sieht man dann ein 16×16 großes Loch, das nicht betreten werden kann. Um das zu beheben, reicht es normalerweise F3 + A zu drücken um alle Chunks neu zu laden, oder den Server zu verlassen und erneut zu verbinden.

Geschichte[Bearbeiten | Quelltext bearbeiten]

In diesem Blogeintrag vom 23. Februar 2010 erklärt Notch, warum er als Chunkgröße 16×16 Blöcke gewählt hat.