Vulkan-Framework-Demoprogramm 12 (zelluläre Automaten und Wegfindung)

Im Rahmen des heutigen Programmbeispiels möchte ich Ihnen unter anderem demonstrieren, wie sich Tile-basierte Spielewelten mit Hilfe von zellulären Automaten prozedural generieren lassen. Vereinfacht ausgedrückt stellt ein zellulärer Automat das mathematische Pendant zu einem Einzeller dar.
Mit Hilfe einer sogenannten Geburtsregel legt man fest, unter welchen Bedingungen ein neuer Einzeller geboren wird. Beispiel: Wenn sich in der Nachbarschaft genügend andere Einzeller befinden, ist die Wahrscheinlichkeit sehr hoch (bis zu 100%), dass im Zuge des nächsten Simulationsschritts ein neuer Einzeller geboren wird.
Mit Hilfe einer Überlebensregel legt man hingegen fest, unter welchen Bedingungen ein Einzeller am Leben bleibt. Beispiel: Nur wenn sich in der Nachbarschaft eines Einzellers genügend andere Einzeller befinden, ist das Risiko gering (nahezu 0%), dass der betreffende Einzeller nicht als Beute eines anderen Lebewesens endet.
Mit Hilfe einer Sterberegel legt man darüber hinaus fest, unter welchen Bedingungen ein Einzeller sterben wird. Beispiel: Wenn sich in der Nachbarschaft eines Einzellers zu viele andere Einzeller befinden, wird der betreffende Einzeller im Zuge des nächsten Simulationsschritts an Unterernährung zugrunde gehen.


Damit wir nun bei der prozeduralen Generierung unserer Tile-basierten Spielewelten auf das Konzept der zellulären Automaten zurückgreifen können, müssen wir zunächst einmal festlegen, welche Objekte der Spielewelt wir mit Hilfe von zellulären Automaten simulieren wollen:

Beispiel 1 Inselwelten
  • lebende Einzeller: Gesteins-Tiles
  • tote Einzeller: Wasser-Tiles
Beispiel 2   Höhlensysteme
  • lebende Einzeller: Gesteins-Tiles
  • tote Einzeller: Luft/Höhlen-Tiles

Nun müssen wir eigentlich nur noch eine mehr oder weniger große Anzahl von lebenden Einzellern (aka Gesteins-Tiles) nach dem Zufallsprinzip in der Spielewelt verteilen, die zu verwendenden Geburts-, Überlebens- und Sterberegeln spezifizieren und den Computer einige Simulationsschritte durchführen lassen, bis wir schließlich mit dem Resultat zufrieden sind.

Selbstverständlich wollen wir überdies sicherstellen, dass unsere Spielfiguren in den von uns generierten Höhlensystemen und Labyrinthen stets die Orientierung beibehalten. Aus diesem Grund greifen wir im Rahmen des heutigen Programmbeispiels auf ein Wegpunkte-basiertes Navigationssystem zurück. Bei der wohl einfachsten Form der Wegfindung haben die Spielfiguren lediglich diejenigen Wegpunkte im Blick, die sich auf direktem Wege erreichen lassen. Falls Sie sich jedoch ein wenig eingehender mit dieser Thematik auseinandersetzen möchten, empfiehlt sich ein Blick auf die CGeometricNeuralNet-Klasse, mit deren Hilfe sich beispielsweise der kürzeste Weg auf einer Rundreise (Travelling-Salesman-Problem) oder der kürzeste Weg zwischen zwei beliebigen Wegpunkten ermitteln lässt.


Download Link: VulkanFrameworkDemo12.zip