Das offizielle Minecraft Wiki twittert hier: Wiki-Twitter   Noch keinen Server gefunden? Es gibt einen Wiki-Server

Weltgenerierung

Aus Minecraft Wiki
Wechseln zu: Navigation, Suche

Die Weltgenerierung ist ein wesentlicher Bestandteil von Minecraft, denn dieser Teil des Programms erzeugt die Spielwelt. Anfangs wurde sie Level-Generator genannt. Die Datei, in der die generierten Daten gespeichert werden, heißt immer noch level.dat. Später wurde die Weltgenerierung Map-Generator genannt und die Welt Karte. Heute spricht man vom Welt-Generator.

Einige Parameter für die Weltgenerierung können in angepassten Welten individuell eingestellt werden.

Generierung[Bearbeiten | Quelltext bearbeiten]

Bedeutsam ist zunächst die Tatsache, dass die Welt überhaupt generiert wird. In vielen Computerspielen werden die Szenen, durch die sich der Spieler bewegt, nicht generiert, sondern von Künstlern vorproduziert. Das können zweidimensionale oder dreidimensionale Innenräume von Palästen oder Raumschiffen sein, aber auch kulissenhafte Landschaften, wie sie z.B. in Abenteuerspielen verwendet werden.

Im Gegensatz dazu stehen die generierten Landschaften, wie sie z.B. in Minecraft eingesetzt werden. Aber es können genauso gut auch Sternensysteme im Weltraum generiert werden. Bei dem prozedurale Generierung genannten Vorgang existiert die Landschaft nicht im Vorfeld. Immer wenn ein neuer Teil der Landschaft benötigt wird, wird eine Prozedur aufgerufen, die eine zufällig aussehende Landschaft generiert. Dadurch ist es möglich, nahezu beliebig große Landschaften zu erzeugen, die nur durch technische Randbedingungen (Speicherplatz, Maximalwerte von Variablen) begrenzt werden.

Einfache Generierungsprozedur

Abgesehen davon, dass man keine Landschaften vorab anfertigen muss, liegt ein weiterer Vorteil einer prozedural generierten Landschaft darin, dass man sich keine Gedanken über die Anschlüsse machen muss. Die Landschaft wird automatisch keine Lücken oder Brüche haben. Ein stark vereinfachtes Beispiel für eine prozedural generierte Landschaft wäre die Verwendung der Sinus-Funktion: Y = Sinus(X) × Sinus(Z) erzeugt z.B. eine Landschaft, die mit ihren gleichmäßigen Hügeln aussieht wie ein Eierkarton.

Eine leichte Veränderung führt zu Y = ((Sinus(X) × Sinus(Z)) + 1) × 48 + 32, was für jede Position (X/Z) einen Höhenwert Y berechnet, der zwischen 32 und 128 liegt. Die gesamte Landschaft wird also berechnet, sie ist quasi der dreidimensionale Graph einer Funktion. Für jede Position (X/Z) wird ein eindeutiger Y-Wert geliefert, der ohne Anschlussprobleme zu seinem Nachbarn passt. In Minecraft wird das deutlich, wenn man sich an einen entfernten Ort teleportiert. Dort wird dann eine Landschaft generiert. Diese liegt abseits von der bereits existierenden Landschaft wie eine Insel im Nichts. Läuft man nun zurück zum Ausgangspunkt, wird das dazwischen liegende Nichts mit Landschaft gefüllt, die exakt zur bereits generierten Landschaft passt.

Neben der Generierung der Oberfläche wird dasselbe Verfahren auch für Flüsse und Höhlen verwendet, sodass auch diese stets einen passenden Anschluss haben, wenn neue Landschaftsteile generiert werden.

Man könnte sogar noch weiter gehen und die Textur der Landschaft generieren lassen, mit unterschiedlichen Schattierungen und Mustern. Doch Minecraft verwendet vorproduzierte Texturen. Daher sehen z.B. alle Erdblöcke gleich aus. Die Minecraft-Welt ist also eine Mischung aus prozedural generierter Landschaft und vorgefertigten Texturen.

Ein wichtiges Element bei der Generierung ist der Zufallszahlengenerator. Er wird ständig eingesetzt und bestimmt z.B. die Landschaftsmodellierung und die Verteilung der Biome bis hin zur Verteilung der Seen und Pflanzen. Der Zufallszahlengenerator erzeugt zwar eine zufällige Zahl, aber diese ist abhängig von einem Startwert. Gibt man dem Zufallszahlengenerator den gleichen Startwert, erzeugt er die gleiche Zufallszahl. In Minecraft kann der Startwert für den Zufallszahlengenerator vorgegeben werden, sodass man bei gleichem Startwert die gleiche Welt mehrfach erzeugen kann.

Die erstmalige Generierung der Welt wird durch den Menüpunkt "Neue Welt erstellen" gestartet:

  • Dann wird ein Bereich von 12 Chunks um den Spawnpunkt des Spielers herum generiert. Der Spieler befindet sich im zentralen Chunk dieses insgesamt 25×25 Chunk großen Bereiches (entspricht 400×400 Blöcken).
  • Grundsätzlich sind um jeden Spieler herum jedoch immer nur 10 Chunks in jede Richtung im Spiel geladen. Bewegt sich ein Spieler durch die Welt, werden die weiter als 10 Chunks hinter ihm liegenden Chunks gespeichert und die vor ihm liegenden, fehlenden Chunks geladen bzw. - wenn sie bisher noch nicht existierten - neu generiert. Die Welt entsteht also um den Spieler herum und seine Bewegungen steuern, welche Teile der Welt generiert werden. Jeder Chunk wird nur einmal generiert. Sobald er existiert, kann er nach Bedarf gespeichert und wieder geladen werden.
  • Ursprünglich war die Welt 128 Blöcke hoch und der Meeresspiegel lag genau auf der Hälfte bei Höhe 64. Heute ist die Welt 256 Blöcke hoch und der Meeresspiegel liegt bei Höhe 63.
  • Am Anfang der Generierung existiert keine Landschaft, denn zuerst werden die Biome generiert, weil sie einen entscheidenden Einfluss auf das Aussehen der Landschaft haben.

Biome[Bearbeiten | Quelltext bearbeiten]

Biomgenerierung von AMIDST
  • Anfangs ist die Welt ein einziger Ozean. In diesen werden die Landmassen generiert. Dann werden die Klimazonen auf dem Land erzeugt und schließlich die Biome. Der Ozean ist also nicht das Ergebnis der Biomgenerierung, sondern entsteht vorher.
  • Bei der Biomgenerierung werden zuerst nur die Biomflächen wie eine Art Flickenteppich über die landschaftslose Fläche verteilt.
  • Dann werden die Biomflächen einem konkreten Biom-Grundtyp (Wüste, Taiga, Wald, etc.) zugeordnet. Das hängt von der Klimazone und den Nachbarbiomen ab. Jedes Biom gehört zu einer von vier Klimazonen.
  • Das Programm AMIDST (Advanced Minecraft Interface and Data/Structure Tracking) nutzt den Biom-Generierungscode von Minecraft, um die Biome anzuzeigen, die für einen bestimmten Startwert generiert werden. Das Programm unterstützt die geänderte Biomgenerierung ab Version 1.7. Zudem kann es auch bereits gespielte Welten laden und zeigt den Standort vom Spawnpunkt und des Spielers an. Allerdings zeigt es keine Landschaften oder selbst gebaute Gebäude an, sondern nur die Biomfläche, weswegen es nicht als Karte, sondern nur als zusätzliche Informationshilfe geeignet ist. Trotzdem gibt dieses Programm einen sehr guten Eindruck über die Welt von Minecraft und zeigt sogar Dörfer, Wüstentempel und andere programmgenerierte Bauwerke an.
Scharfe Trennkanten beim Wechsel des Biomcodes: alte Chunks = Ozean und Wüste, neue Chunks = Dschungel
  • In die Biom-Grundtypen werden Zusatz-Biome hineingeneriert: Hügel, Hochebenen bei Tafelberg und Savanne, kleine Wälder in Nicht-Wald-Biome wie die Extremen Berge oder die Hochebenen, Randbereiche von Dschungel und Extremen Bergen, Tiefseezonen im Ozean und je nach Biom Sandstrand (im AMIDST-Bild gelb), Steinstrand oder Pilzlandküste.
  • Auch Flüsse sind Zusatz-Biome. Sie werden in einem Schlangenlinienmuster meist von Ozean zu Ozean gezogen. Dabei wurde beachtet, dass sie sich nicht selbst kreuzen. Außerdem verlaufen Flüsse oft an Biomgrenzen entlang, weil das einen natürlichen Übergang zwischen zwei Biomen bildet. Flüsse werden außerdem zur Ufergenerierung von Ozeanen verwendet. Dort sind sie nicht als Fluss erkennbar, nur ihr Ufer wird genutzt (im AMIDST-Bild hellblau).
  • Ändert sich der Biom-Generierungscode des Spiels - wie es z.B. mit Vollversion 1.7 geschah - hat das zwei Auswirkungen: erstens erzeugt ein Startwert der alten Spielversion nicht mehr dieselbe Welt in der neuen Spielversion. Und zweitens werden neue Chunks mit dem neuen Biom-Generierungscode erzeugt, während alte unverändert bleiben (weil sie schon als Speicherdatei existieren und nicht neu generiert werden). Dadurch ergeben sich scharfe Trennkanten in der ganzen Welt an allen Stellen, wo neue Chunks generiert werden.

Oberfläche[Bearbeiten | Quelltext bearbeiten]

  • Nachdem die Fläche in Biome aufgeteilt ist, wird mit Hilfe von Perlin-Noise-Funktionen die Oberfläche modelliert. Die Perlin-Noise-Funktionen erzeugen natürlich aussehende Strukturen von Höhen und Senken (Details siehe Angepasst#Erweiterte Einstellungen). Je nach Biom werden dazu andere Parameter verwendet, sodass die Ebenen-Biome nur sanfte Hügel haben, Savannen und Tafelberge abgerundete Bergkuppen, die extremen Berge sehr hohe und steile Gebirge und der Ozean Senken, die durchgängig unter dem Meeresspiegel liegen. Bei der Geländemodellierung können - besonders in den Bergen - hin und wieder schwebende Inseln entstehen.
  • Jetzt kann die modellierte Landschaft mit Blöcken gefüllt werden. Grundsätzlich wird die gesamte Landschaft erst einmal mit Stein gefüllt. Dieser wird an der Oberfläche je nach Biom durch eine Haut aus biomtypischen Naturstoffen ersetzt. In Strand, Wüste und Tafelberg ist das Sand, darunter Sandstein. In den meisten anderen Biomen ist es Erde mit einer Grasblockschicht. Im Pilzland ist es Myzel. Die Tafelberge werden komplett durch verschiedenfarbige Lehmschichten ersetzt.
  • Durch die Ersetzung des Steins können Landschaftsanomalien entstehen, z. B. schwebender Sand oder schwebender Schnee. Da diese Anomalien kein Bug sind, sind sie ein Feature.
  • Die Ozeane werden bis zum Meeresspiegel mit Wasser aufgefüllt.
  • Kleinere geologische Strukturen wie Seen, Felsen (in der Riesentaiga) oder Eiszapfen (in der Eiszapfentundra) werden auf die Oberfläche und Wasser- und Lavaquellen in die steilen Bergwände gesetzt. Einige Biome erhalten besonders viele Gewässer (im AMIDST-Bild bei den Sümpfen zu sehen). Dazu kommen die kleinen, fast runden Wasserteiche und Lavatümpel. Diese sind jedoch keine reinen Oberflächenelemente, sondern werden als Wasser- und Lavablase im gesamten Landschaftsmassiv von der Grundgesteinebene aufwärts verteilt, sodass nur einige wenige zufällig an der Oberfläche zu sehen sind. Dass sie nicht auf die Oberfläche gesetzt wurden, erkennt man daran, dass sie meist unter einem mehr oder weniger großen Erdüberhang liegen.
  • Bauwerke wie Dschungeltempel, Sumpfhütten, Wüstentempel, Wüstenbrunnen und Dörfer werden auf die Oberfläche an möglichst ebener Stelle generiert.
  • Bäume und andere Gewächse werden biomtypisch generiert: von Kakteen und toten Büschen in der Wüste über diverse Baumarten in den Wäldern bis hin zu der ausufernden und daher rechenleistungsintensiven Pflanzenwelt im Dschungel. Dazu gehören auch die vielen bunten Blumen.
  • In Kältezonen wird die Oberfläche mit Schnee überzogen und Wasser in Eis umgewandelt.
  • Spawnbereiche für biomtypische Tiere werden an den für sie geeigneten Stellen festgelegt. Das eigentliche Spawnen unterliegt dann weiteren Regeln. Monster gehören nicht zur Weltgenerierung, sie werden - wie das Wetter - immer um den Spieler herum generiert.

Untergrund[Bearbeiten | Quelltext bearbeiten]

  • Im Untergrund werden die Erze generiert. Für jedes Erz gibt es Parameter, in welchen Ebenen sie vorkommen sollen, wie groß eine Erzader sein darf, und wie häufig und in welchen Biomen sie vorkommen.
  • In den Untergrund werden die wichtigsten geologischen Strukturen von Minecraft generiert, die Höhlen. Jede Höhle ist im Prinzip ein langer, gewundener Schlauch. Die Generierung ist so eingestellt, dass diese Schläuche nicht zu weit auseinander liegen. Ab einer gewissen Nähe überschneiden sie sich, wodurch sich automatisch ein Höhlensystem ergibt. Manchmal liegen sie so dicht zusammen, dass man die einzelnen Schläuche kaum noch erkennen kann und große, durchlöcherte Hohlräume entstehen. Es gibt verschiedene Formen von Höhlenschläuchen, einige sind sehr lang und relativ dünn, andere haben einen so großen Durchmesser, dass man die Decke im Fackellicht nicht erkennen kann. Die Höhlen durchstoßen hin und wieder die Oberfläche, wodurch sich natürliche Höhleneingänge ergeben. Im Zuschauermodus kann man einen Blick unter die Erdoberfläche werfen und die Höhlen sehen. Auch wenn man im Kreativmodus schnell in eine Richtung durch die Welt fliegt, kann man manchmal kurz die Höhlen sehen, bevor sie durch die Oberfläche zugedeckt werden.
  • Zusätzlich zu den Höhlen werden sehr lange und hohe Schluchten in den Untergrund generiert. Sie dienen aufgrund ihrer Größe als Verbindung verschiedener Höhlensysteme.
  • Ein weiteres Element, das in den Untergrund generiert wird, sind senkrechte, runde Höhlenschächte, die aufgrund ihrer Höhe oft die Oberfläche durchstoßen und so den Zugang zu einem Höhlensystem bilden.
  • Am Boden der Welt wird eine (im Überlebensmodus) undurchdringliche und geschlossene Grundgestein-Schicht generiert. Sie erhält eine unebene Fläche, die bis in Ebene 4 reichen kann.
  • Sämtliche Höhlen werden bis zum Lavaspiegel (Höhe 11) mit Lava gefüllt. Das Grundgestein, vor dem die Höhlen enden, ist daher nicht zu sehen. Vielmehr wirken die mit Lava gefüllten Höhlen wie Lavateiche, die aber separat generiert werden.
  • Sie gehören zu den kleineren geologischen Strukturen, die im Untergrund verteilt werden: Wasser- und Lavablasen werden ohne eine Höhlenverbindung und unabhängig vom Meeres- und Lavaspiegel im ganzen Untergrund verstreut. Manchmal durchbrechen sie die Oberfläche. Die Wände von Höhlen und Schluchten werden mit Wasser- und Lavaquellen ausgeschmückt, die in die Hohlräume fließen.
  • Untergrund-Bauwerke wie Minen, Verliese und Festungen werden generiert.
    • Minen bilden ein rechtwinkliges aber zufällig generiertes System von 3×3 Block großen Gängen mit Treppen, Schächten und einer Zentralkammer. Sie sind so groß, dass sie wie die Schluchten verschiedene Höhlensystem miteinander verbinden können. Wenn sie eine Höhle oder Schlucht überqueren, wird ein Bretterboden generiert. Minen können bis zur Grundgesteinschicht vordringen. Sie werden nicht mit Lava gefüllt. Bei ihnen wird auch meistens ein Blockupdate durchgeführt, wenn sie Kies oder Sand durchdringen, damit dieser nach unten stürzt.
    • Verliese werden nur an Positionen generiert, an denen sie einen Hohlraum (Höhle, Mine, Schlucht, Festung, unterirdischer See) berühren. Sie enthalten immer einen Monster-Spawner.
    • Es werden genau drei unterirdische Festungen um den Spieler herum generiert, in der die Endportale zu finden sind. Ausreichend wäre schon eine Festung, aber weil sie nicht immer vollständig generiert werden, sind es sicherheitshalber drei. Unterirdische Festungen sind ähnlich wie Minen ein zufällig generiertes System von Gängen und Räumen.
  • Als Untergrundgewächse werden häufiger braune und rote Pilze auf Stein generiert, an Stellen mit Erde manchmal auch Gras und sogar Blumen - selbst an Orten in völliger Dunkelheit.

Der Nether und das Ende[Bearbeiten | Quelltext bearbeiten]

  • Der Nether und das Ende werden nicht bei Spielbeginn, sondern erst dann generiert, wenn sie zum ersten Mal über das entsprechende Portal betreten werden.
  • Der Nether wurde in einer Zeit entwickelt, als die Welt in Minecraft nur 128 Blöcke hoch war (heute 256). Folglich ist er nur 128 Blöcke hoch. Darüber liegen 128 Blöcke Luft, die nicht zur Landschaft des Nether gehören. Der Nether stellt die Unterwelt dar. Deshalb ist er grundsätzlich ein solider Block aus Netherrack, der oben und unten durch eine nach innen hin unebene Grundgestein-Schicht begrenzt ist, die man im Überlebensmodus nicht durchdringen kann.
  • In den Nether-Steinblock wird schichtenartig Kies eingefügt, Seelensand in großen, flachen Klumpen und Netherquarz in Form von Erzadern.
  • Dann werden mit Perlin-Noise-Funktionen sehr große, blasenartige Hohlräume generiert, mit einem Abstand von ca. 20 Blöcken zur oberen und unteren Grundgestein-Schicht. Sie liegen so dicht zusammen, dass sie einen einzigen zusammenhängenden Hohlraum bilden. Es wird kein Blockupdate durchgeführt, wodurch schwebende Kies-Bereiche entstehen können. Freigelegte Kies- und Seelensand-Strukturen können größere, ebene Flächen bilden.
  • Bis Höhe 32 - dem Lavaspiegel im Nether - werden die Hohlräume mit Lava gefüllt und bilden somit Lavaozeane.
  • Zusätzlich zu den großen Hohlräumen werden auch im Nether kleine Höhlensysteme generiert, nach dem selben Schema wie in der Oberwelt, allerdings ohne die großen Schluchten. Die kleinen Höhlen werden nicht mit Lava gefüllt, auch wenn sie unter dem Lavaspiegel liegen.
  • Details werden in den Hohlräumen verteilt: Glowstone-Klumpen, Pilze, Feuer und Lavaquellen.
  • Das einzige Bauwerk im Nether ist die Netherfestung. Sie wird wie eine Mine generiert und besteht aus zufällig generierten, sehr langen Wegen mit Kreuzungen und Treppen, sowie einigen Gebäudeteilen. Die Wege und Gebäude stehen auf massiven Netherziegelsäulen, die durch die Lavaseen bis auf den Grund der großen Hohlräume reichen. Die Netherfestungen haben wie die verlassenen Minen und Festungen der Oberwelt Lücken in ihrer Gesamtstruktur und können nach einer Unterbrechung weiter führen.
  • Das Ende wird als großer, frei schwebender, flacher Klumpen aus Endstein generiert. Darauf werden Obsidiansäulen verteilt. Das Ende ist massiv und weist keine Hohlräume auf.

Rendern[Bearbeiten | Quelltext bearbeiten]

  • Damit man die generierten Welt-Daten sehen kann, müssen sie in ein Bild umgewandelt werden. Diesen Vorgang nennt man Rendern. Der Datenwert eines Blockes gibt z.B. an, welche Textur dargestellt werden soll. Die Blockobjektdaten eines Blockes sind zusätzliche Informationen, die angezeigt werden müssen, z.B. die Beschriftung eines Schildes. Die Herausforderung beim Rendern ist die Geschwindigkeit. Damit der Bildaufbau nicht zu langsam geschieht, müssen die Render-Funktionen optimiert sein. Beispielsweise werden nur die Flächen gerendert, die der Spieler sieht. Die Rückseiten (z.B. von einem Baumstamm), die man nicht sieht, werden weggelassen.
  • Während die Landschaftsgenerierung eine Aufgabe des Servers ist, wird das Rendern vom Client vorgenommen (siehe Client-Server-Konzept). Die Position des Spielers und seine Blickrichtung werden vom Client zum Server übertragen und dieser liefert umgehend die entsprechenden Landschaftsdaten zurück. Die übertragene Datenmenge lässt sich einstellen, z. B. kann man sie durch Verringerung der Sichtweite deutlich reduzieren, was die Anzeige wiederum beschleunigt.
  • Da der Client das Rendern vornimmt, kann jeder Spieler die Landschaft des Servers mit individuellen Grafik-Einstellungen und einem individuellen Texturenpaket sehen.
  • Ein wesentliches Element des Renderns ist die Berechnung der Beleuchtung. Sie ergibt sich aus dem Lichtlevel, das unabhängig von Tag oder Nacht von freiem Blick nach oben über Schattenbereiche bis hin zu völliger Dunkelheit reicht. Zusätzliche Lichtquellen, z.B. Lava oder Fackeln, werden hinzuaddiert.
  • Eine Herausforderung ist das Echtzeitrendern. Da der Spieler sich ständig bewegt, muss ständig der gesamte Bildschirminhalt neu berechnet und angezeigt werden. Um diesen Vorgang der Rechnerleistung des Spielers anpassen zu können, gibt es im Spiel diverse Einstellungsmöglichkeiten.
  • Um das Rendern zu beschleunigen, sind die entsprechenden Funktionen vom Rest des Spiels abgekoppelt worden. Das Spiel muss nicht mehr ständig die Aktionen des Spielers und der Kreaturen berechnen und gleichzeitig versuchen, alles schnell genug darzustellen, sondern kann sich auf ersteres konzentrieren, während die grafische Darstellung der Welt separat abläuft, d.h. es laufen mehrere Funktionsfolgen (engl. threads) parallel ab. Die Folge ist, dass man über die Landschaft fliegen kann, ohne dass das Spiel ruckelt oder gar hängenbleibt, weil es mit dem Rendern nicht hinterherkommt.

Unterschied der Generierung bei anderen Minecraft-Editionen[Bearbeiten | Quelltext bearbeiten]

Grundsätzlich gibt es bei der Generierung der Welt bei anderen Minecraft-Editionen keinen Unterschied. Lediglich in der Weltgröße und in der Größe des im Hauptspeicher gehaltenen Ausschnitts gibt es geringfügige Modifikationen im Generator, welche im Folgenden beschrieben werden.

In der aktuellen Pocket Edition 1.1.3 für Handys und Tablets (inkl. Windows 10 Edition und Gear VR Edition) beträgt die maximale Weltgröße nur ca. 30.000.000 Blöcke (PC: 60.000.000 Blöcke) und die Volumina der gerenderten Chunks betragen:

  1. Stufe: 3 Chunks
  2. Stufe: 5 Chunks
  3. Stufe: 7 bzw. 8 Chunks (7 bei iOS, 8 bei Android)
  4. Stufe: 10 bzw. 11 Chunks (10 bei iOS, 11 bei Android)

Dies gilt auch für die beiden XBox-Editionen.

Da die in den Playstation-Editionen vorhandenen Renderdistanzen je nach erkannter Leistung und der Festplattengröße unterschiedlich sein können, können die Begrenzungen der Weltgenerierung nicht festgelegt werden.

Für die Wii U Edition liegen noch keine Informationen vor.

Da die Pi Edition auf einer alten Pocket Edition basiert, dürfte sie dieser in den genannten Punkten entsprechen.

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Am 9. März 2011, in der Beta-Phase der Spielentwicklung, begann Notch einen Bericht über den damaligen Stand der Weltgenerierung, den er leider nie beendet hat.[1]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

Galerie[Bearbeiten | Quelltext bearbeiten]

Geschichte[Bearbeiten | Quelltext bearbeiten]