J'ai conçu un jeu RPG qui a plusieurs fils d'histoire, ce qui signifie que, selon le choix de l'utilisateur, certaines choses peuvent ou non se produire, vous pouvez réaliser la même chose de plusieurs manières, la fin peut être différente et ainsi de suite.
J'ai implémenté un moteur de décision simple, qui fonctionne bien mais qui a un gros défaut, au moment où vous prenez une décision, l'histoire est immédiatement influencée par votre décision, ce qui signifie que vous ne pouvez pas prendre une décision qui vous affectera dans un avenir lointain . En effet, l'histoire se déroule comme une branche dans une structure arborescente, et elle doit toujours savoir quel nœud est le suivant. Sous le capot, les décisions sont mises en œuvre à l'aide d'une file d'attente: chaque nœud connaît le nœud précédent et le nœud suivant (ou s'il s'agit d'un nœud de décision, il attend l'entrée de l'utilisateur pour définir le nœud suivant)
J'ai vu beaucoup de jeux qui ont des moteurs de décision complexes, et je me demande comment sont-ils fabriqués? Existe-t-il un design spécial qui rend les choses vraiment faciles? Quelqu'un a-t-il fait quelque chose de similaire et peut-il me donner un indice sur la façon de résoudre ce problème?
MISE À JOUR 1:
Un aspect important est de réussir à garder le code de l'histoire en quelque sorte indépendant, afin qu'il puisse être manipulé à partir d'un fichier externe. J'ai l'intention de l'utiliser comme moteur, donc même les choix possibles doivent provenir d'un fichier externe. Le code doit être totalement abstrait.
De plus, je suis intéressé par une solution de conception, une belle façon de le faire, comment les autres le font ou l'ont fait.
if (isTree)
ou conserver une isTree
variable globale car l'histoire peut ou non avoir ce choix. Sais ce que je veux dire? Cela ressemble plus à un moteur de choix qui servira à plusieurs histoires.
isTree=true
, plus tard, il fait autre chose, comme combattre un camarade de classe qui, en retour, va couper son arbre alors que l'arbre est encore jeune parce qu'il s'est fait botter le cul. Maintenant, nous avons 2 variables qui influencent l'existence de l'arbre isTree==true' and
didFightBrat == false`. Sais ce que je veux dire? Et la chaîne peut durer éternellement, l'existence de l'arbre peut être influencée par un nombre inconnu de facteurs. Sais ce que je veux dire?