Wie melde ich Fehler, die auf prozedural generierten Ebenen gefunden wurden?

8

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.

BoYLER
quelle
2
Wer ist Ihre Zielgruppe? Ich meine, wer wird diese Fehlerberichte ausfüllen?
Vaillancourt
1
Eine der möglichen Lösungen besteht darin, "Speicher" -Funktionen oder zumindest einen Hashing-Mechanismus hinzuzufügen. Auf diese Weise kann der Tester die gesamte Ebene in seinen Bericht aufnehmen oder zumindest Text-Hash einfügen, der später auf eine Reihe von ähnlichen Ebenen zurückgesetzt werden kann. Die erste Option ist unkompliziert, frisst aber Verkehr / Platz. Die zweite Option erfordert ernsthaftes Brainstorming. Ps Ich kann mich irren, aber soweit ich mich erinnere, hat Diablo 2 Hashing verwendet. Das Level (und andere Level, die mehr oder weniger so aussehen) wurde also durch Hash beschrieben.
Sergey.quixoticaxis.Ivanov
Welche Art von Spiel? IE-Techniken, die in einem rundenbasierten Spiel verwendet werden, sind möglicherweise für ein Echtzeitspiel schlecht geeignet und umgekehrt.
Pikalek
@ Alexandre Vaillancourt: Tester melden Fehler mithilfe eines automatisierten Tools, das einige einfache Informationen wie die Anzahl der physischen Objekte, die Anzahl der KIs usw. sammelt. Ich frage mich, was nicht nur in diesen automatisierten Berichten, sondern auch in den herkömmlichen Berichten enthalten sein könnte Berichte von Testern geschrieben. @Pikalek: Es ist ein FPP-Actionspiel mit einer offenen Welt und Echtzeit-Gameplay.
BoYLER

Antworten:

18

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.

Philipp
quelle
Vielen Dank für die Ideen. Ich kann noch nicht versuchen, sie zu verwenden, da sich das Spiel nicht in einem spielbaren / testbaren Zustand befindet. Es wird tatsächlich viel mehr Zeit benötigen, um zum Testen bereit zu sein. Im Moment forsche ich nur in dieser Angelegenheit.
BoYLER
Dies ist eine großartige Antwort. Ich erstelle gerade ein Spiel, das Dungeon Architect verwendet, um zufällig Levels basierend auf einem Samen zu generieren. Ich bin noch einen Schritt weiter gegangen und habe eine zufällige Singleton-Klasse erstellt, die die zufälligen Werte an ALLE Subsysteme verteilt, sowohl an DAs als auch an meine eigenen. Der Vorteil ist, dass ich, wenn ich den Startwert und den Wert des Levels selbst kenne (z. B. Dungeon 1-1 oder Wald 3-6), genau dasselbe Level mit denselben Mobs an denselben Orten mit denselben erstellen kann Beutetabellen und alles. Da dieser Wert protokolliert wird, ist es für mich einfach, einen Fehlerbericht zu analysieren und das Szenario neu zu erstellen.
Jesse Williams