PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ein Dungeon-Generator ...


aths
2004-06-23, 20:04:14
Ursprünglich wollte ich das in 3DC-Tools posten, aber das Ding ist alles andere als fertig. Es geht auch nicht um Programmierprobleme. Vielleicht wäre "Spiele" passend, aber direkt um ein Spiel geht's ja nicht.

Problem: Die Abenteurer betreten das verlassene Gewölbe. Welche Gefahren lauern? Welche Schätze sind versteckt? Das muss sich der Dungeon Master ausdenken. Die Feinarbeit, wo welche Fallen stehen, wo sich welche Monster rumtreiben, gehen leicht von der Hand. Aber der Grundriss – woher eine Idee nehmen, wenn nicht stehlen?

Ich hatte jedenfalls kürzlich Ideen, wie man Zufallsdungeons generieren könnte, und um diese mal austesten zu können in ein Programm gegossen:

http://www.aths.net/files/dg/dg01.png (http://www.aths.net/files/dg/dg.exe)

Klick aufs Bild = Download des Generators. Mehr zu den Generierungs-Ideen in der Beschreibung der Dialogfelder:

X, Y: Gibt die Fläche an, auf dem sich der Dungeon ausbreiten darf.

Start in the middle: Setzt den Eingang nicht nach unten in die Mitte, sondern direkt in die Mitte der erlaubten Dungeon-Fläche.

Insert exit: Fügt oben in der Mitte einen Ausgang hinzu.

Force long way: Versucht, einen Dungeon zu finden dessen Weg zum Ausgang komplizierter ist als bei normalen Dungeons. Diese Option sollte nur genutzt werden, wenn man den "Improved algorithm" aktiviert hat.

Valid: Zeigt an, dass der Dungeon die eingestellten Regeln erfüllt.

Final Dungeon Layout: Zeigt den eigentlichen Zufalls-Dungeon an.

Next Dungeon: Versucht, anhand der eingestellten Regeln einen neuen Zufalls-Dungeon zu erzeugen.

Minimum fill: Von der angegebenen Fläche muss eine Mindestfläche vom Dungeon belegt werden. 100% = alles wird ausgefüllt.

Search max: Das Zufallsprinzip garantiert nicht, dass immer ein passender Dungeon generiert werden kann. Hier stellt man ein, nach wie viel Sekunden ergebnisloser Suche der Vorgang abgebrochen wird. Dann wird der aktuelle Test-Dungeon angezeigt, der aber die eingestellten Bedingungen nicht erfüllt. (Das "Valid" wird dann ausgeblendet.)

Show outside rooms: Zeigt den Inhalt der ganzen Fläche. Wird bei ergebnisloser Suche automatisch aktiviert, bei erfolgreicher Suche automatisch deaktiviert.

Roll again ...: Standardmäßig geht der Algorithmus von einer Fläche aus, wo alle Räume abgeschlossen sind. Dann geht er jeden Raum ab und zieht einfach eine zufällig ausgewählte Wand raus. Dabei handelt es sich aber nie um eine Wand am Rand der Dungeon-Fläche, so stehen z. B. bei Eckfeldern nur zwei Wände zur Auswahl.

Dieses Standard-Muster führt oft zu Labyrinthen, wo zu wenig Gänge miteinander verbunden sind. Um die Chance zu erhöhen, dass vom Eingang her die Mindestfläche an Räumen erreicht werden kann, lässt sich diese Option nutzen.

Der PC würfelt dann pro Raum erneut den angegebenen Würfel. Bei der Augenzahl 1 wird noch mal eine Wand zufällig rausgezogen. Ist die Wand ohnehin schon weg, macht das nichts. Für größere Labyrinthe die mit der Standard-Methode erzeugt werden, sollte man diese Option nutzen. Sonst kommt man praktisch nie zum gewünschten Ergebnis.

If passed, roll again: In Verbindung mit dem "Roll again": Sofern eine 1 gewürfelt wurde, wird der eingestellte Würfel noch mal geworfen, um ggf. noch eine weitere Wand herauszuziehen. Das wird dann so lange fortgesetzt, bis die Augenzahl > 1 ist.

Improved algorithm: Wenn der PC jeden Raum abklappert, um eine Wand zu entfernen, so achtet er darauf, dass wirklich eine Wand weggebrochen wird: Ist die ausgewürfelte Stelle schon leer, würfelt er erneut. Steht gar keine Wand mehr, kann auch keine weggenommen werden. Dieser Algorithmus führt zu deutlich größeren zusammenhängenden Gängen, so dass die Suchzeit nach einem regelkonformen Dungeon deutlich verkürzt wird. Für sehr großflächige Dungeons empfiehlt sich außerdem die sanfte Nutzung der Roll-Again-Methode.

Smoother border: Glättet die Außenwände ab. Steht eine Wand an der Außenwand, wird geprüft, ob es in den nächsten zwei Räumen mindestens eine Wand gibt, welche diese allein stehende Außenwand fortsetzt. Sofern das nicht der Fall ist, wird sie weggenommen. Das verkürzt die Suchzeiten ebenfalls etwas, da somit funktionsfähige Gänge in den äußeren Arealen des Dungeons wahrscheinlicher werden.

No single walls: Entfernt mitten im Dungeon allein herumstehende Wände. Das beeinflusst die Funktionsfähigkeit des Labyrinthes in keiner Weise und dient eher der Optik.

Insert doors: Schlägt Positionen vor, die mit Türen abgeschlossen sind. Für das Labyrinth wird jede Tür als prinzipiell passierbar angesehen, diese Option beeinflusst die Funtionsweise also auch nicht.

Same Dungeon again: Sofern keine der Optionen angefasst werden die sich überhalb des Layout-Fensters befinden, und man auch nicht an den Roll-Again-Regeln spielt, kann man die vier eben erläuterten Regeln nachträglich auf den gleichen Dungeon anwenden.

Auto-click: Das Neuzeichen des Dungeons geschieht bei nachträglicher Regeländerung automatisch (Standard.)

Save Fullscreen: Speichert das Bild als BMP ab. Der Dateiname wird automatisch gewählt und im Dialogfeld angezeigt. Die Auflösung entspricht immer der aktuellen Bildschirmauflösung. Das BMP kann vom User mit einem Malprogramm gedruckt werden, um eigene Ergänzungen zu machen, und das Labyrinth zu einem vollwertigen Dungeon zu ergänzen.


Gibt es bezüglich der Generierung weitere Vorschläge oder Ideen?

Binaermensch
2004-06-26, 12:10:50
Ich verstehe den Sinn dahinter nicht ganz.. Schon klar dass man damit Dungeons entwerfen kann, aber wozu brauche ich dann diese Dungeongrundrisse? Für DungeonKeeper? Oder gibts da n tolles Brettspiel das alle außer ich kennen?

aths
2004-06-26, 16:10:22
Original geschrieben von Binärmensch
Ich verstehe den Sinn dahinter nicht ganz.. Schon klar dass man damit Dungeons entwerfen kann, aber wozu brauche ich dann diese Dungeongrundrisse? Für DungeonKeeper? Oder gibts da n tolles Brettspiel das alle außer ich kennen? Nein :) Das Programm kann Dungeons entwerfen, falls man mal eine Grundriss-Idee braucht. Einen konkreten Anwendungszweck gibt es nicht, das Tool ist ein (schnell zusammengefrickeltes) Ergebnis von Überlegungen, die man nicht mal schnell auswürfeln kann um zu sehen ob der Algorithmus taugt. Um das Erstellen von 100% ausgefüllten Dungeons zu beschleunigen habe ich schon neue Ideen, wenn die ausgereift sind, füge ich die in das Tool ein.

q@e
2004-06-26, 16:11:00
Pen'n'Paper-Rollenspiele.

Zwar ohne "Brett", aber im Grunde das, was du meinst. Und "alle" kennen das mit Sicherheit nicht.

BubbleBoy
2004-06-26, 17:17:28
Warum in englisch und nicht deutsch?

aths
2004-06-26, 18:04:57
Weil "Gewölbe-Erzeuger" nicht so gut klingt :)

BubbleBoy
2004-06-26, 18:41:23
Original geschrieben von aths
Weil "Gewölbe-Erzeuger" nicht so gut klingt :)
Naja, man kann ja auch etwas kreativer sein ;).
Generator ist z.B. schonmal ein deutsches Wort (etwas generieren). Warum also nicht 'Gewölbe-Generator' oder 'Katakomben-Generator' nehmen :). Letzteres hätte mit 'KatGen' auch eine recht gute Abkürzung.

hofmetzger
2004-06-26, 20:47:01
bin ich der erste der sich wünscht dass du für die Ausgabe ein paar Zeilen openGL zusammenhackst? So mit lecker fackeln an der Wand...

achso eine idee zur generierung war das jetzt nicht.

Aber coole sache das.

DocEW
2004-07-01, 15:30:36
Nett!
Also mit

100% Fill,
2 Sekunden Limit,
Roll again (1D6),
improved Algorithm und
no single Walls

sieht's schon richtig nach Dungeon aus und geht auch schön schnell! =)

DocEW
2004-07-01, 15:41:06
Ne Kleinigkeit:
Wenn der Algorithmus nicht zu einem "valid"-Ergebnis kommt, stimmt die Angabe der Raumanzahl links unten nicht.

P.S.: Warum hast du eigentlich nicht im Programmierungs-Forum gepostet?

aths
2004-07-01, 16:05:38
Original geschrieben von DocEW
Ne Kleinigkeit:
Wenn der Algorithmus nicht zu einem "valid"-Ergebnis kommt, stimmt die Angabe der Raumanzahl links unten nicht.Afaik schon, musst allerdings "Show outside rooms" abhaken damit das klar wird.
Original geschrieben von DocEW
P.S.: Warum hast du eigentlich nicht im Programmierungs-Forum gepostet? Weil es kein Programmierproblem ist.

Habe noch Ideen für einen "optimized" Algorithmus, der dafür sorgen müsste, 100% fill deutlich schneller zu schaffen.

DocEW
2004-07-02, 11:55:39
Original geschrieben von aths
Afaik schon, musst allerdings "Show outside rooms" abhaken damit das klar wird.
Jo stimmt, sorry... hatte ich irgendwie nit gerafft.
Original geschrieben von aths
Weil es kein Programmierproblem ist.
Ich denke man "darf" auch Sachen dort posten, mit denen man absolut keine Probleme hat! ;)
Also ich dachte ja nur, daß du dort bestimmt mehr Feedback bekommen würdest...