Prozedurale Dungeon-Generierung. Keine Korridore, farbige Schlüsseltüren

7

Ich bin gespannt, wie Dungeons wie die in Runescape Dungeoneering entstehen. Sie haben grundsätzlich ein 10x10-Raster. Es gibt also insgesamt 100 Zimmer. Es gibt Startraum und Ausgangsraum. Und jeder von ihnen ist durch offene Türen oder Türen verbunden, für die ein farbiger Schlüssel erforderlich ist. Hat jemand eine Idee, wie man so etwas generiert? Ich meine, wie man Türen und Schlüssel platziert, um Dungeon machbar zu machen?

Machiaweliczny
quelle

Antworten:

10

Hierfür gibt es viele verschiedene Ansätze. Dies hängt auch davon ab, ob Sie immer alle oder nur einige Ihrer Räume füllen möchten.

Hier ist ein möglicher Ansatz, bei dem nicht alle verfügbaren Räume verwendet werden.

  • Beginnen Sie mit einem zufälligen Raum, dies ist Ihr Einstiegspunkt. Fügen Sie diesen Raum einer Liste hinzu open_ends.
  • Wiederholen Sie die folgenden Schritte, bis Ihr Dungeon "vollständig" ist (z. B. Zielanzahl der erreichten Räume).
  • Wähle eine zufällige open endund eine zufällige Richtung.
  • Entfernen Sie den ausgewählten Raum aus open ends.
  • Wenn der Raum, in den Sie "umziehen", nicht vorhanden ist, erstellen Sie ihn und fügen Sie ihn hinzu open ends.
  • Markieren Sie beide Räume, um eine Verbindung zwischen ihnen herzustellen, entweder entsperrt oder gesperrt mit einem der folgenden available keys.
  • Wenn Sie einen Schlüssel ausgewählt haben und die Schlüssel nur einmal verwendet werden, entfernen Sie den Schlüssel aus available keys.
  • Wenn der Raum, in den Sie "umziehen", keinen Schatz hat, machen Sie einen zufälligen Wurf, um festzustellen, ob es einen gibt.
  • Wenn es einen Schatz gibt und es sich um einen Schlüssel handelt (z. B. roter Schlüssel, blauer Schlüssel usw.), fügen Sie diesen Schlüssel hinzu available keys.

Jetzt ist dein Dungeon fast fertig. Sie suchen immer noch nach einer Treppe oder einem Chefzimmer? Einfach!

  • Wählen Sie einen zufälligen Raum aus open ends.
  • Wenn keine verfügbar ist, durchlaufen Sie alle Räume und versuchen Sie, eine neue hinzuzufügen.
  • Markieren Sie den Raum als Chefraum und entfernen Sie ihn aus open ends.

Auf ähnliche Weise können Sie Dinge wie Schatzkammern, Geschäfte, Bibliotheken, Tempel usw. hinzufügen, solange noch Platz in Ihrem Dungeon ist.


Wenn Sie immer alle verfügbaren Räume nutzen möchten, würde ich wahrscheinlich einen anderen Ansatz verwenden:

  • Stellen Sie für jeden Raum in Ihrem Raster zufällige Verbindungen ein (z. B. links und rechts, oben und rechts usw.).
  • Wähle zufällige Räume für deinen Chef, deinen Schatz usw.
  • Stellen Sie diese zufälligen Räume so ein, dass sie nur einen Eingang / eine Verbindung haben.
  • Verwenden Sie einen Pfadfindungsalgorithmus (Djikstra?), Um sicherzustellen, dass der Spieler diese Räume erreichen kann.
  • Wenn Sie verschlossene Türen hinzufügen, stellen Sie sicher, dass mindestens ein Pfad von der verschlossenen Tür zu einem Schlüssel (als "gebraucht" markiert) zur Startposition des Spielers vorhanden ist. Wenn Sie fertig sind, markieren Sie die Tür als "gelöst" (sie kann in weiteren Iterationen für andere Türen übergeben werden).
Mario
quelle
0

Diese Art der prozeduralen Generierung wird auf dieser Website ausführlich behandelt, die sich der Auflistung von Spielmechanik-Ideen widmet. Auf dieser Website gibt es mehrere Einträge, die ausführlich beschreiben, wie die Erstellung von prozeduralen Inhalten effektiv durchgeführt werden kann. Es gibt fast 30 Einträge zur prozeduralen Generierung. Das Lesen dieser Einträge gab mir ein besseres Verständnis der prozeduralen Generierung und half mir zu verstehen, wozu sie fähig ist.

Dieser frühe Eintrag scheint für Ihre Frage am relevantesten zu sein. Es beschreibt eine Methode, um das zu erreichen, was Sie verlangen.

Gigggas
quelle