Was sind einige gute Ressourcen zur prozeduralen Inhaltsgenerierung im Kontext der Dungeongenerierung?
Der nächste Artikel, den ich finden konnte, war Algorithmus zum Erzeugen eines 2D-Labyrinths , was nicht ganz das ist, wonach ich suche. Merkmale wie Räume und verbundene Flure sind ideal.
Vielen Dank!
procedural-generation
Gabriel Isenberg
quelle
quelle
Antworten:
Dies wurde bereits mehr oder weniger beantwortet. Ihre erste Anlaufstelle sollte http://pcg.wikidot.com/ sein.
Da mir vorgeworfen wurde, dies sei überhaupt keine hilfreiche Antwort. ), befasst sich diese Seite im Wiki speziell mit Dungeon-Generatoren und verweist auf verschiedene Artikel zu diesem Thema.
http://pcg.wikidot.com/pcg-algorithm:dungeon-generation
Ich würde dennoch empfehlen, das gesamte Wiki zu durchsuchen, da die Erstellung von prozeduralen Inhalten nur ein sehr kreativer Ansatz ist und alle Ideen gültig sind. Es ist eine Herausforderung für Querdenker - und es macht Spaß.
quelle
Ich habe es geschafft, mit dem folgenden Algorithmus, der auf einem quadratischen Gitter basiert, einigermaßen gut aussehende Level zu erhalten:
Erstellen Sie zunächst eine Reihe von Räumen. Zufällige Parameter bestimmen die Größe der Räume und deren Anzahl. Ein adaptiver Algorithmus könnte sogar einige Zonen definieren, die aus großen Fluren bestehen, und andere aus sehr kleinen Räumen.
Dann müssen Sie sicherstellen, dass alle Räume miteinander verbunden sind. Führen Sie dazu einen Pfadfinder durch, um zwischen jedem Raumpaar Korridore (z. B. A *) zu graben, und geben Sie den vorhandenen Räumen (Räumen oder anderen Korridoren) ein zufällig ausgewähltes Gewicht im Vergleich zu den noch nicht geschnitzten Räumen (Wänden). Wenn der Gewichtsunterschied gering ist, ist das Graben neuer Korridore relativ billig, und der Algorithmus erstellt viele Korridore zwischen den Räumen mit vielen Möglichkeiten, von einem Ort zum anderen zu gelangen. Wenn der Gewichtsunterschied hoch ist, wird der Algorithmus es vorziehen, vorhandene Räume und Korridore zu durchlaufen, wodurch die Wege kurviger werden und weniger Auswahlmöglichkeiten bestehen, um ein bestimmtes Ziel zu erreichen.
Auf diese Weise können Sie aus einer kleinen Anzahl von Parametern sehr unterschiedlich aussehende Ebenen erstellen, aus spärlichen, massiven Hallen mit kleinen Korridoren, die sie mit einem Labyrinth aus eng miteinander verbundenen Kammern verbinden.
Hier ist ein Beispiel eines generierten Levels.
Basierend auf diesem Algorithmus können Sie zonenabhängige Wanddekorationen hinzufügen, Korridore verkleinern oder vergrößern, spezielle Räume erstellen usw.
quelle
Wenn Sie gerne Code lesen und C # analysieren können, kann ich Ihnen den Dungeon-Generator empfehlen, den mein Amaranth verwendet? Es ist da . Es verwaltet verbundene Räume, erweiterbare Funktionen und einige andere nützliche Dinge.
Wenn Sie das gesamte Projekt öffnen und erstellen, gibt es ein eigenständiges Tool, mit dem Sie die Dungeons generieren und zeichnen können, sodass Sie sie optimieren und sehen können, wie sie funktionieren.
quelle
All dies sind großartige Ideen. Ich habe RogueBasin und pcg.wikidot.com ein wenig entnommen und meine eigene Implementierung in C # geschrieben.
Ich mochte das "natürliche" Aussehen von höhlenartigen Ebenen, die mit der Methode der zellularen Automaten erzeugt werden können. Stellen Sie sich Conways Spiel des Lebens vor, um zu verstehen, was ich mit der Methode der zellularen Automaten meine. In meinem Code wird die so genannte 4-5-Methode verwendet. Dies bedeutet, dass eine Kachel zu einer Wand wird, wenn es sich um eine Wand handelt und 4 oder mehr der neun Nachbarn Wände sind oder wenn es sich nicht um eine Wand handelt und 5 oder mehr Nachbarn Wände sind. Ich beginne damit, die Karte zufällig mit Wänden oder Leerzeichen zu füllen, gehe dann iterativ zu jeder x / y-Position und wende die 4-5-Regel an. Um das Problem der Bildung isolierter Höhlen zu lösen, entferne ich nach dem zufälligen Ausfüllen der Karte eine horizontale Linie über die Karte und setze jedes Feld auf ein Leerzeichen anstelle einer Wand, bevor ich die 4-5-Regel auf jedes Feld anwende.
Sie können den Code für meine Map-Handler-Klasse und die hier vorgenommenen Verbesserungen anzeigen
oder eine archivierte Version hier .
quelle
Ich denke, der direkteste Ort, um dies zu finden, ist der Blick auf den Quellcode. Angband und Nethack sind beide Open-Source-Unternehmen.
quelle