Philipp

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Der Dungeon Generator: Prozeduale Content Generierung in Vidospielen


Der Dungeon Generator


Zuffalsgenerierter Spielinhalt spielt in den Videospielen von Heute eine größere Rolle als je zuvor. Von einzelnen Gegenständen zu ganzen Welten können viele Dinge so kostensparender erstellt werden. In vielen Spielen existieren Strukturen wie Höhlen, Verließe, Festungen und Türme deren innenleben leicht Zufallsgeneriert werden können, man fasst diese heutzutage unter dem Englischen Begriff für Verließ zusammen: Dungeon.

Erstellung eines Dungeon Generators

Es gibt mehrere Methoden einen Dungeon Generator zu schreiben, welche man nimmt kommt auf das Game Design an. So kann man zum Beispiel Handgemachte Räume in zufälliger Anordnung aneinanderreihen da es dem Designer Bestimmte Vorteile gibt Kämpfe und Schätze vorsichtiger zu Verteilen. Man kann jedoch auch alles von Grund auf zufallsgenerieren zu lassen.
Ein erster Schritt sollte sein ein Perfektes Labyrinth zu generieren. Dazu gibt es einfache Methoden. Das hier ist Flood Fill mit Zuffalszahlen. Der Rekursive Algorithmus nimmt die Zufallszahlen aus einer vorher erstellten Reihe, dem Seed. Daraufhin füllt er die komplette Fläche mit Gängen, indem er einen weg gemäß des Seedes entlanggeht bis er in eine Sackgasse kommt. Dann dreht er um geht andere Wege bis die Fläche gefüllt ist. Beliebige zwei Punkte in diesem Labyrinth sind durch nur einen Einzelnen Pfad miteinander verbunden.

Da Ein Perfektes Labyrinth jedoch zumeist langweilig ist fügt man Imperfektionen ein, das heißt das Gänge miteinander verbunden werden die es dem Spieler erlauben im kreis zu gehen. Dies wirkt natürlicher. Ein bestimmter Prozentsatz an Wänden mit zwei angrenzenden gegenüberliegenden Gängen wird entfernt. Dieses Labyrinth ist außerdem viel zu voll, ein typischer Dungeon besteht nicht nur aus Gängen sondern vorallendingen aus Räumen. Ein bestimmter Prozentsatz der Sackgassen, also Gängen mit drei angrenzenden Wänden wird Stück für Stück wieder geschlossen. Damit unterschiedlichen Spielumgebungen eine unterschiedliche Ästhetik gegeben werden kann, kann man diese Parameter verändern.

Nun fehlen noch die Eigentlichen Räume. Es gibt auch Möglichkeiten diese vor den Gängen zu erstellen, jedoch ist es aufwendiger die Gänge danach zu erstellen. In diesem Beispiel sollen die Räume perfekt in das Gangnetz passen und sich nicht überlappen. Dies simuliert am einen unterirdischen Gangkomplex von Menschenhand erbaut z.B. ein Mausoleum. Ändert man das so erhält man Strukturen die mehr natürlichen höhlen ähneln. Für diesen Zweck können auch noch Raumform und Positionierung geändert werden. Die Räume hier sind Rechtecke zufälliger ungerader Größe und Position.

Mit den voreingestellten Parametern besteht die Chance das ein Raum nicht mit allen anderen verbunden ist, obwohl diese äußerst gering ist. Dies kann durch einen einfachen Test verhindert werden der zuerst alle vorhanden Gänge zählt und danach alle mit einem beliebigen gang verbundenen Felder zählt. Sind die Zahlen nicht gleich so ist es am einfachsten die Prozedur zu wiederholen anstatt zu versuchen den einsamen Raum zu verbinden. Jetzt können noch dinge wie eine Startposition und ein Ziel, Gegner, Fallen und schätze Platziert werden. Die Vorgänge sind im wesentlichen die selben.

Beispiele für gute Dungeon Generatoren

Hier sind einige Beispiele von Spielen die Sehr gute und Komplexe Implementationen solcher Techniken aufzeigen.

  • Rogue (1980)
  • Die Pokemon Mystery Dungeon Reihe
  • The Binding of Isaac : Rebirth
  • Dungeons of Dredmor
Persönliche Werkzeuge