Ich habe ein RPG-Spiel mit mehreren Story-Threads entworfen. Je nach Wahl des Benutzers können einige Dinge passieren oder auch nicht. Sie können dasselbe auf verschiedene Weise erreichen. Das Ende kann unterschiedlich sein und so weiter.
Ich habe eine einfache Entscheidungs-Engine implementiert, die funktioniert, aber einen großen Fehler aufweist. Sobald Sie eine Entscheidung treffen, wird die Geschichte sofort von Ihrer Entscheidung beeinflusst. Das bedeutet, dass Sie keine Entscheidung treffen können, die Sie in ferner Zukunft betrifft . Dies liegt daran, dass sich die Story wie ein Zweig in einer Baumstruktur entfaltet und immer wissen muss, welcher Knoten der nächste ist. Unter der Haube werden die Entscheidungen mithilfe einer Warteschlange implementiert: Jeder Knoten kennt den vorherigen und den nächsten Knoten (oder wenn es sich um einen Entscheidungsknoten handelt, wartet er auf Benutzereingaben, um den nächsten Knoten festzulegen).
Ich habe viele Spiele mit komplexen Entscheidungsprozessen gesehen und ich frage mich, wie sie gemacht werden. Gibt es ein spezielles Design, das die Dinge wirklich einfach macht? Hat jemand etwas Ähnliches gemacht und kann mir einen Hinweis geben, wie ich das angehen kann?
UPDATE 1:
Ein wichtiger Aspekt ist es, den Story-Code irgendwie unabhängig zu halten, damit er aus einer externen Datei heraus bearbeitet werden kann. Ich plane, dies als Engine zu verwenden, sodass selbst die möglichen Auswahlen aus einer externen Datei stammen müssen. Der Code muss absolut abstrakt sein.
Außerdem interessiere ich mich für eine Designlösung, eine gute Möglichkeit, dies zu tun, wie andere es tun oder getan haben.
if (isTree)
eine isTree
globale Variable nicht prüfen oder beibehalten, da die Story diese Wahlmöglichkeit haben kann oder nicht. Weißt Du, was ich meine? Es ist eher eine auserlesene Engine, die mehrere Geschichten abdeckt.
isTree=true
, tut er später noch etwas anderes, wie einen Schulkameraden zu bekämpfen, der im Gegenzug seinen Baum abhackt, während der Baum noch jung ist weil er seinen Arsch getreten hat. Jetzt haben wir 2 Variablen, die die Existenz des Baumes isTree==true' and
didFightBrat == false` beeinflussen. Weißt Du, was ich meine? Und die Kette kann für immer weitergehen, die Existenz des Baumes kann durch eine unbekannte Anzahl von Faktoren beeinflusst werden. Weißt Du, was ich meine?