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.