[C++][DirectX] Structuration d'un jeu avec DXUT

Structuration d'un jeu avec DXUT [C++][DirectX] - C++ - Programmation

Marsh Posté le 16-03-2008 à 17:45:12    

Bonjour à tous,
voila j'ai déja programmé des jeux en plusieurs langages de type basic et j'ai une bonne connaissance du langage C++, de l'api Win32 et de DirectX avec lequel j'ai réalisé des petits programmes, genre démo etc...
Je suis actuellement entrein de programmer un petit moteur 3D pour un jeu, je n'ai aucun problème d'un point de vue technique mais je ne sais pas vraiment comment structurer mon jeu. C'est a dire comment faire qu'il y est un menu puis que sa charge un niveau apres sachant que tout dois se passer avec les callbacks habituels de createdevice, resetdevice, framemove, framerender, lostdevice, destroydevice  (je travaille maintenant avec DXUT contrairement aux démos que je faisais avant avec DirectX).
J'aimerai aussi savoir comment structurer mes classes, j'ai des petits problèmes pour savoir comment gérer mes listes d'objets entre autres (d'un point de vue structurel encore une fois pas technique) :
 
class tools        //contient des outils de bases
class font        //contient les polices de caracteres et de quoi afficher du texte
class log          //permet d'enregistrer des infos dans un fichier log (erreur, rapport ...etc)
class console   //permet de faire des actions sur le programme avec des lignes de commandes
 
class physics   //gere la physics de tous types d'objets du monde
class force : physics  //gere les forces (la gravité etc...)
class light : physics   //gere les lumieres
class object : physics  //gere les objets 3D
class camera : object  //gere les cameras
class particle : object  //gere les particules
class particle_system : particle  //gere les systemes de particules
class world : object  //gere le monde (la map, le terrain etc...)
class input  //gere les entrées utilisateur (clavier, souris etc...)
class interaction  //gere les interactions entre tous type d'objets hérité de la classe "physics"
class stage  //gere les niveaux (niveau 1, niveau 2 ... contient les listes d'objets, la map, les listes de lumieres...)
class menu  //gere le menu permettant de choisir les niveaux ...)
class engine  //le moteur, c'est lui qui fait les transitions entre niveau et menu, chargement de la fenetre...)
 
Faut-il faire une class générique "list" qui gere toutes les méthodes createdevice, resetdevice...
ou bien une classe list par class devant etre dans une liste car elle ne partageront peut-être pas toutes les même méthodes ?
Est ce que quelqu'un aurait un exemple de jeu C++/DirectX avec un code assez pro et surtout le code source disponible :D pour m'inspirer de l'architecture ^^
 
Merci :)

Reply

Marsh Posté le 16-03-2008 à 17:45:12   

Reply

Marsh Posté le 16-03-2008 à 18:31:54    

la classe list elle existe :o
http://cplusplus.com/reference/stl/list/

Reply

Marsh Posté le 16-03-2008 à 19:23:10    

Sa je sais c'est pas sa ma question, ma question c'est comment l'utiliser (structurellement) et avec quel architecture -_-

Reply

Marsh Posté le 16-03-2008 à 19:32:52    

regroupe les entités par fonctionnalités, separe l'affichage du controle, aggrége les entités de haut niveau dasn engine et delegue selon les appel aux éléments des sous-listes

Reply

Marsh Posté le 17-03-2008 à 02:56:40    

Mais qu'en est-il de l'organisation du code par rapport au déroulement d'un jeu. Enfaite affiché monde avec des objets, des interactions, de la lumière sa je sais faire, ce que je ne sais pas faire c'est ce qu'il y a avant et après enfin j'ai du mal a conceptualiser, pour qu'il y est une video d'intro, apres un menu, apres peut etre un sous menu ou bien lancé un niveau du jeu. Avant dans les langages plus basic ou les objets n'était pas perdu par le device je faisai un simple truc du genre :
 
Init()
resultat=0
tantque choix<>EXIT faire
choix=Menu(resultat)
resultat=Niveau(choix)
fintantque
Terminer()
 
voila un truc du genre et en très simplifié, mais vu que chaque partie de cette algo doit maintenant être traverser par les fonctions createdevice, resetdevice ... etc j'ai un peu de mal :/

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed