Metlivi Blog

Wie sich verzweigte Spielgeschichten testbar halten lassen

Wenn eine verzweigte Geschichte wächst, testen Sie die Entscheidungen und Zustandsänderungen, die dazu führen, dass sich Pfade unterschiedlich verhalten – und nicht jede mögliche Route als separates End-to-End-Skript. Modellieren Sie die Erzählung als Graphen, definieren Sie die Bedingungen und Ergebnisse an jeder Entscheidung und erstellen Sie eine kleine Testsuite, die kritische Übergänge, Zusammenführungspunkte und Fehlerfälle abdeckt. Nutzen Sie anschließend risikobasierte Stichproben von Routen und menschliche Playtests, um Probleme aufzudecken, die strukturierte Prüfungen nicht beurteilen können. So erhalten Narrative Designer und QA-Teams eine reproduzierbare Möglichkeit, Fehler zu finden, ohne eine lückenlose Pfadabdeckung zu beanspruchen.

27. September 20267 Min. LesezeitLesen, Kunst & KulturVon Metlivi Editorial Team
Abschnitt 1

Mit einem Graphen beginnen, der das Verhalten abbildet

Stellen Sie jeden spielbaren Abschnitt oder jede Szene als Knoten und jede Entscheidung als gerichtete Kante dar. Versehen Sie Kanten mit ihren Bedingungen und Auswirkungen: Beispielsweise ermöglicht `has_key = true` die Option „Tor aufschließen“, was `gate_open = true` setzt. Kennzeichnen Sie Enden, Schleifen und Zusammenführungspunkte explizit. Ein Zusammenführungspunkt ist eine Stelle, an der verschiedene Routen wieder zusammentreffen; er eignet sich hervorragend, um zu prüfen, ob die Geschichte aus verschiedenen Vorgeschichten fortgesetzt werden kann, ohne unbeabsichtigte Zustände mitzuschleppen.

Der Graph sollte widerspiegeln, was das Spiel tatsächlich auswertet, nicht nur die Prosastruktur. Erfassen Sie, welche Variablen eine Entscheidung liest, welche sie schreibt und welche späteren Knoten von ihnen abhängen. Schließen Sie Standardwerte, Rücksetzregeln und einmalige Effekte ein. Wenn ein Flag in einem Zweig gesetzt und nie gelöscht wird, kann dies beabsichtigt sein; die Dokumentation macht die Konsequenz für Review und Tests sichtbar.

Diese Struktur hilft auch dabei, Entscheidungspunkte zu lokalisieren, die in einem langen Skript leicht übersehen werden können. Eine Veröffentlichung von Alexey Tikhonov aus dem Jahr 2024 untersucht die Erkennung von Entscheidungszeitpunkten von Charakteren in verzweigten Erzählungen und schlägt einen Datensatz vor, der auf Choose-Your-Own-Adventure-Spielgraphen basiert. Seine Aufgabe befasst sich mit der Identifizierung narrativer Entscheidungspunkte, nicht mit der Validierung einer QA-Methode; sie kann Teams dabei unterstützen, Entscheidungen zu inventarisieren, belegt jedoch nicht, dass der hier vorgestellte Testansatz wirksam ist. [Tikhonov, „Branching Narratives: Character Decision Points Detection“](https://aclanthology.org/2024.games-1.8/)

Abschnitt 2

Zustandsübergänge testen, nicht nur den Besuch von Szenen

Ein Test, der nur bestätigt, dass ein Knoten erschienen ist, kann eine fehlerhafte Entscheidung übersehen. Prüfen Sie bei jeder wichtigen Entscheidung drei Dinge: ob die Option unter der beabsichtigten Bedingung verfügbar ist, ob ihre Auswahl die erwartete Zustandsänderung bewirkt und ob der nächste Knoten sowie das sichtbare Ergebnis zu diesem Zustand passen. Diese Prüfungen behandeln die Geschichte wie ein Zustandsübergangssystem: Ausgehend von einem Anfangszustand und einer Aktion wird der resultierende Zustand und das Ziel verifiziert.

Beispielsweise könnte ein Test für die Auswahl von „Karte zeigen“ zusichern, dass die Karte angezeigt wird, `trust` unverändert bleibt und die Route die gemeinsame Observatoriumsszene erreicht. Ein Gegenstück dazu beginnt mit `has_map = false` und stellt sicher, dass diese Option nicht verfügbar ist oder der vorgegebenen Alternative folgt. Das genaue erwartete Verhalten hängt von der narrativen Spezifikation ab; wichtig ist, es explizit zu prüfen, anstatt die Korrektheit aus dem Titel eines Abschnitts abzuleiten.

Testen Sie an Zusammenführungspunkten mehr als nur die Ankunft. Vergleichen Sie den Zustand, den jede Route bewahren, ändern oder verwerfen soll. Eine Wache, die auf einem Zweig überredet wurde, bleibt nach dem Wiedersehen möglicherweise ein Verbündeter, während eine vorübergehende Verkleidung ablaufen sollte. Machen Sie solche Regeln zum Bestandteil des erwarteten Zustands nach dem Zusammenführen. Wenn Routen vollständig konvergieren sollen, sichern Sie den gemeinsamen Zustand ab; wenn sie bedeutsame Unterschiede beibehalten sollen, prüfen Sie diese Unterschiede ebenfalls.

Abschnitt 3

Ein fiktives Beispiel nutzen, um Abdeckung sichtbar zu machen

Angenommen, ein kurzer Kriminalfall beinhaltet eine Entscheidung im Archiv. Der Spieler kann um Hilfe bitten, sich hineinschleichen oder einen geliehenen Schlüssel verwenden; jede Route führt in denselben Korridor, woraufhin eine spätere Entscheidung bestimmt, ob der Spieler einen versiegelten Brief mitnimmt. Die folgende fiktive Matrix bildet einen kompakten Satz von Testanforderungen ab. „Abgedeckt“ bedeutet hier, dass ein Test für die spezifische Anforderung geplant ist – nicht, dass die gesamte Route oder jede Kombination getestet wurde.

**A:** `trust = high`; den Archivar um Hilfe bitten. Hilfe-Option erscheint; `trust` bleibt hoch; Route erreicht den Korridor. Verfügbarkeit der Auswahl und Übergang

**B:** `trust = low`; um Hilfe bitten. Hilfe-Option wird ausgeblendet oder lehnt ab, wie spezifiziert. Negative Bedingung

**C:** `has_key = true`; Seitentür aufschließen. Tür öffnet sich; Route erreicht den Korridor; Schlüssel wird nur verbraucht, falls vorgegeben. Zustandseffekt und Zusammenführung

**D:** `has_key = false`; Seitentür versuchen. Tür kann nicht geöffnet werden; es wird kein Erfolgs-Flag gesetzt. Negative Zusicherung

**E:** Vom Korridor aus versiegelten Brief nehmen. `has_letter = true`; spätere Beweisszene bietet die briefspezifische Textzeile an. Nachgelagertes Ergebnis

**F:** Vom Korridor aus Brief liegen lassen. `has_letter = false`; briefspezifische Textzeile fehlt. Ergebniskontrast und negative Zusicherung

Dies ist eine Entscheidungshilfe, kein Abdeckungsprozentsatz oder eine universelle Mindestsuite. Sie macht Lücken sichtbar: Hier verdienen die Niedrig-Vertrauen-Schranke und das Ergebnis „Brief nicht vorhanden“ eigene Tests, da ein Durchlauf auf dem Happy Path sie nicht prüfen würde. Jede Zeile sollte auf den entsprechenden Knoten oder Übergang im Graphen verweisen, damit eine geänderte Bedingung auf betroffene Tests zurückgeführt werden kann.

Abschnitt 4

Zweigabdeckung priorisieren, wenn Kombinationen zunehmen

Wenn eine Geschichte viele unabhängige Flags aufweist, kann die Anzahl möglicher Kombinationen schnell anwachsen. Reagieren Sie darauf nicht, indem Sie jede theoretische Route als obligatorischen vollständigen Spieldurchlauf auflisten. Identifizieren Sie zunächst risikoreiche Kanten: Entscheidungen, die Enden freischalten oder sperren, Gegenstände verbrauchen, dauerhafte Beziehungsdaten festlegen oder Handlungsstränge zusammenführen. Testen Sie diese Übergänge und ihre wichtigen nachgelagerten Konsequenzen direkt.

Wählen Sie Kombinationen dann gezielt stichprobenartig aus. Berücksichtigen Sie Grenzwerte (den Mindestwert, der eine Entscheidung ändert), beide Ausprägungen jeder kritischen Bedingung, repräsentative Kombinationen von Flags, die interagieren können, sowie Routen, die einen Zusammenführungspunkt über unterschiedliche Vorgeschichten erreichen. Priorisieren Sie kürzliche Änderungen und Pfade mit komplexen Voraussetzungen. Wenn zwei Variablen interagieren könnten, fügen Sie einen Test für dieses Paar hinzu, anstatt davon auszugehen, dass separate Prüfungen einzelner Variablen das Funktionieren der Kombination belegen.

Dokumentieren Sie die Erfassungseinheit und ihre Grenzen. Ein Team könnte nachverfolgen, ob jede kritische Entscheidungskante durchlaufen wurde, ob jede Bedingung – sofern relevant – sowohl mit 'wahr' als auch mit 'falsch' geprüft wurde und ob jeder Endauslöser von mindestens einem konzipierten Test erreicht wurde. Das sind nützliche Berichte darüber, was stichprobenartig geprüft wurde; keiner davon beweist, dass jede mögliche Vorgeschichte, Zustandskombination oder Formulierungsproblematik untersucht worden ist.

Forschung zum Playtesting von Spielen kann einen verwandten, aber begrenzten Denkanstoß liefern. Das 2021 erschienene arXiv-Paper von Gordillo und Kollegen beschreibt Reinforcement-Learning-Agenten, die für neuartige Aktionen belohnt werden, um die Zustandsabdeckung in einem komplexen 3D-Szenario zu untersuchen. Diese Arbeit befasst sich mit der Erkundung in einer 3D-Spielumgebung, nicht mit verzweigten Erzählentscheidungen oder der hier beschriebenen spezifischen Methode für Übergangstests. Sie stützt den Gedanken, automatisierte Erkundung als mögliche Ergänzung zu betrachten, aber weder diese Studie noch Tikhonovs Veröffentlichung validiert exakt diese narrative Testmethode. [Gordillo et al., „Improving Playtesting Coverage via Curiosity Driven Reinforcement Learning Agents“](https://arxiv.org/abs/2103.13798)

Abschnitt 5

Negative Zusicherungen und menschliche Playtests ergänzen

Positive Zusicherungen bestätigen, dass die erwartete Option oder das Ergebnis vorhanden ist. Negative Zusicherungen stellen sicher, dass etwas Unzulässiges nicht geschieht: Eine gesperrte Option wird nicht angezeigt, ein verbrauchter Hinweis wird nicht doppelt gewährt, ein fehlender Brief löst seine Zeile nicht aus oder ein gescheiterter Versuch setzt kein Erfolgs-Flag. Negative Prüfungen sind besonders nützlich an geteilten Knoten, an denen veralteter Zustand aus einer anderen Route in die aktuelle Szene durchsickern kann.

Automatisierte Prüfungen können Routenlogik und exakte Zustandsänderungen verifizieren, beurteilen jedoch nicht verlässlich, ob sich ein Übergang stimmig anfühlt, ob eine Textzeile dem widerspricht, woran sich der Spieler erinnert, oder ob eine Entscheidung im Kontext verständlich ist. Menschliche Playtests sollten daher ausgewählte Routen mit einem klaren Ziel nutzen: Bitten Sie Tester, einem weniger verbreiteten Zweig zu folgen, mit einer bestimmten Vorgeschichte an einer Zusammenführung anzukommen oder zu versuchen, ein Ende ohne einen bestimmten Schlüssel zu erreichen. Beobachten Sie dabei sowohl den resultierenden Zustand als auch die Interpretation durch den Spieler.

Verknüpfen Sie Playtest-Notizen stets mit Knoten- und Entscheidungskennungen sowie dem Ausgangszustand und den ausgeführten Schritten. Das macht gemeldete Probleme reproduzierbar und hilft dabei, ein redaktionelles Problem von einem Logikfehler zu unterscheiden. Führen Sie nach einer Behebung die betroffenen Übergangstests und mindestens eine repräsentative Route über die geänderte Zusammenführung oder das Ergebnis erneut aus.

Abschnitt 6

Ein praktischer Testzyklus für eine sich verändernde Geschichte

Exportieren oder überprüfen Sie bei jeder Aktualisierung der Geschichte den Graphen, identifizieren Sie geänderte Knoten, Bedingungen, Effekte und Zusammenführungspunkte und aktualisieren Sie anschließend die Abdeckungsmatrix. Führen Sie zuerst gezielte Zustandsübergangstests durch; schließen Sie ausgewählte Routenstichproben und menschliche Playtests für einflussreiche oder neu geänderte Abschnitte an. Wenn ein Fehler auftritt, halten Sie den Ausgangszustand und die Abfolge der Entscheidungen fest, damit das Team ihn reproduzieren, die betreffende Regel oder Textstelle korrigieren und den Fall als Regressionsprüfung behalten kann.

Das Ziel ist ein nachvollziehbarer Überblick darüber, was geprüft wurde und warum. Ein Graph macht die Struktur überprüfbar, Übergangstests machen die Logik explizit, das Bemustern von Zweigen lenkt den Aufwand auf bedeutsame Variationen, negative Zusicherungen fangen durchgesickerten Zustand ab und menschliche Playtests bewerten das Spielerlebnis. Zusammen bieten sie eine nützliche Abdeckung bei sich vervielfachenden Pfaden, während klar abgegrenzt bleibt, was ungetestet bleibt.

Weitere Artikel

Dieses Thema weiter erkunden