Salut à tous !
Je suis actuellement en train de programmer un jeu de gestion en 3d et en temps réel, mais je suis bloqué ...
Rapidement voici l’architecture actuelle de mon jeu :
Il existe des objets, et des types d'objets, chaque objet possède un type. Les différentes classes d'objets (pas les types) sont "unité", "personnage", "batiment", "objet dessinable" et "tuile" (pour le sol) ils héritent tous de la classe "objet". Et de la même manière il existe des types de bâtiments, des types d'objets dessinables ...
Pour chaque classe d'objet et chaque classe de type, j'ai fait une interface, ainsi depuis mon "GameEngine" je peux accéder à n'importe quel objet et parcourir des listes d'objets.
Chaque unité est composée de "sous-objets dessinables" qui sont en fait des objets dessinables. Ainsi pour créer une scierie, j'ai une sous partie "batiment de la scierie" et une sous partie "scie", que j'animerais. Cela permet de rendre des animations différentes sur le même objet.
Les classes "personnage" et "batiment" héritent toute deux de la classe "unité" qui possède ses propres attributs : vie, sous objets dessinables ... Un bâtiment possède des personnages qui y travaillent ou y habitent un personnage possède des sorts ...
Toutes mes classes sont en place et je commence le codage des interactions entre unités. Et c'est ici que se corse le problème ... Je veux un système très modulable et donc je veux pouvoir modifier le comportement de mes unités dans des fichiers XML. Pour continuer nous allons prendre un exemple concret : une carrière de pierre. Imaginons qu'elle soit composée d'un treuil animable, d'une carriole animable, et d'une partie fixe (ce sont les objets dessinables). Trois personnages sont destinés à y travailler. J'ai donc un type de personnage mineur appliqué à trois objets différents.
Dons mon idée, chaque objet dessinable possède différentes partie d'animation, différentes actions : une action "faire tourner la manivelle du treuil", une action "descendre dans la mine" chaque action est en fait une animation squelettale.
Le type de personnage "mineur" possède plusieurs listes d'actions (attention ce ne sont pas des animations) une liste pour chaque mineur une liste est du style "aller vérifier s'il reste telle ressource dans l'entrepôt"/"ramener X marteaux"/"descendre dans la mine"/"attendre que tes copains soient prêts". Le type de bâtiment carrière quant à lui peut avoir des actions du style "dès que untel part fait suivre la carriole". La synchronisation des différentes unités se ferait à mon avis par des sortes de checkpoints.
C'est ici que je bloque ... Comment structurer ces actions, prendre en compte les actions du joueur qui appuie sur tel bouton de la GUI, gérer un scripting d'AI (au niveau de l'unité mais aussi du joueur), comment gérer le déplacement des unités (une classe spéciale, ou met on le pathfinding ?), je suis perdu .
Une autre question est : comment gérer l'animation squelettale dans Ogre ?
++ et merci d'avance
Partager