Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

JEU 3D OPENGL


Information sur la source

Catégorie :OpenGL Classé sous : jeu, 3d, opengl Niveau : Débutant Date de création : 19/12/2004 Date de mise à jour : 23/02/2005 13:04:19 Vu / téléchargé: 9 068 / 1 508

Note :
8,5 / 10 - par 4 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (71)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
C'est un FPS en 3D fait avec OpenGL.
Il y a des textures, des MD2(ennemies, armes).
On peut choisir entre BMP, TGA (transparent ou non), et JPG.
Il y a aussi des sons avec FMOD (WAW ou MP3).
Le niveau est fait à partir d'un éditeur de carte perso.
Il y a une détection des collisions.
Les ennemies sont au format MD2, il ont un trajet dans la map, et un champ de vision.
S'ils vous repèrent soit ils tirent ou soit il ne font rien, ça dépend de l'ennemi.
Si l'ennemi vous touche un certain nombre de fois, vous êtes mort.
Vous pouvez aussi tuer les ennemies, votre arme est visible.
 

Conclusion

Un petit problème avec les JPG, ils sont à l'envers ...
Vous pouvez rajoutez des ennemies, changer leur trajet, si vous le souhaitez.
J'ai encore plein d'idées pour ce jeu, mais j'avais quand même envie de le mettre ici, je pense qu'il y a quelque chose intéressantes.
Il y a quand même pas mal de code qui n'est pas de moi, vous verrez ...(quand c'est écrit en anglais).
Le jeu est pas mal configurable avec le fichier config.
Voila !!! J'attend vos commentaires.

Je ZIP est trop gros sonc je met seulement les sources.
Le ZIP complet est là :         http://ps2-world.site.voila.fr/jeu_opengl.zip
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

31 décembre 2004 15:31:12 :
J'ai rajouté un moteur de particules(qui n'est pas de moi bien sûr !!! trop compliqué). Pour l'instant je l'utilise pas encore vraiment mais ça va venir ... Maintenant les ennemies qui n'ont pas d'armes viennent vers vous quand ils vous ont détectés, jusqu'à une certaine limite de terrain fixée, et s'ils vous touchent vous êtes mort ! Les textures à chargée sont directement écrites dans le fichier config. J'ai mis un changement de niveau. L'animation d'attaque s'affiche dès que l'ennemi vous voit(avant elle s'affichait un peu plus tard car ça attendait que l'animation précédent soit terminée). Et voila c'est tout pour le moment !!! Le zip se trouve toujours à la même adresse.
01 janvier 2005 13:59:04 :
J'avais oublié de mettre le zip à jour sur le site.
02 janvier 2005 12:47:36 :
La taille des particules diminue au cours du temps(merci à Kirua pour ses idée) Quelques changements conseillés par Luthor au niveau des fonctions de maths.
21 février 2005 18:05:10 :
J'ai rajouté pas mal de choses: *au lieu de mettre toutes les infos de l'ennemi dans le fichier config, j'ai tout regroupé dans le code source et donc il y a 3 monstres différents pour l'instant. Il y a des sons différents pour chaque monstre(sons de douleur, mort et tir) Pour chaque monstre il y a de nombreux paramètres(santé, angle vision, distance vision, sons, checkpoints ...) *on peut maintenant afficher aussi des objets au format MD2 (torche, carte, personnage non-ennemi, colonne ...) *il y a un fichier config par level où vous mettez le nombre d'ennemi(et leur type), le nombre d'objets MD2 ainsi que leurs configurations. *si vous tirez sur l'ennemi son champ de vision augmente pendant un instant et donc il vous repère plus facilement. *j'ai changé le système de vision des ennemies(et je vais d'ailleurs sûrement encore le changer) il fonctionne avec la distance à l'ennemi et son champ de vision(angle) *il y a 2 maps pour l'instant(petites maps...) *j'ai améliorer le sytème qui gère les évènements(changement de niveau, objet trouvé...) Voila !!! C'est tout pour l'instant ... Je peux seulement mettre les sources sur cppfrance. Le zip complet se trouve toujours à la même adresse : http://ps2-world.site.voila.fr/jeu_opengl.zip
23 février 2005 13:04:21 :
Ajou d'une capture d'écran

Commentaires et avis

signaler à un administrateur
Commentaire de luhtor le 19/12/2004 19:44:38

Franchement deja, c'est un beau travail.
Mais à mon gout, il y a quelques trucs que tu pourrais corriger :)
1 - la première fois que je viens me coller contre un mur, je suis passé à travers ^^

2 - je trouve frustrant de pas pouvoir viser a 90° vers le haut et vers le bas: j'ai regardé un peu ton programme et j'ai vu ca dans ta fonction camera:
//Init a standard up vVector (Rarely ever changes)
Je suis pas d'accord, dans mes programmes il change sans arret lorsque je fais bouger la camera verticalement. Ca permet d'obtenir une camera "parfaite".

3 - C'est pas très grave, mais je trouve que tes fonctions créent beaucoup d'objet pour pas grand chose, puisqu'ils sont détruits quelques lignes plus tard, donc ca fait beaucoup d'appel de constructeurs et destructeurs pour pas grand chose. Mais ca reste de l'optimisation, et ca ne doit pas etre ton objectif pour le moment. Ceci dit, optimiser un minimum 3Dmath.cpp ne coute pas grand chose :)

Mais bon, je garde ton code précieusement, car il y a plein de truc qui m'intéresse (notamment les models), et puis, c'est toujours que le début. En bref, ca rox quand meme.

signaler à un administrateur
Commentaire de goutbouyo le 19/12/2004 20:43:41

Merci !!!
Comment t'as fait pour passer à trvers le mur ??? T'as combien de FPS ?
Merci pour tes remarques et conseils, je vais voir ça ...

signaler à un administrateur
Commentaire de albert0 le 19/12/2004 21:19:16

c'est bien :)

meme tres bien :)

je vais m'inspirer dessus, pour coder un truc du meme genre :)

si tu me le permet

signaler à un administrateur
Commentaire de luhtor le 19/12/2004 21:33:30

Et bien, j'ai 85 - 90 de fps. En fait, des que j'insiste contre un mur j'arrive a passer a travers plus ou moins difficilement.

Autrement j'ai remarqué un truc:
- Je sais pas du tout pourquoi mais il m'arrive que je n'arrive plus a baisser le viseur: il s'arrete a environ 10° au dessus de l'horizontal.

Pour ta caméra, j'avais mis ca dans mon prgm de physique:
Les coordonnées du vecteur vertical:
x = -sin(alpha)*sin(beta)
y = cos(beta)
z = -cos(alpha)*sin(beta)

cad:
gluLookAt(...,-sin(alpha)*sin(beta),cos(beta),-cos(alpha)*sin(beta))

avec alpha, l'angle de rotation horizontale (en radian bien sur) et beta l'angle de rotation verticale.

aller ++

signaler à un administrateur
Commentaire de Kirua le 20/12/2004 13:47:50

Erreur au liage:

LIBCD.lib(crt0init.obj) : warning LNK4098: defaultlib "libc.lib" conflicts with use of other libs; use /NODEFAULTLIB:library

:( je voudrais vrmnt tester ton jeu, mais je ne suis pas un familier de VC, tu sais me dire ce que je dois faire? J'ai mis /NODEFAULTLIB:"libc.lib" dans les options du lieur, mais ça n'a rien changé :(

signaler à un administrateur
Commentaire de Funto66 le 20/12/2004 14:17:34

Kirua >> tu peux le dl sur son site, c'est écrit en haut de la page.
Je viens de tester le jeu, et ça reste plutôt pas mal :) Ceci dit c'est clair qu'une bonne grosse partie du code n'est pas de toi mais vient de NeHe ou GameTutorials chais plus...
'fin bref c'est quand même bien :)

Par ailleurs, j'ai eu un bug, (si on peut dire), un des chemins conduit vers le vide, donc j'ai volé...
A part ça, j'ai pas trop regardé le code, mais je ne pense pas que tu aies optimisé l'affichage de la map via des arbres BSP ou des octrees non?

Ah autre chose : je pense que l'usage de plusieurs formats d'images est inutile; à ta place j'en resterais au format TGA. L'utilisation de libs comme la jpeglib peut encore compliquer la phase de compilation, encore que dans tno cas c'est pas vraiment gênant puisque tu la fournis...

Juste une dernière question : c'est compilable avec Dev-C++?

signaler à un administrateur
Commentaire de albert0 le 20/12/2004 14:20:36

a mon avi c'est la fin de la map

signaler à un administrateur
Commentaire de Kirua le 20/12/2004 14:45:20

chouette, oui.

par contre je comprends pas: je tue les deux persos, puis après un certain temps, je meurs O_o. Il y a un temps limite?

Enfin, ce qui ferait très bien maintenant, c'est d'ajouter un script engine pour rendre ton univers dynamique (par exemple, tu pourrais attacher des scripts à des événements tels que la mort d'un certain ennemi, ou bien le passage par une certaine case etc)

signaler à un administrateur
Commentaire de goutbouyo le 20/12/2004 14:47:37

A luhtor => en fait plus tes FPS sont bas et plus tu auras de chance de passer àa travers les murs.
Moi à 130 FPS je passe pas, et j'ai essayé sur un autre PC à 50 FPS et là c'était un vrai fantôme !!!
Tu peux régler ça en augmentant le RADIUS(rayon de la sphère du perso).
Merci pour tes conseils pour la caméra, je vais essayer.

A albert0 => merci beaucoup !!!
Bien sûr que tu peux t'en inspirer !

A kirua => moi aussi ça me met le même message !
En fait c'est pas une erreur mais un warning, donc ça compile quand même.
Je me suis jamais penché sur ce warning ...

A funto66 => c'est vrai qu'une grand parti du code ne vient pas de moi ... mais bon, j'allais pas galérer à pondre un code pour charger les MD2 quand même ...
Par contre, je vais revoir mes anciennes versions de mon jeu, car au début j'utilisais mon propre code pour le déplacement du perso, et ça marcahit pas mal !
Faudrait que je fasse le "ménage" dans mon code ...
Pour ton "bug", en fait c'est la fin du niveau donc c'est pas vraiment un bug.
Quand je ferais un 2nd niveau j'empêcherait ce "bug" et je mettrai un écran de transition à la place.

signaler à un administrateur
Commentaire de goutbouyo le 20/12/2004 14:47:43

A luhtor => en fait plus tes FPS sont bas et plus tu auras de chance de passer àa travers les murs.
Moi à 130 FPS je passe pas, et j'ai essayé sur un autre PC à 50 FPS et là c'était un vrai fantôme !!!
Tu peux régler ça en augmentant le RADIUS(rayon de la sphère du perso).
Merci pour tes conseils pour la caméra, je vais essayer.

A albert0 => merci beaucoup !!!
Bien sûr que tu peux t'en inspirer !

A kirua => moi aussi ça me met le même message !
En fait c'est pas une erreur mais un warning, donc ça compile quand même.
Je me suis jamais penché sur ce warning ...

A funto66 => c'est vrai qu'une grand parti du code ne vient pas de moi ... mais bon, j'allais pas galérer à pondre un code pour charger les MD2 quand même ...
Par contre, je vais revoir mes anciennes versions de mon jeu, car au début j'utilisais mon propre code pour le déplacement du perso, et ça marcahit pas mal !
Faudrait que je fasse le "ménage" dans mon code ...
Pour ton "bug", en fait c'est la fin du niveau donc c'est pas vraiment un bug.
Quand je ferais un 2nd niveau j'empêcherait ce "bug" et je mettrai un écran de transition à la place.

signaler à un administrateur
Commentaire de Kirua le 20/12/2004 14:51:35

"En fait c'est pas une erreur mais un warning, donc ça compile quand même."

sauf que moi qd je lance l'exe ça plante, mais ça maintenant que j'y pense, mdr, ça vient peut-être du fait qu'il n'y avait pas les textures, mdr, suis un peu bêbête ^^.

signaler à un administrateur
Commentaire de goutbouyo le 20/12/2004 14:54:56

LOL !!! Oui ça vient sûrement de là.
Non il n'y a pas de temps limite mais c'est un bug, ça me l'a fait une ou deux fois.
Je sais pas d'où ça veint par contre...

Ton idée de script m'intéresse beaucoup, mais je n'y connais rien en script...
Je vais me renseigner.

signaler à un administrateur
Commentaire de Kirua le 20/12/2004 15:04:31

Si je peux te conseiller, pour m'être frotté quelque peu à la question, je te conseille de rester dans le champ des scripts interprétés. N'essaye pas tout de suite de faire un langage compilé ou semi-compilé, c'est compliqué.

Basiquement, voilà comment tu vas devoir t'y prendre:
- lire le script et en isoler chaque "lexème", càd chaque élément (mot clef, opérateur, valeur numérique, chaîne de caractère)
- sauvegarder la liste des éléments constitutifs du script une fois pour toutes (càd jusqu'au prochain lancement du jeu, évidemment faut tout reloader à chaque lancement) dans un gestionnaire de scripts
- quand le script est appelé, lire les lexèmes 1 à 1, et te baser sur le lexème pour interpréter la suite. Exemple:

int VarInt = 5;
if VarInt <= 10 then
Display "Bonjour";
else
Display "Au revoir";
endif

Là, tu vas d'abord lire "int", et donc tu sais que tu vas avoir une déclaration de variable. Tu lis donc dans l'ordre "nom de la variable", "opérateur d'assignation", "valeur", "fin d'instruction". Si tu ne trouves pas ça, tu déclenches une erreur de parsage (syntax error).
Après, tu liras "if", tu sais que tu dois avoir "expression", "opérateur de comparaison", "valeur". Tu évalues l'expression (il te faut une classe de gestion d'expression arithmétiques et logiques) et selon le cas tu sautes à "then" ou à "else", et là ben l'interprétation continue. Display serait le nom d'une fonction qui affiche un message à l'écran ou dans la console par exemple.

Note: je te conseille de ne pas permettre à l'utilisateur de créer de fonctions ("sub" en basic) et de ne pas donner de valeur de retour aux fonctions, mais de faire qq ch comme ceci:

int NbEnnemis = 0;
GetNombreEnnemis NbEnnemis;
//maintenant la vairable NbEnnemis contient le nombre d'ennemis

C'est 10 000 fois plus simple, et pour un premier langage de script ça suffira.

signaler à un administrateur
Commentaire de goutbouyo le 20/12/2004 15:15:53

Merci pour ton aide Kirua !!!
Je vais tenter de trouver un programme utilisant des scripts pour voir à quoi ça ressemble.

signaler à un administrateur
Commentaire de Funto66 le 21/12/2004 02:00:05

Tu comptes créer ton langage tout seul ou repiquer qqch d'existant?

signaler à un administrateur
Commentaire de Funto66 le 21/12/2004 02:00:58

PS : si tu préfères repiquer qqch d'existant, la référence dans le domaine est Lua, qui est fait pour ça ;)

signaler à un administrateur
Commentaire de goutbouyo le 22/12/2004 14:02:09

J'ai du mal à trouver des exemples pour les scripts et comme je n'en ai jamais utilisé ...
Je vais voir si je trouve des codes de Lua.

signaler à un administrateur
Commentaire de Kirua le 22/12/2004 14:39:01

tu en trouveras plein, mais honnêtement, ça risque d'être plus long d'apprendre à utiliser Lua que de coder ton propre engine... enfin, si d'aventure tu avais le courage d'aller jusqu'au bout de la compréhension, poste-nous ça ;)

signaler à un administrateur
Commentaire de Funto66 le 22/12/2004 15:35:50

pk tu dis ça Kirua? T'as déjà testé Lua? C'est si chaud à apprendre et utiliser?

signaler à un administrateur
Commentaire de Kirua le 22/12/2004 21:49:59

Pour le langage en lui-même, c'est juste une syntaxe à apprendre, je dis pas. Ça a en tout cas l'air très puissant.
Mais pour l'intégrer dans ton projet, j'ai le pressentiment que ça va vraiment être le bordel :-/ J'ai pas testé Lua précisément à cause de ça.

signaler à un administrateur
Commentaire de AmK le 23/12/2004 16:39:53

pas mal le fps ,peut être qu'il faudrait modifier tout ce qui touche aux maths à ta sauce ( gestion de la caméra par exemple )..
sinon j'ai trouvé une doc sur le scripting ici c'est en anglais ça devrait pas poser problème ^^ :
http://www.pixelate.co.za/issues/14/articles/script/asmcomp.html
bon courage pour la suite !

signaler à un administrateur
Commentaire de Kirua le 24/12/2004 01:26:17

Broumf, alors j'ai lu l'article entier, enfin, survolé le code rapidemment mais lu tout le texte, et franchement, même si ça marche, c'est très limité. C'est une approche intéressante (assez élégante), mais... on n'y présente pas de manière intelligente d'intéragir entre mémoire du programme et variables scripts (on a souvent besoin de données du jeu en cours dans le script, et on doit aussi pouvoir les modifier!), on n'a qu'un seul type de variables, la syntaxe est ... moche :D
(exemple, pour faire l'équivalent de int a = 5; il faut écrire:
var a;
exp a~5;
)

... sauf erreur ^^.

Hmmmm, m'enfin, il y a qd même des conditionnelles et des boucles, ça se défend quoi, vaille que vaille... ça mérite d'être lu à tout le moins, mais ne te lance pas dans un clone de ça, c'est pas assez relevé, tu aurais pu pondre pareil sans cet article.

signaler à un administrateur
Commentaire de AmK le 25/12/2004 10:21:37

c'est clir qu'il faut être critique

signaler à un administrateur
Commentaire de AmK le 25/12/2004 10:21:59

clair pardon

signaler à un administrateur
Commentaire de Arnaud16022 le 27/12/2004 16:27:31

ohoh!
j'avais pas vu que tu avais posté ton jeu!
suis en train de dl.
j'ai lu ta remarque sur le RADIUS.
c'est un ENORME probleme du systeme de detection de collision de digiben.
en fait, une frame t'es en face du mur sans le toucher, la suivante t'es derriere le mur, sans le toucher. du coup sa routine n'a aucune raison de ne pas te laisser passer a trravers le mur.
j'ai pendant des jours entiers essayé de remédier a ce probleme, ce qui m'a amené a la solution de repli suivante: coldet.dll.

voila dl fini.
dis voir il est horrible le modele du gars! celui d'avant il était mieux... plus gros peut-etre?
deplacements trop lents (pas dur a modifier...)
balles mieux faites qu'avant (c'est tjs des cubes?)
l'arme a des déplacements zarbis.
texte pas transparents
pour moi ca vaut pas tout a fait 10 (disons 8-9) mais je vais pas te casser ton jouli 10/10
nota a tout le monde: perso je trouve que vous allez un peu loin. ce jeu n'en est pas a devoir implémenter un langage de script. perso j'ai déja un fichier dans lequel j'ai enregistrré 5 missions différentes les unes des autres, et c'est loin d'etre un script. de toute facon pourun fps, a quoi sert un script? les ennemis font tjs la meme chose: ils te tirent dessus
dans quake3 arena,aucun script (par contre des fichiers séparés contenant les phrses que les ennemis peuvent dire, et d'autres truc comme ca.
bref, ya moyen de faire bcp sans se lancer dans les scripts.
dsl kirua, je sais que t'aimes bien ca..

signaler à un administrateur
Commentaire de Funto66 le 27/12/2004 22:49:41

N'empêche que les scripts sont utilisés dans les Unreal Tournaments (Unreal Script) et si tu décompresses les données de Doom 3 (du moins la démo) (faut renommer le fichier .pk4 en .zip) tu verras qu'il y a une bonne dose de scripts (dans un langage qui ressemble bcp bcp au C++, je ne sais pas ce que c'est, si jamais qq1 le sait, qu'il le dise :)).

signaler à un administrateur
Commentaire de Kirua le 28/12/2004 20:59:10

"dans quake3 arena,aucun script"

Je ne suis pas trop au courant, mais si tu dis vrai, je suis très très très étonné. Comment ils gèrent tous les événements d'interaction avec le monde? Chaque level a ses particularités, il y a des objets qui régénèrent / mangent la vie quand on les active / touche / casse etc... Je veux bien que ça peut se hard-coder, ou bien qu'on peut remplir une "fiche descriptive" pour chaque objet, du style: Action: [contact] / Effet sur la Vie: [-5] etc... mais c'est pas digne de Q3 ...

signaler à un administrateur
Commentaire de Arnaud16022 le 28/12/2004 23:06:04

"dans quake3 arena,aucun script"

bon a va peut etre changer ca par:
"en fouillant dans pk3, je n'ai trouvé aucun fichier qui ressemblât a un script"
ya une difference ;)

"mangent la vie quand on les active" -> lesquels???
par contrte en effet ya une map dans laquelle ya une piece (jusque la rien d'anormal...) et qd tu rentres dans cette piece ya des grenades qui giclent de partout et qui rebondissent dans tous les coins... ca ca ne doit pas etre intégré au code je pense... ?

signaler à un administrateur
Commentaire de Kirua le 28/12/2004 23:22:20

ben quand tu actives peut-être pas, mais qd tu rentres en contact avec de la lave par exemple, ou quand tu tombes dans dedans etc... fin bon, tu m'as compris quoi: des événements qu'il serait sale de hard-coder, et je vois pas pq les gars de Q3 se seraient privés d'un script engine, et mce serait super instructif que goutbouyo tente le sien [suis sur mon second en ce moment d'ailleurs, et c'est super à coder].

signaler à un administrateur
Commentaire de Arnaud16022 le 28/12/2004 23:35:17

hum... tu pourrais pas poster tonpremier alors????
allez quoi !

signaler à un administrateur
Commentaire de Kirua le 29/12/2004 01:03:30

au risque de poster pour rien ajouter d'intéressant (je réponds, je ferai pas long), le premier est trop crade et pas assez indépendant pour être posté en tant que code, ça n'aiderait personne. le second je verrai bien si il me satisfait. vous avez le temps -_-.

quoi qu'il en soit, tu as décidé quoi par rapport au script engine pour ton fps, goutbouyo ?

signaler à un administrateur
Commentaire de AmK le 29/12/2004 12:40:54

Je t'en prie Kirua arrête de dire que tes sources ne serviront pas à personne , c'est faux ! et puis même si c'est crade ( comme tu le dis ) ça servira à bcp de membres ici !

signaler à un administrateur
Commentaire de goutbouyo le 29/12/2004 17:23:59

salut,
Pour l'instant je vais laisser mon jeu comme ça parce que j'essaye de m'initier à directx (histoire de voir ce que ça donne).
Mais je pense que je reviendrai dessus plus tard ...

signaler à un administrateur
Commentaire de AmK le 29/12/2004 19:02:32

ben si tu veux mon avis c'est pas la peine de perdre ton temps à apprendre directX vu que tu connais OpenGL ... en plus directX c'est trop barbant

signaler à un administrateur
Commentaire de goutbouyo le 30/12/2004 23:40:51

T'as raison et je viens de m'en rendre compte !!!
J'ai donc décidé de continuer mon petit jeu et je viens de mettre un moteur de particules !

signaler à un administrateur
Commentaire de Kirua le 31/12/2004 12:47:26

màj de temps en temps stp, qu'on ait la dernière version :)

signaler à un administrateur
Commentaire de goutbouyo le 31/12/2004 17:34:15

je viens de faire une mise à jour :)

signaler à un administrateur
Commentaire de AmK le 31/12/2004 17:48:26

je vois le moteur à particules dans le projet ? ou alors tu l'as jeté dans un des .cpp ?

signaler à un administrateur
Commentaire de Funto66 le 31/12/2004 19:27:55

Je crois qu'il y a un fichier "tga.c" en trop non?
Joli le moteur de particules sinon :) Ça ferait bien pr indiquer la fin du niveau ;)

signaler à un administrateur
Commentaire de AmK le 31/12/2004 19:32:49

mais bon sang il est ou ce particle engine ? ( j'ai pas executé l'exe ( oups pleonasme) ) mais je cherche le code uniquement !!!!!

signaler à un administrateur
Commentaire de Kirua le 01/01/2005 13:27:35

je ne vois pas non plus l'effet du particle engine

signaler à un administrateur
Commentaire de goutbouyo le 01/01/2005 14:06:36

Si vous avez téléchargé le zip contenant seulement les sources c'est normal car je l'avais pas mis à jour :)

signaler à un administrateur
Commentaire de Kirua le 01/01/2005 14:30:53

ah ouais, c'est vraiment élémentaire! tu as fait du billboarding, ça c'est très bien, mais il faut que tu ajoutes la notion de Vie (plus une particule est vieille, moins elle est opaque, et quand sa vie atteint 0, après un temps que tu définis et qui varie dans un intervalle pour chaque particule séparément, elle est complètement invisible: elle meurt, tu la delete et tu en récrées une dans le lieu de départ). tu peux voir un exemple de particle engine pas mal configurable à cette adresse mais en 2D, tu pourrais t'en inspirer (et faire bcp mieux ^^) pour rendre le tien plus souble, mais en 3D:

http://www.cppfrance.com/code.aspx?ID=23693

signaler à un administrateur
Commentaire de goutbouyo le 01/01/2005 16:48:55

Bravo pour ton moteur de particules Kirua !!!
Ca m'a donné l'idée de diminuer la taille de particules au cours du temps et maintenat je vais voir pour l'opacité.

signaler à un administrateur
Commentaire de luhtor le 01/01/2005 19:48:02

Bon comme d'habitude, impossible de compiler, il y a une petite cinquentaine d'erreur. DOnc ce serait possible d'avoir l'exécutable dans le zip ?

signaler à un administrateur
Commentaire de albert0 le 01/01/2005 19:56:13

..

http://ps2-world.site.voila.fr/jeu_opengl.zip

signaler à un administrateur
Commentaire de luhtor le 01/01/2005 21:21:02

Quand tu traces l'arme, faudrait désactiver le Z-buffer non ?
pour éviter qu'elle ne passe a travers le mur :)

signaler à un administrateur
Commentaire de luhtor le 01/01/2005 21:28:52

Tient autrement :)
Aller ca te prend 45 sec, tu devrais mettre des références dans tes fonctions mathématiques, genre:
CVector3 Cross(CVector3 vVector1, CVector3 vVector2)

mais
CVector3 Cross(CVector3 & vVector1, CVector3 & vVector2)


Avec un gestionnaire d'allocation (merci au tut de Loulou), on constate la perte de temps énorme que l'appel par valeur cause.

signaler à un administrateur
Commentaire de goutbouyo le 02/01/2005 11:59:25

Même en désactivant le Z-buffer ça passerait à travers les murs je pense ...
De toute façon c'est pas bien grave vu que dans des jeux comme CS ça arrive souvent :)

Je vais suivre ton conseil, merci !

signaler à un administrateur
Commentaire de goutbouyo le 02/01/2005 12:41:50

En désactivant le Z-buffer l'arme passe plus à travers les murs mais elle est moche ...

En fait je vais pas mettre d'effet de transparence aux particules, avec le fond gris ça marche pas top.

Je poste la mise à jour.

signaler à un administrateur
Commentaire de AmK le 02/01/2005 17:50:57

c'est sur que pour la perf le passage par valeur c'est pas ce qui se fait de mieux , par contre si tu passes par reference ça peut se retourner contre toi ( sécurité des données)

signaler à un administrateur
Commentaire de Funto66 le 02/01/2005 19:58:35

Hmm remarque d'un autre côté, ce ne serait pas possible de passer des références "constantes" ? (je veux dire :
void ma_fonction(const Vector& v)
{
// Ici v n'est pas modifiable
}
)

signaler à un administrateur
Commentaire de goutbouyo le 02/01/2005 21:08:25

C'est bien compliqué pour moi tout ça :)
Vais jeter un coup d'oeil à mon livre de programmation.

signaler à un administrateur
Commentaire de Arnaud16022 le 02/01/2005 21:08:34

c'est où l'intérêt?

signaler à un administrateur
Commentaire de Funto66 le 02/01/2005 21:49:51

Arnaud >> l'intérêt de passer par référence, c'est d'avoir une exécution plus rapide.
Quand tu appelles une fonction, les arguments sont posés sur ce qu'on appelle la "pile", et même si le processus est très rapide, ça prend du temps.
Si l'on utilise une fonction du type :
void fonction(MaGrosseStructure la_grosse_Berte)
{
}
, si par exemple sizeof(MaGrosseStructure) == 50 ça va être long.

Si par contre tu fais :
void fonction(MaGrosseStructure& ref)
{
}

à ce moment-là seule l'adresse de l'objet passé en paramètre sera posée sur la pile, ce qui représente 4 octets -> ce n'est pas négligeable et ça coûte rien de le faire :)

signaler à un administrateur
Commentaire de Arnaud16022 le 02/01/2005 22:17:04

oui dans ce sens la OK, mais ton Vector m'a embrouillé: j'imaginais un Vecteur3d, et passer 4*3*8 bits ca doit pas etre vraiement beaucoup plus lent que de passer 4*8 bits.
d'ailleurs, ton truc est utilisé par glm (le loader de .obj de nate robins) ainsi que par plein d'autres fonctions...

signaler à un administrateur
Commentaire de AmK le 04/01/2005 13:02:18

ah ouai bonne idée pour le type const !

signaler à un administrateur
Commentaire de Kirua le 10/01/2005 08:32:07

pour les constructeurs de copie on utilise toujours des références constantes, c'est ce qu'il y a de plus logique.

signaler à un administrateur
Commentaire de goutbouyo le 21/02/2005 22:46:15

Je viens de faire une petite mise à jour :)

signaler à un administrateur
Commentaire de Sumiko le 23/02/2005 09:32:44

Ne serait ti pas intéresants, de mettre une capture ?!

Cela permet d'avoir un aperçut, et de savoir ce que l'on télécharge,
nan  ?!

Attention je ne dis pas que ta source est nul, au contraire....

signaler à un administrateur
Commentaire de Arnaud16022 le 23/02/2005 11:30:08

ben vi, 3Mo c'est gros pr mon pov 56k
goutbouyo, dans l'historique tu dis:
"J'ai rajouté un moteur de particules(qui n'est pas de moi bien sûr !!! trop compliqué)."

quel est l'intéret alors , s'il n'est pas de toi ? OK, ca rajoute de l'intéret au jeu en lui meme, mais trouver une source de moteur ded particules tout le monde peut le faire. L'intéret est de reprogrammer le tou, histoire d'avoir un truc :
perso
compréhensible (par toi du moins)
correspondant a tes besoins
pas rippé

et je t'assure que c'est pas si dur que ca.

signaler à un administrateur
Commentaire de Funto66 le 23/02/2005 11:52:17

+1 : je suis entièrement d'accord avec Arnaud ;)

signaler à un administrateur
Commentaire de goutbouyo le 23/02/2005 12:58:00

Tu as raison, mais en fait pour l'instant je l'utilise pas trop donc je me suis pas trop penché dessus.
C'était juste pour voir ce que ça donne.

Le jour où je me déciderai à l'utiliser vraiment, je le reprogrammerai moi même pour qu'il s'adapte à mon jeu.

Désolé pour la taille du zip mais avec toutes les textures et tout ... ça fait gros.

Je vais mettre une capture.

signaler à un administrateur
Commentaire de Arnaud16022 le 23/02/2005 13:35:49

pour la taille du zip je comprens. mon jeu a moi fait 50Mo...
(bon OK avec tous les binaires debug & release, mais bon qd meme)
je dl ca dans une semaine, au lycée.
d'apres la capture:
c'est toi qui a fait le modele du flambeau?
toi t'as trouvé EndWorld, non?
les scores sont tjs aussi horribles....
j'aime pas trop le fog mais ca c'est perso...
c'est un peu bas de plafond...
elles bougent, les textures?

voilavoila...
++

signaler à un administrateur
Commentaire de Kirua le 23/02/2005 14:11:25

C'est vrai que le GUI laisse à désirer.

Pour le particle engine, c'est vraiment simple. Il y a une subtilité, toutefois, quand tu le fais en 3D, et ça porte le nom barbare de Billboarding. C'est la même chose que dans Doom premier du nom: tu dois t'arranger pour que les carrés texturés qe sont les particules fassent tjs face à la caméra, et pour cela tu dois faire un peu de géométrie analytique dans l'espace (une sombre histoire de vecteurs ;)), mais si t'as 16-17 ans, ça doit être à ton programme scolaire. Sinon, demande à ton prof de math, il doit savoir ça (càd: trouver comment et où dessiner les particules, si tu connais le vecteur caméra (le vecteur qui est perpendiculaire à l'écran et qui rentre dedans si tu préfères) de façon à ce que toutes les particules soient perpendiculaires à ce vecteur ... ce qui veut dire parallèles à l'écran = font face au joueur)

signaler à un administrateur
Commentaire de goutbouyo le 23/02/2005 15:52:32

A arnaud16022 :
*Le modèle du flambeau je l'ai trouvé sur le net avec un pack de modèle md2.
Sinon je prends des modèles sur polycount.
J'ai fait moi-même un modèle md2 mais il est pas super : c'est une une table :)
*C'est quoi EndWorld ???
*Les scores sont pas très beau, je l'avoue, mais ça c'est des détails que tu règles à la fin(donc dans longtemps...)
*Le fog sert pour le level 1 (sinon on a un fond noir et c'est pas très beau) mais j'ai oublié de le désactiver pour le level2.
*Le plafond est bas dans le level2 mais en fait c'est fait exprès : je voulais une impresion d'enfermement pour ce level.
Et puis c'est pas marrant si tous les levels se ressemblent...
*Tu demandes si les textures bougent ??? Si tu parles des flambeaux : oui

A Kirua:
*C'est quoi le GUI ??? ....
*Merci pour les précisiosn sur le particule engine.
Mais je pense pas le faire de suite ... c'est bientôt la rentrée :(

signaler à un administrateur
Commentaire de Kirua le 23/02/2005 16:01:37

GUI = Graphical User Interface
C'est tout ce qui constitue les menus et en fait tout ce qui propose une information à l'utilisateur / lui demande d'en fournir. En fait, j'aurais dû dire les HUD, puisque je parlais de l'affichage des scores, mais comme tu dis, c'est secondaire; et si tu abandonnes le projet, tu auras perdu plein de temps avec des bricolages, c'est pas drôle.

signaler à un administrateur
Commentaire de Arnaud16022 le 23/02/2005 22:46:37

"J'ai fait moi-même un modèle md2" COMMENTCOMMENTCOMMENT??????
avec quoi? merci...
oublie ca pour EndWorld... c'est un super jeu déposé y auun bail sur cs.
perso je trouve ca assez important le HUD ( Head-Up Display, affichage 'par dessus' ) , ca a un role tres important pour l' "accrochage", des caractères sur fond noir ca révule un peu (j'éxagere beaucoup)
et Kirua, pas besoin de demander a la prof de maths ( bêêê! quelle idée... lol ), cs est la pour ca... va voir ma source de particules, tu verras, ya qu'a trouver la matricec de la caméra, de faire quelques menues opérations pour trouver les vecteurs haut et droit, et c'est parti ! apres, tu fais:
glBegin(GL_QUADS);
glVertex3f( posX- taille*Vecteurhaut.x,posY- taille*Vecteurhaut.y,posZ- taille*Vecteurhaut.z);
//ca pour les 3autres points
glEnd();
et hopla boum, c'est fini!
bon évidement si tu veux de la transparence, il faudra d'abord classer tes particules par distance, pour ca, un tour chez Nehe, source sur le picking (sisi )

signaler à un administrateur
Commentaire de goutbouyo le 24/02/2005 00:28:06

*J'ai fait un MD2 avec milkshape et je me sers aussi de MDL.
Je suis content je viens de finir mon premier "vrai" MD2 : une arme de CS(reste plus qu'à mettre des textures ...)
J'essaierai de la mettre dans mon jeu.
*Pour le HUD, comme je l'ai dit précédemment, c'est pas le plus important dans un jeu mais plutôt des finitions (selon mon avis) donc je verrai plus tard ...
*Je vais jeter un oeil sur ta source sur les particules.

signaler à un administrateur
Commentaire de satri le 28/07/2007 14:40:10

ton lien ne marche pas :(:(:(, (je sais que ca date de longtemps mais j'voulais voir ce que ton jeu donnait :()

signaler à un administrateur
Commentaire de zenobiusz le 20/10/2008 12:10:48 10/10

Good.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Objects 3D Opengl [ par mastave ] Comment inclure dans un fenêtre OpenGl un fichier 3D DXF ou3DS??? un ptit jeu [ par BLaFarD ] euh, je viens de me pondre un petit moteur 3d de merde en opengldonc, si qlqun veut me filer des model 3d k'il a fait (sous 3dsmax si possible), bah, Moteur 3d OpenGL [ par Stormy ] Salut. Je recherche des personnes motives pour travailler sur un moteur 3d sous OpenGL. Les bases sont deja etablies (Detection de collisions, sons, m Faire un jeu (Voiture) [ par skone007 ] Voilà depuis peu le modeuleur 3D du projet nous a quitter. Nous recherchons des personnes capables de faires des voitures et des circuits en 3D. Nou OpenGl et objets 3D [ par mshn ] bonjour, est ce qu'on peux céer des objets 3D sous OpenGl, et les manipuler (animer et déplacer) par programme en utilisant un environnement de C++ ? Charger un model 3D en C++ avec opengl [ par smoove5198 ] Bonjour,j'essaye depuis un moment de charger un model 3D avec opengl en C++, pour ca j'utilise le seul format de fichier que je connaisse et dont j'ai projet jeu voiture 3D [ par supergrey ] Bonjour a tous.Dans le cadre de notre dernier projet de développement, nous proposons au modéliste 3D un partenariat des plus simples.En effet nous vo Projet OpenGl [ par barraq ] salut,Voila j'ai un projet a faire pour ma fac, je doit réaliser tout un environement 3d en opengl .Je doit pouvoir me deplacer dans une map donnée et Projet de jeu sur quimper [ par vini123 ] ça y est après avoir fini mes études et connaissant une petite période de chômage j'en profite pour me lancer dans la programmation d'un moteur 3D. J'


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,546 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.