Besoin d'Aide en C++/OpenGL pour RTS 3D

Résolu
ionstorm356 Messages postés 38 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 28 juin 2010 - 27 nov. 2004 à 00:36
sentenzai Messages postés 1 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 17 octobre 2011 - 7 janv. 2006 à 20:52
Bonjour tout le monde, je cherche des programmeurs en C++ (API Windows sans MFC) et OpenGL, motiver pour participer à un VRAI projet de Real Time Strategy du même genre que Command & Conquer Generals (CCG) (mais en mieux :big) ). J'ai commencé par l'editeur de niveaux qui est je pense le programme le plus problématique étant donné que c'est la qu'on y pose toutes les bases dès le début, mais j'ai quelques petits problèmes au niveau de mon terrains, comme dans CCG mon terrain est composé de petits carreaux, comme sa chaque carreaux à sa propre texture et il n'est pas difficile d'en changer, et chaque coordonnées (Y) des points d'un carreau est modifiable pour pouvoir élever ou abaisser le terrain, mon problème est que je suis obligé d'afficher un grand nombre de ces carreaux à l'écran et que cela me prend beacoup en ressources, je ne peux utiliser de CallLists pour les générer car ont ne pourrait plus modifiés la hauteur de chaque points, ni utiliser de VertexArrays car chaque carreau à sa propre texture et j'ai esssayé de stocker chaque carreau dans un VertexArray (chacun) mais je vous assure que la mémoire en prend un coup, au final je suis obligé de dessiner mes carreaux avec glBegin(GL_TRIANGLE_FAN); & glEnd();, ce qui n'accélère en rien l'affichage. Donc si quelqu'un a une idée sur ce point de vue il serai très simpatique de m'en faire part.
En second, je cherche des programmeurs pour m'aider dans ma tache quotidienne, car l'ambition est grande mais le temps est long, je vais essayer d'énoncer ce que j'ai déja fait :
-Fenêtre géré avec l'API Windows, Menu et ToolBar pour selectionner les différents outils de l'éditeur de niveaux et gestion d'OpenGL dans cette même fenêtre.
-Terrain (ben oui mais problème de performance), Morphing (élever, abaisser) avec fonctions simplifiés pour créér facilement plateaux, collines ou montagnes. Texturing, la texture de chaque carreaux est modifiable (pour l'instant environ 250 textures applicablent sur n'importe quel carreau), filtre trilinéaire...
Blending (80%), ce qui fait que deux carreaux adjacents avec une texture différente ce mélangeront avec un effet dégradé pour un effet de réalisme.
Bon voila a peu près comment est constitué le moteur de mon editeur de niveau, je suis actuellement entrein de m'occuper du module de sauvegarde et de chargement, mais ce problème de terrain me pose de gros problème. Si vous n'êtes pas encore soulez et que vous êtes interressez par mon projet ou que vous avez des réponses à mes questions n'hésitez pas à répondre à ce post.
Merci d'avance.

17 réponses

Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 3
1 déc. 2004 à 20:35
bah pour importer des mesh il faut savoir lire les fichier du genre 3ds(difficile mais puissant) ou ms3d(facile et super) . Puis il faut les afficher .
La grande difficulté c'est que les animations sur faite le plus souvent avec un squelette(bones) et à chaque bone correspond un certain nombre de vertex qui se déplacent selon le mouvement de l'os .
Donc en gros il faut faire pas mal de calculs pénibles(encore que ms3d te donne les matrice donc çà va là mais 3ds je sais pas) .
3
asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005
27 nov. 2004 à 08:01
Il faut à peu près quel niveau en OpenGL (c pas pour m'inscrire lol c'est juste por comparer) pour faire ce genre de jeu?
Sinon pr ton prob de terrain à ta place j'essaierais de rafraichîr l'image que qd ya eu modification,mais j'ai deja été confronté à un prob similaire (en 2D mais similaire qd meme!)et à l'époque j'avais pas trouvé de solution...
0
Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 3
27 nov. 2004 à 09:01
à mon avis il faut optimisre un maximum ppur l'éditeur
-abaisser le niveau de filtrage avec la distance
-afficher uniquement les faces visibles+back face culling
-ne pas faire d'animation dans l'éditeur comme çà tu affiche les objet(maison, perso...) avec des vertex array
-gérer u maximum de texture en mémoire vidéo avec des priorité pour les textures les plus répétitives
-si tu as des carreaux utilise GL_QUAD plutôt que GL_TRIANGLE_FAN .
-ne pas utiliser d'éclairage ni d'ombre .

Et puis surtout il faut te dire que dans l'éditeur çà rame mais après dans le jeu il suffit de le mettre dans une calllist ou un vertex array et c'est bon . Si tu regarde bien l'éditeur de Command and conquer sur mon ordi c'est horrible il rame et pourtant pas le jeu .

Et enfin, le blending entre les carreaux, évite dans l'éditeur parce que çà, çà utiliser bcp de ressource surtout si tu le fait sur TOUS les carreaux ou alors fait le que sur les carreaux visible(donc il faut un partitionnement de la carte : octree ?)

Voilà donc bonne chance pour ce projet parce c'est très long .

A m a u r y
0
ionstorm356 Messages postés 38 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 28 juin 2010
27 nov. 2004 à 20:11
Euh c'est quoi octree ?
Le blending n'est pas encore un problème.
On m'avai conseillé de dessiner avec GL_TRIANGLE_FAN au lieu de GL_QUAD pour une raison de performance.
Texture en mémoire vidéo, priorités ?
Pas d'animation, oui biensur, sa y a pas de problème.

Niveau qu'il faut avoir pour faire un RTS, je dirais bien initié, je n'ai que 17 ans mais je programme depuis l'age de 13 ans, le Blitz Basic puis le Blitz 3D m'ont appris toutes les bases et je suis fière du haut de mon jeune age de me débrouiller avec l'API Windows qui n'est que peu compris d'en mon entourage de programmeur. Je ne suis qu'un nouveau par contre dans la programmation OpenGL mais ce problème de terrain est vraiment très dur à résoudre, aufaite comment sa marche et à quoi sa sert une "Mesh" en OpenGL, je fais de l'infographie 2D et 3D mais en prog je ne vois pas bien ???
Merci de vos réponses...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ionstorm356 Messages postés 38 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 28 juin 2010
27 nov. 2004 à 22:33
Ah, ben finalement je suis assez content, voyez-vous mon editeur est enfin fluide et ceux dans tous les cas, même en changeant la texture de milliers de carrreaux en même temps ou en morphant mon terrain, le précédent lag été du au picking, trop de fonction graphique été appellé inutillement, mais étons vraiment obligé de redessiner les objets non graphiquement mais uniquement pour le picking pour pouvoir selectionner et ne peut-on dessiner l'objet kune seul et unique fois pour le picking et pour son dessinage ?
0
Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 3
28 nov. 2004 à 09:11
ben pour le picking moi je te conseille de le faire toi même . C'est pas très facile mais tu n'a pas besoin de redessiner .

Le seul défaut c'est qu'il te faut considérer chaque face comme un plan en stockant sa normale et sa distance au plan dans un tableau(que tu peux réutiliser pour dessiner tes vertex après tout) .

Quand l'utilisateur clique sur l'écran, tu récupère la matrice de vue et tu en déduis une droite(là par contre je peux pas t'aider mais je regarde et je te dis si je trouve) .

Puis tu calcule la distance de la caméra à l'origine(sqrt(camx*camx+camy*camy+camz*camz)) Et enfin, pour chaque face QUI EST DANS LE FRUSTRUM(il y a des tuto sur le net) :
->Est-ce qu'il y a intersection entre la droite et ce plan
->oui: est-ce qu'il y a intersection entre le triangle et la droite
->oui alors ajouter cette entrée dans un tableau en stockant
la distance entre le pt d'intersection et la caméra et l'index
de la face en question:
sqrt(pow(camx-ptx,2)+pow(camy-pty,2)+pow(camz-ptz,2))
->non alors continuer
->non alors continuer

Et enfin tu parcours les entrée du tableau crée dans cette algo :
->s'il est vide -> pas d'intersection
->sinon trier le tableau et récupérer l'index de la face lma plus proch(distance caméra->pt intersection minimale)

Voilà c'est assez compliquer mais au moins pas besoin de redessiner graphique .

Je vais essayer de coder un petit prog si j'ai le temps avec cette technique et je te l'enverrai par e-mail si tu veux .
0
asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005
28 nov. 2004 à 09:44
"bien initié"moi j'ai commencé la prog ya un an un peu avant mes 13 ans ;) et je fais de l'OpenGL depuis environ 9 mois (j'ai meme essayé de faire un RTS en 2D rien qu'en algo c vachement chaud lol)
0
ionstorm356 Messages postés 38 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 28 juin 2010
28 nov. 2004 à 20:12
Merci a vous, Pamaury, oui sa serai simpa si tu faisai un petit prog de ce ke tu dis et ke tu me lenvoyai.
Bon allé passez moi vos adresse MSN Hotmail si vous en avez que j'essaye de vous convaincre de participer à ce fabuleux projet ;) . J'ai moi aussi fai des RTS en 2D, cété la copie conforme de Command & Conquer 1 puis Alerte Rouge puis je l'ai après évoluer a Alerte Rouge 2, mon prog été très ressemblant, de plus ke je leur pické leur textures lol. Maintenant c C&C Generals a ki je pike tt (pour linstant, après je ferai mes propres textures et objets). Quelqu'un peut méxpliker comment sa marche et a koi servent les MESH en OpenGL ?
0
Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 3
28 nov. 2004 à 20:27
un mesh n'est en fait qu'un objet qui de plus est indépendant(en général) de la librarie 3d(opengl, directx)

un mesh est composé d'un certains de nombre de face(avec normals et textures) et il peut-être animé . Un mesh est un objet qui s'occupe de dessiner et mettre à jour les donnée(animation) et le prog principal n'a plus qu'à demander à un mesh de se dessiner .

En gros c'est çà mais çà peut-être différents . L'important c'est que ce soit un objet avec des faces .

Pour le prog je vais essayer d'y trvailler mais j'ai pas bcp de temps donc çà peut être un peu long .
0
asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005
29 nov. 2004 à 07:27
mesh -> c'est ce que tu fais avec un modeleur 3D et que tu peux charger grace à des fonc' d'OpenGL , c'est ca?

Pour l'instant t'as trouvé combien de programmeurs et/ou de graphistes.
Je sais pas trop à ki tu parlais mais vla mon adresse :
asmanur.caramail.com (ou le pt c un arobase)
j'ai una dresse hotmail ms msn ne marche pas et je peux plus aller consulter mon compte
0
ionstorm356 Messages postés 38 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 28 juin 2010
1 déc. 2004 à 12:58
Ouai, je connais la définition d'un Mesh je bossais avec en Blitz 3D et en Design 3D mais comment on s'en sert en OpenGL, ya des fonctions spéciales, ou on appelle mesh tout objet régis dans une classe, un tableau, une variable... Essayez de faire marcher MSN c'est en communication instantanné que c'est bien plus facile de parler. Merci a vous 2. ++

P.S: si sa vous interresse je vous envoie des screenshots...
0
asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005
1 déc. 2004 à 13:44
lol faut que je fasse marcher msn sur mon pc :D mon ppc n'en fait qu'a sa tete faut formater et réinstall win ou (eventuellement mettre linux)ms mes parents attendent un informaticien qui viendra pr noel
Enfin bref pour exporter un fichier *.3ds essaye de voir
http://prografix.games-creators.org/document/184
sinon en général
http://www.cppfrance.com/forum.v2.aspx?ID=103481

Euh et si tu pouvais ,envoyer des screenshots de C&C (j'ai Alerte Rouge 2 mais pas C&C)
a+
0
Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 3
1 déc. 2004 à 17:14
Les Mesh ne sont pas gérés par OpenGL, opengl ne gère que l'affichage de polygone/courbe et c'est tout pas de Mesh comme dans DirectX . Donc il faut programmer une classe Mesh qui gère tout çà sinon pour le picking openGL j'ai réussi à la faire sans rendu suplémentaire sur des objets statique et là je code pour les objets dynamiques .

A m a u r y
0
ionstorm356 Messages postés 38 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 28 juin 2010
1 déc. 2004 à 19:10
Remerki a tous, j'ai toujours pa tro compris les MESH lol enfaite c'est un objet avec des sommets partagés avec plusieurs face pouvant être animé etc... Je sais que OpenGL ne gère pas le partage de points entre faces a part avec GL_TRIANGLE_STRIP et les autres, donc je sais pa tro comment sa pourrait marche mais je vais regarder les liens pour importer un 3DS car j'en aurai bientôt besoin. Merci de prog le programme de picking.
Euh tu veux koi comme screenshots, tu sais Alerte Rouge 2 est aussi un C&C donc précise lekel tu veux (La conquete du Tiberium, Alerte Rouge, Soleil de Tiberium (merde je lai plu), Alerte Rouge 2, Generals (Heure H l'add-on), ya aussi Renegade mais c'est un FPS alors jai po).
0
asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005
1 déc. 2004 à 19:49
Pamaury -> Donc si on veux importer des obj sous OpenGL faut trouver comment sont coder les Objets en 3D (*.3ds *.ms3d)(ca m'interresse parce que pour mon FPS j'ai fait des bonhommes de neige qui se tape dessus et ca rend pas super!)

ionstorm356 -> dsl j'ai oublié de préciser Generals sinon si ton éditeur ca m'interresse ; vu que je débute en Win32, je suis habitué à GLUT donc si tu peux envoyer sourses + executable ca serait sympa
t'utilises un modeleur 3D?si oui et si il est gratuit ou l'as-tu téléchargé??
sinon puisque t fan des RTS peut - etre as tu entendu parler de Dawn of War?
0
ionstorm356 Messages postés 38 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 28 juin 2010
1 déc. 2004 à 22:42
Alors, j'essayerai d'ici peu de mettre des objets en 3DS ou autre dans mon editeur mais la ce n'est pas pour tout de suite. Je pourrai répondre a vos réponse et t'envoiyé les screenshots de C&C Generals (CCG) que Samedi, et oui avant fo bosser la Terminale Scientifique lol, oui sa ne me dérange pas de te passer mon code, mais sa métonnerai que tu y comprenne quelque chose si tu commence tout juste avec l'API Windows, moi aussi je faisais du GLUT, et depuis très peu je suis passé au Win32 et kéceke jen ai chié pour certaines choses genre les ToolBars qui voulait pas affiché la bitmap de chake bouton etc... tro chiant lol.
Normallement j'utilise 3DSMax, mais c pas du tt gratuit et meme très chère, aussi je te conseil GMAX ke tu peux télécharger sur le site de Discreet (fais un recherche sous google), c'est un logiciel gratuit et un des plus complet, un peu compliqué par contre, il est complètement accés sur les jeux vidéos, mais pour l'utiliser pleinement je crois kil fo faire y faire pa mal de modif pour y inserer tes propres exporter vaire tes formats 3D parceke GMAX n'a que le format P3D ki ne te sera pa utile (peut etre dautres formats avec version plus récentes). Et non je ne connais pa Dawn Of War. Moi c'est surtout les Command & Conquer ke jadore, je joue ka sa sur le net et même partout. Bon je passe screenshots et code source Samedi ++
0
sentenzai Messages postés 1 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 17 octobre 2011
7 janv. 2006 à 20:52
fcgsfdfsd
0
Rejoignez-nous