Es gibt viele Themen zur Funktionsweise der prozeduralen Generierung, aber ich konnte keine Informationen zum Testen und - was noch wichtiger ist - zum Melden von Fehlern finden, die auf prozedural generierten Ebenen auftreten können. Was ist der beste Weg, um einen Fehler, beispielsweise im Zusammenhang mit dem Level-Design, auf einer Karte zu beschreiben, die jedes Mal anders aussieht, wenn Sie ein neues Spiel spielen? Welche Informationen sollten in den Fehlerbericht aufgenommen werden, damit die Reproduktion für Leveldesigner, Levelkünstler usw. und dann auch während des Regressionsprozesses einfacher ist?
EDIT: Es ist erwähnenswert, dass sich das Spiel, das ich zum Testen vorbereite, in einer sehr frühen Entwicklungsphase befindet und sich zusammen mit den Systemen, die für die Erzeugung von Levels verantwortlich sind, ständig ändert. Der Zweck dieser Forschung ist es, zu lernen, wie Fehler beschrieben werden (welche Informationen in den Bericht aufgenommen werden sollen), damit die Regression in einer sich ändernden Umgebung so weniger zeitaufwändig und effektiv wie möglich ist.
Antworten:
Dies kann auch sehr nützlich sein, wenn Ihr Algorithmus zur Kartengenerierung deterministisch und wiederholbar ist, basierend auf einem anfänglichen Startwert. Wenn Sie also denselben Startwert eingeben, erhalten Sie dieselbe Karte. Dies ist möglicherweise einfacher zu implementieren als Sie denken. Die meisten APIs zur Erzeugung von Zufallszahlen können mit einem Startwert initialisiert werden und generieren dann immer dieselbe Folge von Zufallszahlen für denselben Startwert. Wenn Sie eine der wenigen Plattformen verwenden, auf denen dies nicht der Fall ist (wie browserbasiertes JavaScript), können Sie Ihren eigenen Zufallszahlengenerator implementieren. Es gibt viele Algorithmen, die nicht sehr schwer zu implementieren sind und normalerweise immer einen Startwert erfordern.
Ihre Tester können dann den Kartensamen in ihren Fehlerberichten erwähnen. Ein Fehlerbericht wie "Bäume wachsen mitten in einem See" kann eine Reproduktionsanweisung enthalten: "Generieren Sie eine Karte mit dem Startwert a4f6dd32 und gehen Sie zu Position 4321500: 1269100". Nachdem Sie dies überprüft haben, können Sie in Ihrem Kartengenerierungsalgorithmus einen bedingten Debugger-Haltepunkt festlegen, der auf dem betroffenen Kartenblock ausgelöst wird, und genau überprüfen, was los ist.
Mit einem deterministischen Kartengenerierungsalgorithmus können Sie auch automatisierte Tests implementieren. Sie können verschiedene Testsamen mit bekannten Ausgaben erstellen und dann von Ihren automatisierten Tests überprüfen lassen, ob diese Ausgabe immer noch dieselbe ist, nachdem Sie einige Leistungsverbesserungen in Ihrem Generierungsalgorithmus vorgenommen haben.
quelle