Je prévois un jeu d'aventure et je ne peux pas comprendre quelle est la bonne façon de mettre en œuvre le comportement d'un niveau en fonction de l'état de progression de l'histoire.
Mon jeu solo propose un monde immense où le joueur doit interagir avec les gens d'une ville à différents moments du jeu. Cependant, en fonction de la progression de l'histoire, différentes choses seraient présentées au joueur, par exemple, le chef de guilde changera les emplacements de la place de la ville en divers emplacements dans la ville; Les portes ne se déverrouillaient qu'à certains moments de la journée après avoir terminé une routine particulière; Différents événements d'écran de déclenchement / déclencheur se produisent uniquement après qu'un jalon particulier a été atteint.
J'ai pensé naïvement à utiliser une instruction switch {} au départ pour décider ce que le PNJ devrait dire ou à qui il pouvait être trouvé, et rendre les objectifs de quête interactifs uniquement après avoir vérifié l'état d'une variable globale game_state. Mais j'ai réalisé que je rencontrerais rapidement de nombreux états de jeu et boîtiers de commutation différents afin de changer le comportement d'un objet. Cette instruction switch serait également extrêmement difficile à déboguer, et je suppose qu'elle pourrait également être difficile à utiliser dans un éditeur de niveau.
J'ai donc pensé qu'au lieu d'avoir un seul objet avec plusieurs états, je devrais peut-être avoir plusieurs instances du même objet, avec un seul état. De cette façon, si j'utilise quelque chose comme un éditeur de niveau, je peux mettre une instance du PNJ à tous les différents endroits où il pourrait apparaître, ainsi qu'une instance pour chaque état de conversation qu'il a. Mais cela signifie qu'il y aura beaucoup d'objets de jeu inactifs et invisibles flottant autour du niveau, ce qui pourrait être un problème de mémoire, ou tout simplement difficile à voir dans un éditeur de niveau, je ne sais pas.
Ou tout simplement, créez un niveau identique mais séparé pour chaque état du jeu. Cela semble être la manière la plus propre et sans bogue de faire les choses, mais cela ressemble à un travail manuel massif pour s'assurer que chaque version du niveau est vraiment identique les unes aux autres.
Toutes mes méthodes semblent si inefficaces, donc pour récapituler ma question, existe-t-il un moyen meilleur ou standardisé de mettre en œuvre un comportement d'un niveau en fonction de l'état de progression de l'histoire?
PS: Je n'ai pas encore d'éditeur de niveau - je pense utiliser quelque chose comme JME SDK ou créer le mien.