Führen Sie einen gesäten Generator durch den Layout Builder
Erstellen Sie einen mit einem Startwert initialisierten Pseudozufallszahlengenerator und übergeben Sie ihn an jede Generierungsfunktion, anstatt Math.random in unabhängigen Hilfsprogrammen aufzurufen. MDN weist darauf hin, dass der anfängliche Startwert von Math.random vom Benutzer nicht ausgewählt oder zurückgesetzt werden kann, sodass Math.random allein keinen wiederholbaren Startwert bereitstellen kann. Speichern Sie den Seed zusammen mit einem generierten Level oder seinem Fehlerbericht. Wenn Sie zufällige Ziehungen später hinzufügen oder neu anordnen, kann es sein, dass derselbe Startwert ein anderes Layout erzeugt. Versionieren Sie den Generator oder zeichnen Sie die generierte Karte auf, wenn eine genaue Langzeitwiedergabe wichtig ist.
Wenn möglich, trennen Sie die Auswahl nach Zweck: einen Zufallszahlenstrom für die Raumform, ein anderer für die Dekoration und ein weiterer für die Platzierung des Feindes. Dann wird das feindliche Muster durch das Hinzufügen einer dekorativen Zeichnung nicht automatisch verschoben.
Generieren, validieren und dann präsentieren
Führen Sie nach dem Bau eines Raums Strukturprüfungen durch, bevor Sie ihn zeigen: Ein- und Ausgang sind vorhanden, erforderliche Schlüssel passen auf begehbare Kacheln und ein Pfadsuche kann den Ausgang erreichen, während er obligatorische Gegenstände einsammelt. Wenn das Layout fehlschlägt, versuchen Sie es mit einer begrenzten Anzahl neuer Seeds erneut und verwenden Sie dann einen bekannten Fallback-Raum oder zeigen Sie einen eindeutigen Generierungsfehler an. Protokollieren Sie den abgelehnten Seed und die fehlgeschlagene Invariante, damit ein unerwartetes Layout lokal wiedergegeben werden kann.
Testen Sie einen kleinen Satz bewusst ausgewählter Samen, einschließlich grenzwertiger Werte, die von Ihrem Samenparser akzeptiert werden, sowie eine Probe gewöhnlicher Samen. Dies ist kein Beweis dafür, dass jeder mögliche Samen gültig ist. Dies ist eine praktische Möglichkeit, sowohl die deterministische Reproduktion als auch den Ablehnungspfad des Generators auszuüben.
Halten Sie den Samen von den Schwierigkeitsangaben getrennt
Ein reproduzierbarer Raum ist nicht automatisch ein fairer Raum. Spielen Sie generierte Beispiele ab und fragen Sie, ob Gefahren sichtbar sind und ob die geplante Route genügend Zeit zum Reagieren lässt. Halten Sie diese Überprüfung in einer Fairness-Überprüfung getrennt von der Verteilungsanalyse. Wenn ein Fehler festgestellt wird, ermöglicht der Seed dem Team, ein genaues Layout zu besprechen, anstatt eine ungefähre Anordnung aus dem Gedächtnis zu beschreiben.
Fragen zu Generierung zufälliger Levels mit Samen
Kann ich ein Level mit Math.random und einer gespeicherten Zahl reproduzieren?
Nicht durch Zurücksetzen des integrierten Status von Math.random; Laut MDN kann der anfängliche Startwert nicht ausgewählt oder zurückgesetzt werden. Verwenden Sie einen von Ihnen kontrollierten, mit einem Startwert initialisierten Zufallszahlengenerator und führen Sie alle Generierungsentscheidungen darüber aus.
Garantiert ein Startwert, dass jedes generierte Level lösbar ist?
Nein. Ein Samen reproduziert eine Auswahlsequenz; Die resultierende Karte wird nicht validiert. Überprüfen Sie die Erreichbarkeit und die Regeln für erforderliche Objekte und lehnen Sie dann fehlerhafte Layouts ab oder reparieren Sie sie.
Weiterlesen
Etwas nicht mehr aktuell? Korrektur melden