Salut à tous,
Je postes ici, car j'ai décidé il y a quelques temps de réaliser un jeu de rôle, dans la lignée de Fallout ou Arcanum (avec un aspect et un gameplay plus réaliste).
Le jeu sera programmé en C++, et je compte utiliser la librairie SDL (pour la gestion graphique, et peut ête le son), FMOD (que je n'ai pas encore testé, pour le son afin de remplacer SDL, selon mon humeur) et Qt4( utilisé pour concevoir les éditeurs qui accompagnent le jeu).
La particularité de mon projet réside dans le fait que plutôt que de concevoir un jeu brut et compacté, je veux permettre au developpeur, tant à l'utilisateur de modifier le jeu, grâce à de nombreux éditeurs divers (monde, objets/décors, quêtes/script, etc), et mit à part le fonctionnement du jeu lui même qui ne changera pas, l'univers pourra être complètement interchangeable.
En soit, je cherches plus à faire une plateforme de jeu de rôle, que le jeu lui même. Mon intêret dans le projet est d'aquérir de l'expérience en C++ en produisant quelque chose le plus modulable possible.
Je tient à dire que je suis encore débutant en C++ (j'ai au moins les bases), alors ce projet n'est pas pour le moment voué à la finition. Je connais déjà le manège ^^ (qu'on aille pas me dire que c'est trop ambitieux), je suis au courant des difficultés que ça encourt , et je ne cherches que l'aspect "educatif", pas le résultat final, s'il y en a un.
Actuellement, j'ai établit sur papier les lignes de mon jeu, les classes de bases, ainsi que la structure du moteur.
J'ai aussi réalisé l'éditeur de monde, presque fonctionnel à 100% (manque le moteur qui va avec).
Côté graphisme, sonore, ou même conception des classes du jeu, je n'aurais pas trop de problèmes je penses pour la suite (ce n'est pas ma première expérience video ludique), cependant, je ne suis pas trop sûr de la route à suivre pour la conception du moteur (je penses que dans le contexte de mon projet, le terme est approprié).
En effet, je n'ai jamais conçu de moteur, et bien que je sâches déjà les composants de bases, et que je conçoive la logique d'un moteur, je patauge encore un peu pour la mise en oeuvre. Heureusement en m'appuyant de l'excellent tutorial de Pierre Schwartz (dispo ici :http://khayyam.developpez.com/articl...?page=sommaire), je suis parvenu à monter la structure de base.
A partir de là, jaurais su m'en sortir, seulement, une chose me pose encore problème: le gestionnaire d'evenements.
Dans l'absolu, il n'est pas necessaire, et une routine de méthodes sur pointeurs fonctionne aussi bien, mais le gestionnaire présente l'avantage de ne pas exposer les différents moteurs à leur voisin; de plus, il faciliterai grandement la tâche pour la prise en charge de script (quêtes etc), qui selon moi découlerai tout simplement d'un gestionnaire d'évenement dérivé (une sorte d'écoute d'évenement qui l'intercepte avec le gestionnaire principal, et s'occupe d'executer la conséquence)
Dans l'absolu, je vois comment peut être composé un gestionnaire d'évenement, et comment il est censé fonctionner, mais mon souçi vient à la définition d'un évenement même.
Je ne sais pas de quelle façon l'initialiser sachant qu'un évenement pourra être un peu n'importe quoi (dans le sens, pas quelque chose d'absolu). Voila des exemples types auquels je compte m'attendre:
-MyPersonnage,"at",X,Y
-MyPersonnage,"picked up",MyObjet
-MyPersonnage,"speaking with",MyPersonnage2
-"Night time"
Vous constaterez que j'ai moi même assigné un sorte de syntaxe dans ces evenements, afin de bien différencier les renvoi vers un certain objet, un mot clé de type string, ou des valeurs.
J'ai lu quelque part qu'un std::map convenait peut être à ce genre de routine (messages composés), mais j'ai beau chercher, impossible de trouver d'infos (sur les spécificités de ce conteneur), outre les prototypes de fonctions d'un STL map.
Pour ce qui est de la généricité de la classe, j'ai cru comprendre qu'un template était ce qu'il me fallait.
Le truc est que je n'arrives pas à concevoir comment mettre tout cela en place. Je viens donc vous demander ici votre avis sur la question, une suggestion peut être, ou tout autre méthodes que vous préconisez, ou que vous avez testé avec succès.
A votre avis, est-ce que ma définition d'un évenement vous parait viable? Si oui comment la mettre en oeuvre (je n'ai pas besoin de code, juste un fil directeur, afin de ne pas me noye ^^). Dans le cas, où ma solution n'est pas idéale, ce que VOUS préconiseriez.
Merci d'avance !!
Partager