Mit welchem Algorithmus haben Sie in der Vergangenheit ein einfaches 2D-Labyrinth erstellt?
algorithm
procedural-generation
jdeseno
quelle
quelle
Ich bevorzuge die dicht gewundenen Irrgärten, die Kruskals Algorithmus erzeugt.
Die Standardbeschreibung des Kruskal-Algorithmus ist insofern ungeeignet, als er Standorte im Diagramm nicht von Standortgruppen unterscheidet und sich dabei auf einen Wortspiel bei der Auswahl der Datenstruktur stützt, was zu Unklarheiten bei der Beschreibung führt, die Anfänger verwirren. Deshalb lehne ich die Termonologie von Kruskal ab.
Ich werde die folgenden Begriffe verwenden:
Und von diesen bekommen wir:
quelle
Wikipedia hat eine großartige Quelle für die Erstellung von Labyrinthen . Ich verwende einen randomisierten Prim-Algorithmus mit großartigen Ergebnissen. Der Aufteilungsalgorithmus sieht interessant aus, aber ich habe ihn nie benutzt.
Hier ist ein Wikipedia-Beispiel für Prims bei der Arbeit.
quelle
Eine einfache Möglichkeit besteht darin, eine Liste der Nord- und Westwände zu erstellen und diese dann zu permutieren. Geben Sie jedem Raum eine Nummer. Sprengen Sie dann eine der Wände in der Liste in die Luft, solange die beiden Räume nicht dieselbe Nummer haben, und verbreiten Sie dann eine der Nummern an alle anderen Räume mit derselben Nummer. Gehen Sie weiter, bis Ihnen die Wände ausgehen. Dies funktioniert für rechteckige Labyrinthe oder wirklich für jedes andere Labyrinth, in dem Sie eine Liste von "potenziell verbundenen Räumen" erstellen können. Außerdem ist das Programmieren ziemlich einfach.
quelle
Ich würde mir auch einige der Algorithmen ansehen, die in der Roguelike-Entwicklung verwendet wurden. Es gibt eine gute Starthilfe im Rogue Basin
quelle
Hier gibt es ein gutes Durchgehen: https://journal.stuffwithstuff.com/2014/12/21/rooms-and-mazes/
Grundlegende Schritte waren:
Code hier: https://github.com/munificent/hauberk/blob/db360d9efa714efb6d937c31953ef849c7394a39/lib/src/content/dungeon.dart
quelle
Sie haben gefragt, welchen ich verwendet habe, also werde ich sicherstellen, dass ich darauf antworte. Ich habe den Recursive Backtracker-Algorithmus in meinem Labyrinthspiel bei Rootbeer Games verwendet .
Dies ist ein Beweis dafür, dass ich den Algorithmus verwendet habe. Bitte betrachten Sie ihn nicht als Werbung für meine Arbeit.
quelle