© S&S Media
Teil 4: Landschaften und Vegetation rund ums Jahr

Im Wechsel der Jahreszeiten


Nachdem wir uns in der letzten Ausgabe mit den für die prozedurale Landschaftsgestaltung so wichtigen Noise-Berechnungen (Rauschen) beschäftigt haben, stehen im heutigen Artikel bei der Ausformung der Spielewelt Kreativität und Fleißarbeit im Vordergrund. Dabei geht es um nicht weniger als die Erschaffung von Wüsten, Wäldern, Steppen, Wasserflächen und Gebirgslandschaften – und um die Vegetationsdarstellung im Wechsel der Jahreszeiten.

Von der Minecraft-Euphorie beflügelt, gehen wir nunmehr seit drei Artikeln der Frage nach, mithilfe welcher Techniken sich optisch ansprechende blockbasierte Spielewelten prozedural erzeugen und darstellen lassen. Zugegeben, auf den ersten Blick mag das Thema für den einen oder anderen Leser nicht gerade sonderlich spannend klingen, zumal auch die bislang veröffentlichten Screenshots unserer kleinen Demoanwendung recht unspektakulär wirkten. Nun denn, diese Phase gehört, wie die Abbildungen 1 bis 7 recht ansehnlich demonstrieren, mittlerweile endgültig der Vergangenheit an. Durch eine von der Jahreszeit beeinflusste Vegetations- und Landschaftsdarstellung, durch unterschiedliche, vom Breitengrad (Äquator: nullter Breitengrad, Süd- bzw. Nordpol: -/+ 90. Breitengrad) abhängige Vegetationsformen und nicht zuletzt dank abwechslungsreicher Landschaftstypen, darunter Wüsten, Wälder, Steppen, Wasserflächen oder Gebirgslandschaften, wirken die Spielewelten inzwischen sehr viel ansprechender und realistischer.

rudolph_opengl_1.tif_fmt1.jpgAbb. 1: Blockbasierte Spielewelt (Getreideanbau)
rudolph_opengl_2.tif_fmt1.jpgAbb. 2: Blockbasierte Spielewelt (im Sommer)
rudolph_opengl_3.tif_fmt1.jpgAbb. 3: Blockbasierte Spielewelt (im Sommer)
rudolph_opengl_4.tif_fmt1.jpgAbb. 4: Blockbasierte Spielewelt (im Herbst)
rudolph_opengl_5.tif_fmt1.jpgAbb. 5: Blockbasierte Spielewelt (im Herbst)
rudolph_opengl_6.tif_fmt1.jpgAbb. 6: Blockbasierte Spielewelt (im Winter)
rudolph_opengl_7.tif_fmt1.jpgAbb. 7: Blockbasierte Spielewelt (im Winter)

Wie dem auch sei, der Weg hierher war mitunter ein wenig mühsam und steinig. Anfangs standen Überlegungen zur Speicherverwaltung – Lauflängenkodierung der Spieleweltdaten einerseits, Arrays mit den unkomprimierten Daten der potenziell sichtbaren Blöcke andererseits – im Vordergrund. Im Anschluss daran haben wir uns die Frage gestellt, wie sich die Lichtausbreitung in der Spielewelt CPU-basiert simulieren lässt und wie sich die einzelnen Programmabläufe auf mehrere Worker-Threads – BlockWorld_VisibilityTestThread(), Block­World_­LightingCalculationsThread() sowie Block­World_­LocalBlockArrayUpdateThread() – verteilen lassen. Einen großen Stellenwert hat ferner die Behandlung der einzelnen Renderingtechniken ei...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang