bonjour, j'ai programmé un système où les personnages changent de comportement sans arrêt, mais j'ai peur d'un bug qui survienne dans un cas rare et pas prévu
explication: lorsque j'envoie un ordre qui indique aux personnages de changer de comportement (l'ordre peut venir de l'objet lui-même ou d'un évènement extérieur), ils ont tous un autre comportement qui est en train de s'exécuter et dont les variables sont paramétrées d'une certaine façon... à partir de là je dois changer plein de variables avant de trouver et lancer la nouvelle routine de comportement, seulement, en fonction de leur comportement courant, ces variables ne vont pas être modifiées de la même manière, le nouveau comportement ne va pas être le même, et c'est vite arrivé de faire une erreur, d'oublier une variable qui va tout planter
j'ai regardé du côté du design pattern "finite state machine", apparemment la technique employée pour être sûr de n'avoir oublié aucun cas, consiste à créer une fonction de transition entre chaque couple de deux états.
or cette méthode me pose problème, il se trouve que j'ai une vingtaine de comportements pour mes personnages, si je dois coder une fonction de transition entre chaque combinaison, ça me fait genre 200 fonctions à coder. et en plus pour la plupart d'entre elles le code va être identique. en plus le FSM semble calculé pour faire tourner une seule routine, or j'en fais pas forcément tourner une seule, ça dépend justement du comportement, dès fois y'en a une imbriquée dans une autre (car elle est appelée ou pas en fonction de ce qui se passe dans l'autre), ha et puis en plus y'a aussi que selon le comportement courant, un event de changement ne va pas déclencher le même choix de nouveau comportement... bref ce design pattern a apparemment une logique beaucoup trop simple pour le plaquer sur mon truc et risque d'alourdir mon code inutilement
là j'ai un code simple avec des bêtes enchainements de routine, à vue de pif ça marche bien et le code est simple, mais j'ai le risque d'avoir oublié un cas qui s'exécute presque jamais. j'ai testé l'envoi d'ordre de changement de comportement à chaque frame pour vérifier que y'a pas un moment où ça plante, mais je suis pas sur que ça soit 100% fiable
y'a pas un système qui permet de simplifier la sauce ?
Partager