Wie Stage Whisper das ‚Allwissende-NSC-Problem' löst: Kontextisolations-Architektur
NSCs, die etwas zitieren können, das mein Charakter vor drei Sitzungen gesagt hat, war ziemlich cool zu sehen. Das Gedächtnissystem funktionierte. NSCs verwiesen auf vergangene Ereignisse und zitierten Dinge, die ich gesagt hatte. ABER es begann auch ein anderes Problem: NSCs wurden allwissend.
Hier ist ein Auszug aus einer kürzlichen Sitzung, der relevante Teil ist hervorgehoben:
„Also", sagt sie, ihre Stimme trägt leicht über das Rascheln der Blätter, „was ist der wahre Grund, warum du mich gesucht hast? Neugier, oder versuchst du nur, das Auspacken des restlichen chaotischen Schreibtisches von dir zu vermeiden?"
Das bezog sich auf etwas, das in einer völlig anderen Szene passiert war, bei der dieser Charakter nicht anwesend war. Der Charakter hätte keine Möglichkeit haben dürfen, das zu wissen.
Kleine Inkonsistenzen wie diese sind immersionsbrechend. Aber in anderen Fällen kann es spielzerstörend sein. Zum Beispiel habe ich eine Kampagne, in der mein Charakter ein geheimer Vampir ist, der eine Welt ahnungsloser Menschen navigiert. NSCs begannen beiläufig anzudeuten, dass sie mein Geheimnis kannten, was es mir plötzlich sehr schwer machte, den Tag zu überstehen, ohne verdächtigt zu werden. Oder in anderen Beispielen, wenn ich bei einem Raubzug ein Artefakt gestohlen hatte, war der Spieler derjenige, der das Artefakt bei einem Raubzug gestohlen hatte, und dann macht ein nicht verbundener Charakter verdächtige Bemerkungen.
Die KI entschied sich im Grunde, alle verfügbaren Geheimnisse im Kontext für dramatische Effekte zu nutzen, was wirklich nur sehr gelegentlich aus Handlungsgründen passieren sollte.
Warum kann ich der KI also nicht einfach sagen, sie soll das nicht tun?
Das Problem ist, dass du versuchst, ein Negativ zu erreichen. „Nutze diese Informationen nicht." Das ist eine grundlegend andere und viel schwierigere Aufgabe als der positive Fall: Nutze die Informationen, die da sind. Um ein Modell zu trainieren, relevanten Kontext zu ignorieren, bräuchtest du Tausende von Beispielen für Situationen, in denen die Informationen eindeutig verfügbar waren, die Ausgabe sie aber bewusst nicht verwendet hat. Das ist fast die Antithese dessen, wofür eine KI entwickelt wurde. Für die meisten Aufgaben wäre das Ignorieren nützlichen Kontexts ein Versagen bei der Aufgabe.
Denkbar wäre, dass ein Modell mit mehr Beispielen des Nicht-Reagierens auf Geheimnisse trainiert werden könnte. Aber Erzählung und Rollenspiel waren bisher kein großer Fokus für Modellentwickler, daher hat dieses Problem nicht die Aufmerksamkeit bekommen, die es verdient.
Mir wurde klar, dass ich das in dieser Geheimvampir-Kampagne beheben musste. Die Kampagne war so angelegt, dass mein Charakter die meiste Zeit als normaler Mensch durchgehen konnte, und der ganze Punkt war, diese Spannung zu navigieren, ohne erwischt zu werden. Es wäre ein großer narrativer Moment, wenn irgendein NSC das Geheimnis herausfindet, denn dann müssten sie überredet werden, darüber zu schweigen.
Was ich entdeckte, war, dass so ziemlich jeder potenzielle Antagonist es irgendwie wusste. Obwohl ich nichts preisgegeben hatte. Und das war sofort handlungszerstörend. Es fühlte sich an, als ob ein großes Schild über meinem Kopf verkündete, dass ich ein Vampir war. Mein Charakter war ständig mit Schadensbegrenzung beschäftigt oder fühlte sich, als hätte jeder Charakter etwas gegen ihn in der Hand.
Ich experimentierte lange mit Prompts. Schließlich wurde mir klar, dass ich die Informationen einfach gar nicht in den Kontext aufnehmen durfte.
Die Lösung ist also Kontextisolation. Wenn die KI nicht anders kann, als alles zu nutzen, was sie sieht, dann müssen die Informationen wirklich nicht da sein. Dies ist in Stage Whisper erreichbar, weil jede Szene und Erinnerung bereits mit den NSCs gekennzeichnet ist, die darin erscheinen, sodass wir leicht filtern können, um nur die Charaktere einzuschließen, die tatsächlich dort waren.
Aber hier ist der Haken. Manche Geheimnisse sind wichtige Handlungstreiber. Du kannst sie nicht einfach komplett löschen, denn die Geschichte muss sie immer noch berücksichtigen. Ob es ein Raubzug oder ein geheimer Vampir ist, diese Geheimnisse sind Kernbestandteil der Erzählung, und es wäre nicht dieselbe Geschichte ohne sie.
Also mussten wir unsere Textgenerierung in zwei Teile aufteilen.
Der erste Teil, den ich den Handlungsleiter (Story Director) nenne. Er leitet die gesamte Geschichte: die Handlung, die narrativen Bögen. Er hat alle Geheimnisse und kann entscheiden, wie die Geschichte angesichts dieser Geheimnisse am besten gesponnen wird. Er versteht das vollständige Bild, einschließlich der Dinge, die noch kein Charakter wissen sollte.
Der zweite Teil, den ich den Szenenleiter (Scene Director) nenne. Er „spielt" die Szene, die ihm vom Handlungsleiter übergeben wurde. Er hat Zugang zu allen relevanten NSC-Erinnerungen und Persönlichkeiten, sodass er genug Informationen hat, um alle NSCs zu spielen und etwas Zwischenerzählung zu liefern, aber er kennt die Geheimnisse wirklich nicht.
Einige Informationen müssen von einem zum anderen weitergegeben werden, damit sie an derselben Geschichte arbeiten können, ohne gegeneinander zu arbeiten.
Der Handlungsleiter erstellt eine Zusammenfassung, die dem Szenenleiter alles sagt, was er wissen muss. Sie sieht etwa so aus:
<synopsis>
Elian kehrt mit Maeve in Raum 314 zurück, die vertrauten Schutzzauber bieten kurze Atempause von der Aufmerksamkeit, die sie während ihrer spektakulären Darbietung gesammelt haben. Da er Maeves Bedürfnis spürt, nach einem ungewöhnlichen Tag zu lernen, beschließt Elian, sein Zimmer für eine einsame Erkundung zu verlassen
<npc_list>maeve-corwin</npc_list>
<location>room-314</location>
<new_scene/>
</synopsis>
Dies sagt dem Szenenleiter, was in der Szene vor sich geht, wo sie ist, wer darin ist und ob es eine neue Szene ist. Die Anwesenheit des Spielercharakters wird vorausgesetzt. Der Handlungsleiter kann optional auch Out-of-Character-Gespräche mit dem Spieler führen und detaillierte Aufführungsnotizen für den eigenen zukünftigen Gebrauch machen.
Die beiden Leiter sehen nicht denselben Kontext. Hier ist die Aufteilung:
Handlungsleiter sieht:
- vollständige Kampagnendateien, einschließlich SL-Notizen, Sitzungsplan, Kampagneneinrichtung und aktueller Kampagnenstatus
- den vollständigen Spielercharakterbogen, einschließlich aller Geheimnisse
- eine Liste aller NSCs, Orte und Hintergrundwissen
- Sitzungszusammenfassungen
- die vollständige Historie der letzten beiden Szenen
Das ist alles, was der Handlungsleiter braucht, um interessante, konsistente Handlungsentscheidungen zu treffen. Es sind viele Daten, aber der KV-Cache hält die Kosten handhabbar.
Szenenleiter sieht:
- teilweise Kampagnendateien ohne die SL-Notizen
- die öffentliche Version des Spielercharakterbogens, die jegliche Geheimnisse weglässt, aber immer noch körperliche Erscheinung und öffentlichen Ruf enthält, die Dinge, die ein typischer NSC vernünftigerweise wissen würde
- Zusammenfassungen der letzten Szenen, in denen die NSCs tatsächlich waren
- Ortsdetails
- die letzten paar Erinnerungen, die jeder NSC haben könnte
- die Zusammenfassung vom Handlungsleiter
Dies ist eine bewusst reduzierte Sicht. Der Szenenleiter hat alles, was er braucht, um die Szene zu leiten, und nichts, was er nicht haben sollte.
Zwei Charakterbögen
Die Unterscheidung zwischen öffentlichem und vollständigem Spielercharakterbogen ist entscheidend. Der Handlungsleiter muss die vollständigen Details und alle Geheimnisse kennen, um die Geschichte zu produzieren. Aber der Szenenleiter sollte diese Details nicht kennen. Er muss immer noch wissen, wer der Spielercharakter physisch ist, wie er aussieht, sein öffentlicher Ruf, die Dinge, die jeder NSC vernünftigerweise allein durch seine Anwesenheit aufschnappen würde. Das Führen eines separaten öffentlichen Bogens bedeutet, dass der Szenenleiter immer diesen Kontext hat, ohne jemals Zugang zu den Geheimnissen zu benötigen.
Erinnerungen nach Szene filtern
Jede Szene ist damit gekennzeichnet, welche NSCs anwesend sind. Das bedeutet, wir wissen genau, welche kürzlichen Szenen für jeden NSC relevant sind, und wir fügen diese dem Kontext des Szenenleiters hinzu. Die Annahme ist, dass Szenen innerhalb der aktuellen Sitzung hochrelevant sind. Für ältere Erinnerungen bringt die semantische Suche diejenigen an die Oberfläche, die von Bedeutung sein könnten.
Das Ergebnis ist ein Szenenleiter, der wirklich nicht wissen kann, was die Charaktere in der Szene nicht wissen. Nicht, weil ihm gesagt wurde, es nicht zu tun, sondern weil diese Informationen physisch nicht da sind.
Ich leite eine Kampagne, in der mein Charakter eine menschliche Frau ist, die sich als Mann kleiden muss, um den Titel ihrer Familie als niedriger Adel zu sichern, aufgrund der Erbschaftsgesetze. Es ist eine unbeschwerte Comedy-Kampagne mit einigen Comedy-Szenarien, die aus dieser Geschlechterverwirrung entstehen.
Ohne dieses System gibt es im Allgemeinen keine Möglichkeit, NSCs zu überraschen. Sie verhalten sich alle, als ob sie etwas ahnen. Vielleicht nicht direkt, aber die Art, wie sie mit dir reden, hat immer diesen Hauch von Wissen. Es ist schwer zu beschreiben, aber man kann es fühlen. Die dramatische Spannung einer Geheimidentität ist einfach nicht da.
Aber mit diesem System spielen die NSCs völlig gerade. Sie haben keine Ahnung. Und die Szenen, in denen die große Enthüllung passiert, landen wirklich, weil es bis zu diesem Punkt absolut keine Anspielung darauf gibt. Die Komödie funktioniert, weil das Publikum – die NSCs – es wirklich nicht kommen sehen.
Es gibt einen Grenzfall. Weil der Szenenleiter das genaue Geheimnis nicht kennt, macht er gelegentlich anatomisch inkorrekte Details. Das ist schwer zu vermeiden, da der Szenenleiter von einem öffentlichen Charakterbogen aus arbeitet, der diese Details nicht enthält. Die Problemumgehung wäre das Hinzufügen eines dritten Schritts: Der Handlungsleiter überprüft die generierte Szene, bevor sie rausgeht, um Unstimmigkeiten wie diese zu erkennen. Das erhöht Kosten und Latenz, also ist es auf der Roadmap, aber noch nicht implementiert.
Eine Sache, die mich überraschte: Wenn ein Geheimnis im Spiel enthüllt wird, verbreitet es sich auf natürliche Weise. Der Szenenleiter hält die zuvor generierten Szenen, sodass, sobald ein NSC in einer Szene etwas lernt, das Teil seines Kontexts für den nächsten Zug wird. Am Ende der Szenen bilden diese Szenen Erinnerungen für den NSC. Am Ende der Sitzungen werden NSC-Bögen aktualisiert. Beides bedeutet, dass das Wissen eines einzelnen NSCs über ein Geheimnis aufgezeichnet wird und die Geschichte mit diesem NSC, der nun wirklich eingeweiht ist, fortgesetzt werden kann.
Der Kompromiss
Dieser Ansatz ist nicht kostenlos. Die Kosten steigen, obwohl nicht ganz das Doppelte, da der Kontext des Szenenleiters relativ leicht ist. Der Prompt-Cache hilft ebenfalls erheblich. Während die Szene abläuft, werden neue Züge am Ende des Kontexts hinzugefügt, was bedeutet, dass 90% des Prompts aus dem Cache statt jedes Mal neu generiert werden können.
Aktuell ist es für alle Kampagnen aktiviert. Die architektonischen Änderungen sind signifikant genug, dass es keinen Sinn macht, einen Pfad anzubieten, der dieses Setup umgeht. Für die meisten Kampagnen lohnt sich der Kompromiss, selbst wenn deine Geschichte keine großen Geheimnisse hat, denn NSC-Konsistenz zählt ohnehin.
Was dies freischaltet: den Spielleiter (Game Director)
Die zweistufige Pipeline demonstriert etwas Nützliches: Das Aufteilen von Aufgaben zwischen spezialisierteren KIs mit optimierten Kontexten liefert bessere Ergebnisse als eine KI, die alles macht. Das führt zu einer natürlichen dritten Stufe.
Ich nenne sie den Spielleiter (Game Director). Seine Aufgabe ist es, die TTRPG-Mechaniken zu handhaben: Würfelwürfe, Fertigkeitsproben, Statusverfolgung. Sein Kontext kann anders optimiert werden als die anderen, da ihm weniger an narrativer Geschichte und mehr an Spielregeln und Spielzustand liegt.
Das Hinzufügen eines Spielleiters hat einen unerwarteten Vorteil. Da er jeden Zug läuft, falls der Spieler etwas versucht, das eine Fertigkeitsprobe rechtfertigt, kann er auch entscheiden, ob die Spielereingabe eine Fortsetzung der letzten Szene oder etwas Neues ist. Wenn der Spieler nur mit einem NSC chattet, ohne die Handlung voranzutreiben, kann der Spielleiter den Handlungsleiter vollständig überspringen und den Szenenleiter die Szene allein fortsetzen lassen. Der Szenenleiter hat die NSC-Bögen und kann Gedächtnissuchen durchführen, sodass er Dialoge auf diese Weise ohne den Overhead eines vollständigen Handlungsleiter-Aufrufs fortführen kann.
Dies ist die Richtung, in die sich die Architektur entwickelt: eine dreistufige Pipeline, die zunehmend spezialisierter wird, mit kostensparenden Optimierungen, die auf jeder Ebene eingebaut sind.
Stage Whisper ist für Leute gebaut, die Solo-Tischrollenspiele mit der Tiefe und Konsistenz einer langlaufenden Kampagne spielen wollen. Das Gedächtnissystem, einschließlich dieser Kontextisolations-Architektur, macht das möglich. Leg los oder tritt unserem Discord bei, um zu sehen, wie es in der Praxis funktioniert.
Mehr zu Stage Whispers Gedächtnissystem findest du in Teil 1: Narrative Konsistenz und Teil 3: NSC-Träumen.