28. April 2024

Team ASCII – Woche 4 & 5

Der Blog dieser Woche ist sozusagen ein 2 in 1 Angebot. Die beschriebenen Fortschritte in meinem Ascii Adventure sind in der Woche 4 und 5 des Moduls entstanden.

Schrittweise Prozedurale Generierung

Die sehr rudimentäre Weltengenerierung vom letzten Blog habe ich mit einem fortgeschritteneren Algorithmus abgelöst. Das neue System verwendet Schritte welche aufeinander aufbauen. Jeder Schritt generiert die Welt mit mehr Details.

Hier ein Video von diesem Ablauf:

https://www.youtube.com/watch?v=rjw22rFUhTQ

Viele der Schritte verwenden nicht nur Informationen von tieferen Schritten des eigenen Chunks, sondern auch Informationen der umliegenden Chunks. Aus diesem Grund müssen um die vollständig generierten Chunks auch Chunks geladen werden, welche nicht fertig generiert sind.

Hier eine Visualisierung davon:

Aktuelle Schritte

Hier die Schritte welche aktuell in der prozeduralen Generierung enthalten sind.
– Landmasse
– Ränder der Landmassen abrunden (mehrfach)
– Temperatur
– Luftfeuchtigkeit
– Biom auf Grund der Temperatur & Luftfeuchtigkeit auswählen
– Kleine Biome eliminieren und Ränder verbessern (mehrfach)
– Höhe generieren
– Höhe glätten
– Chunks mit Zivilisation auswählen

Biome

Biome werden auf Grund von den Luftfeuchtigkeits- und Temperatur-Werten ausgewählt.

Diese Aufteilung ist noch nicht perfekt und führt aktuell noch zu unausgeglichenen Resultaten. Aber mit einigen Anpassungen der Schwellwerte kann dies sich gelöst werden.

Probleme

Aktuell habe ich noch einige Probleme, welche mir und meinem Notebook die Arbeit erschweren.

Zum einen ist der Algorithmus zurzeit noch sehr Ressourcen aufwendig. Das Generieren von ~10 Chunks aufs mal führt bereits zu FPS-Drops.

Weiter bin ich mit der Architektur der Generierung noch nicht zufrieden. Ich bin noch nicht sicher, was die optimale Strukturierung von Go Code ist. Aus diesem Grund ist das Erstellen von neuen Schritten in der Generierung sehr aufwändig. Hätte ich etwas mehr Zeit im Projekt, hätte ich mich dazu entschieden das System nochmals umzuschreiben.

Engine Updates

Wie im Video weiter oben zu sehen ist, unterstützt meine Ascii Engine nun Farben : )
Glücklicherweise ist dies die einzige Anpassung, welche ich diese und letzte Woche an der Engine vornehmen musste. So konnte ich mich vollständig auf die Entwicklung des ProcGen Codes konzentrieren.

Nächste Schritte

Nächste Woche werde ich die Weltengenerierung abschliessen und beginnen mit der Beschreibung der Welt. Dies bedeutet, ich werde Wege finden aufgrund der generierten Daten dynamisch Beschreibungen zu generieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert