#0 

21-10-2006 21:12:25

Willikus
Abonné
Date d'inscription: 21-10-2006
Messages: 150
Site web

Bonjour,

J'aurais bien aimer me présenter avant de poser une question mais étant ridicule par rapport aux autres membres (pas en école d'informatique ni ayant 25 ans mais 16 ans et 1ereS).

Bref, m'étant gentillement fait renvoyer chi** sur le forum anglais d'Irrlicht, je suis extrement content qu'un forum Français existe ! (goulée d'oxygène pour mon projet).

Mon problème, le saut : chose indispensable pour un FPS.

La question étant, comment les programeurs des jeux basé sur Irrlicht ont il fait pour gerée le saut ?!
Je suis rester sur un enchainement du genre (apres formatage, mon code a disparue donc le français le remplace) :

1°INITIAL-Gravité : -0.5
2°SAUT   -Gravité : 0.5 -> Time : ??? (chronomètre)
3°SAUT   -Time : ??? (expire) -> Gravité : -0.5
4°FINAL   -Gravité : -0.5


Mais ne me servant que de Irrlicht, je suis resté bloqué sur le temps avec les fréquances, les sous fonctions, ...

Je comprendrais si la question parait lourd et inutile aux connaisseurs mais resté bloqué n'a que pour effet de gonflé le code de recherche et fini par tout buggé. Je remercie donc d'avance les personne acceptant de participé au topic afin de me sortir de cette impasse.

A+
Willikus


Athlon 3000+ / 1024Mo PC3200 /8800 GTS

Hors ligne


#1 

22-10-2006 12:14:57

izguit
Administrateur
Lieu: 127.0.0.1
Date d'inscription: 14-09-2006
Messages: 306
Site web

salut,
tout d'abord bienvenue

Pour les sauts ça dépend de ce que tu utilises. Perso pour une petite démo j'avais bidouillé avec le cosinus, un truc du genre Player.Pos = cos(time);
Pour un projet plus sérieux, le mieux est d'utiliser un moteur physique (ode, newton...)


Athlon 64 3000+ // 1Go RAM // Geforce 6600GT 128Mo
Turion 64 X2 // 1Go RAM // ATI X1250

Hors ligne


#2 

22-10-2006 13:51:06

Willikus
Abonné
Date d'inscription: 21-10-2006
Messages: 150
Site web

Le projet est orienté MMORPG (ne riez pas -_-")

Donc le moteur physique on évite car on cherche a avoir des serveurs light (relatif).

Le cosinus est une fonction de Irrlicht (ou prit en charge) ou provient d'une bibilo mathématique ?

Mais c'est vraix je n'avait pas penser a des fonction comme ça... Mais comment a tu fait pour éviter que la camera remonte apres... (sur ma calculette graph, sur {-1.5, 1.5} la courbe a la bonne forme mais apres ce n'est plus bon...)

Bref, tout réside dans le time! Auquel je vait m'attaquer !

a+
W


Athlon 3000+ / 1024Mo PC3200 /8800 GTS

Hors ligne


#3 

22-10-2006 14:38:34

Dekron
Membre
Lieu: Orléans
Date d'inscription: 21-10-2006
Messages: 46
Site web

bah faut programmer le truc pour que quand cos(t)=cos(origine) provoque l'arret de la fonction, avec une boucle for par exemple, ou peut être un while. ( Irrlicht, c'est de la prog évennementielle ou séquentielle, ca je ne sais pas ).


Visitez Arcis : MMORPG ammateur utilisant irrlicht !
Etudiant ingénieur, maitrise C++, connaissances python & php.

Hors ligne


#4 

22-10-2006 14:46:41

Willikus
Abonné
Date d'inscription: 21-10-2006
Messages: 150
Site web

Oki doki !

Ca m'a l'air jouable !

Merci de votre aide... Je vait essayer tout ça, on verra apres. Pour l'instant l'explication m'a l'air convenable !

a+
W


Athlon 3000+ / 1024Mo PC3200 /8800 GTS

Hors ligne


#5 

22-10-2006 20:42:21

kedu
Modérateur
Date d'inscription: 23-09-2006
Messages: 155

Oui une petite fonction avec cosinus parait indiquée si tu veux quelque chose de light ; si tu trouves une manière sympa de gérer ce saut, n'hésite pas à poster un extrait de ton source sur cette fonction ; ça pourrait surement aider d'autres personnes :-)

Hors ligne


#6 

23-10-2006 00:23:35

wizad
Abonné
Lieu: Caen
Date d'inscription: 30-09-2006
Messages: 106

la trajectoire lors d'un saut correspond à plusieur grandeur physique associé à chaque composante du mouvement. La trajectoire commune est une trajectoire parabolique.

Dans le cadre de ton projet le choix du cosinus s'avère trés abstraits et aloigné d'un trajectoire simili-réel.

Je te laisse un petit cours sur le sujet que je te conseil de potasser :
http://www.al.lu/physics/Downloads/Prem … nstant.pdf

Il est vrai que l'utilisation de la formule réel dans le cadre d'un jeux vidéo n'est peut être pas la meilleur solution, némmoins une bonne maitrise du sujet et des connaissance en trigonométrie devrait te permettre de déterminer une équation de mouvement la plus aproprié possible.

Dernière modification par wizad (23-10-2006 00:26:22)

Hors ligne


#7 

23-10-2006 11:20:49

Dekron
Membre
Lieu: Orléans
Date d'inscription: 21-10-2006
Messages: 46
Site web

le saut, c'est comme le tir d'un boulet de canon, ou le poids du boulet = celui de la personne, et ou langle est soit fixe, soit dépend de la vitesse initiale ( a vitesse max, angle = 30 °, à vitesse nulle, angle = 90 °, ce n'est qu'un exemple )


Visitez Arcis : MMORPG ammateur utilisant irrlicht !
Etudiant ingénieur, maitrise C++, connaissances python & php.

Hors ligne


#8 

18-11-2006 20:06:00

Willikus
Abonné
Date d'inscription: 21-10-2006
Messages: 150
Site web

Bon, j'étais parti chercher..., je reviens et je vois 2 reponses (que je remercie au moins pour les formules qui peuvent me simplifier la tache).

Mes 'recherches' ont conclué que, comme avant, je stagne...
-Cosinus, gestion de la colision durant le saut, risque de bug ?!
-Ma technique avec une inversion de gravité bug au niveau du temps et de la trajectoire.


Je m'heurte donc a être obligé d'utiliser un moteur physique...
Question sur le sujet :
-Compatibilité avec un reseau internet ?
-Difficulté ?
-Moteur conseiller a un noob ?

Merci de m'accorder encore un peu de votre temps.

PS : Dans le cadre de mon projet, j'ai réalisé de petites modelisations du style médiéval-fantastique... si ça interesse... (j'ai que ça a proposer pour ne pas passer pour le boulet wink)

Dernière modification par Willikus (18-11-2006 20:11:13)


Athlon 3000+ / 1024Mo PC3200 /8800 GTS

Hors ligne


#9 

19-11-2006 09:19:49

kedu
Modérateur
Date d'inscription: 23-09-2006
Messages: 155

Willikus :

Question sur le sujet :
-Compatibilité avec un reseau internet ?
-Difficulté ?
-Moteur conseiller a un noob ?


Pour la mise en place de la physique via réseau/réseau Internet... c'est un vaste sujet ^^ et je n'ai pas le niveau pour te répondre sad

Pour la difficulté, et bien quelque soit la librairie physique que tu utiliseras (newton, ode, ...), tu peux être tranquile car c'est justement toutes ces librairies qui font le sale boulot à ta place !

Je te conseille ode ou newton car ils sont tous deux faciles à mettre en place d'autant plus que chacun est livré avec des samples qui permettent d'assimiler rapidement leur fonctionnement.

Hors ligne


#10 

19-11-2006 11:12:30

wizad
Abonné
Lieu: Caen
Date d'inscription: 30-09-2006
Messages: 106

je reviens un peu à la charge même si je n'ai pas de réponse concrète.

A une époque pas si lointaine un petit jeu circulait sur le calculatrice de marque casio. Il s'agissait d'atteindre une cible (éventuellement un autre joueur) avec son canon en entrant un valeur d'angle et une valeur de force. Il faudrais peut être s'inspiré de ces formules (que je suis entrain de rechercher) pour obtenir un saut assez réaliste et utilisant peut de ressources.

Néammoins même pour un mmorpg je préconiserais l'utilisation d'un moteur physique à condition de pas choisir un usine à gaz et de pousser la reflexion pour l'intégrer coté client et non coté serveur.
Je m'explique :
  - Plutot que de faire faire les calculs de trajectoire physique cote serveur pour aprés renvoyé la position des joueurs à chaque instant t, le serveur se chargerait d'envoyer les composantes des mouvements des joueurs (saut, déplacement, tir...) au client et c'est le client qui executerait les formules (entre autre de physique).

Je suis conscient que mon système pose d'autre problème qui à mon sens ne sont pas insurmontable mais relève plus d'un travail d'étude et de recherche que d'un travail de production.

Hors ligne


#11 

19-11-2006 12:01:17

izguit
Administrateur
Lieu: 127.0.0.1
Date d'inscription: 14-09-2006
Messages: 306
Site web

voilà la routine de la trajectoire d'un projectile :

Code:

intPes : intensité de la pesanteur (9.81 à Paris)
angle : angle de départ (en degrés)
vitesse : vitesse de départ (en m/s)
hauteur : hauteur de départ

y = -0.5 * intPes * ((1 + Math.Tan(angle) * Math.Tan(angle)) / (vitesse * vitesse)) * (x * x) + (Math.Tan(angle) * x) + hauteur;

C'est barbare comme formule mais il faut pas chercher à comprendre ça créée une parabole.


Athlon 64 3000+ // 1Go RAM // Geforce 6600GT 128Mo
Turion 64 X2 // 1Go RAM // ATI X1250

Hors ligne


#12 

19-11-2006 16:23:31

wizad
Abonné
Lieu: Caen
Date d'inscription: 30-09-2006
Messages: 106

rahhh plus rapide que moi sur ce coup là. Et Willikus en cas de pb demande à ton prof de physique quelques infos (c'est du programme de terminale).

Hors ligne


#13 

19-11-2006 16:44:06

izguit
Administrateur
Lieu: 127.0.0.1
Date d'inscription: 14-09-2006
Messages: 306
Site web

Perso je l'ai eu en maths (1ère S), il y a un chapitre polynômes du second degré et la formule en est un.


Athlon 64 3000+ // 1Go RAM // Geforce 6600GT 128Mo
Turion 64 X2 // 1Go RAM // ATI X1250

Hors ligne


#14 

19-11-2006 17:35:20

Willikus
Abonné
Date d'inscription: 21-10-2006
Messages: 150
Site web

Bon, merci beaucoup pour cette vague de reponse... wink

Je pense m'attaquer a un moteur physique : ODE... (tuto avec irrlicht smile)

Pour le prof de physique... je ne croit pas qu'il puisse beaucoup m'aider... mais mon père est prof de méca/industriel... il doit savoir...

Merci, je vous recontact le weekend prochain avec le résultat de mon avancement...


Athlon 3000+ / 1024Mo PC3200 /8800 GTS

Hors ligne


#15 

20-11-2006 14:53:15

diOxy
Abonné
Date d'inscription: 10-10-2006
Messages: 153

Heuu...

Ca parait con, mais pourquoi chercher a faire compliqué ??? Les sinus, cosinus et autres consomment du process, mettre un moteur physique juste pour que le perso fasse de petits bons a petit level et de grands bons a haut levels... Modifie juste l'altitude du perso, non ? Gère ça comme un déplacement vers le haut d'une durée/distance maximale. Gère l'ensemble pour interdire la possibilité de sauter de nouveau avant d'avoir atteint le sol. Et dans le cadre du mmorpg, donne la possibilité d'atteindre des hauteurs différentes en fonction d'aptitudes.

Il faut savoir rester simple.

Hors ligne


#16 

20-11-2006 19:13:25

izguit
Administrateur
Lieu: 127.0.0.1
Date d'inscription: 14-09-2006
Messages: 306
Site web

entre une ligne de code qui calcule la hauteur pendant le saut et un moteur physique il y a quand même un monde smile
Je suis pas sûr que ca consomme moins, et en tout cas en intégration c'est carrément plus compliqué hmm
'fin je dis ça..... smile chacun son avis


Athlon 64 3000+ // 1Go RAM // Geforce 6600GT 128Mo
Turion 64 X2 // 1Go RAM // ATI X1250

Hors ligne


#17 

21-11-2006 00:05:46

kedu
Modérateur
Date d'inscription: 23-09-2006
Messages: 155

Oui à voir car déjà pour que la vitesse de saut soit indépendante du nombre de frame par seconde du rendu graphique, donc pour que ce saut se déroule de la même manière sur un pc merdique ou sur une bête de course, il va déjà y avoir une jolie boucle bien sympa... [Quoique irrlicht le gère avec les animations ça nan ?]

Les moteurs physiques fesant tout le sale boulot et un boulot certainement mieux optimisé que ce que l'on pourrait faire... et bien c'est donc pas forcément idiot effectivement d'y réfléchir... (coté client bien sûr)

D'autant plus que là, tu es face à un problème de saut d'accord mais est-ce que ce sera le seul ? C'est surtout par rapport à cette question que peut se faire le choix le plus adapté.

('fin je suis pas impartial car moi les jeux sans physique ça me gonfle ^^ faut que ça bouge, que ça rebondisse de partout ! lol)

Hors ligne


#18 

21-11-2006 11:03:28

diOxy
Abonné
Date d'inscription: 10-10-2006
Messages: 153

Je me base sur la gestion du saut dans des mmorpg connus, tel Anarchy Online, par exemple. Si vous voulez avoir une idée, installez le client de AO, créez vous un compte et testez (c'est gratos), vous verrez que l'on peut faire un truc sympa sans moteur physique. Je parle bien de RPG, hein ! Pas de quake ou autre fps dans lesquels les moteurs physiques sont devenus indispensables !

Hors ligne


#19 

24-11-2006 23:37:49

Willikus
Abonné
Date d'inscription: 21-10-2006
Messages: 150
Site web

Le jeu étant basé sur du FPS pur et dure, je prefert que des gens lague que le jeu (si il finie ) flop par une qualité minable...
Pour un déplacement vers le haut, j'en revient au probleme d'un timer fonctionnant simulatemant a l'affichage...

Moteur physique donc.

Merci quand même de t'interessé a mon problème wink


Athlon 3000+ / 1024Mo PC3200 /8800 GTS

Hors ligne


#20 

25-11-2006 00:00:17

Willikus
Abonné
Date d'inscription: 21-10-2006
Messages: 150
Site web

Petites questions sur Le moteur Newton :

-A t'on une idée de la license ?
-Je remarque 4 librairie différente :
                 -mt
                 -mt_double
                 -st
                 -st_double

Quel librairie choisir ? Que veulent t'elles dirent ?


Athlon 3000+ / 1024Mo PC3200 /8800 GTS

Hors ligne


#21 

25-11-2006 12:39:24

Willikus
Abonné
Date d'inscription: 21-10-2006
Messages: 150
Site web

Voilà, je suis lancé sur un truc, je devient un super boulet !!!

Ya t'il des tutos d'integration ou de newton et d'Irrlicht a part celui de Mercior's qui me lesse septique de part sa séparation en classes...

Avez vous des tuyaux pour ne pas me cracker dès le début ?


Athlon 3000+ / 1024Mo PC3200 /8800 GTS

Hors ligne


#22 

02-02-2007 18:59:14

Willikus
Abonné
Date d'inscription: 21-10-2006
Messages: 150
Site web

Salut !!!

Je suis repartie sur le saut avec un changement de gravité (permet un semblent de moteur physique...)

Et je pose ce code :

Code:

if ((jump==1)){
           if(stop==0){
           
           timestop = seconde;
           stop = 1;
           }
                      
               if((seconde-timestop)<=2){
                                         printf("2");
              anim2->setGravity(core::vector3df(0,0.005,0)); 
              } else {
              anim2->setGravity(core::vector3df(0,-0.005,0)); 
              printf("1");
              stop = 0;
              jump =0;
              
                     
              }
              }

Pour l'expliquer :

-Quand je clique sur Space : jump passe a 1 si et seulement si jump était egal a 0.
-Quand le code ci dessus s'execute, timestop est censé prendre la valeur de seconde a l'instant puis ne plus bougé.
-Apres, une condition qui fait que temps que l'écart entre timestop et seconde est inferieur ou égal a 2, la gravité est inversé.
-Apres, elle est remise correctement.

Cependant, j'ai l'impression que timestop ne remplie pas son role, ce qui fait que je ne peux sauter que durant les 2 seconde du démarage.

(la variable seconde est INT, la variable timestop est INT, déclarer au début et fixer a 0.)


Merci de m'aider


Athlon 3000+ / 1024Mo PC3200 /8800 GTS

Hors ligne


#23 

02-02-2007 19:52:57

Jerry Kan
Habitué
Date d'inscription: 21-11-2006
Messages: 265

franchement je pense pas que ce soit la bonne approche
de mon point de vue, il ne faut coder QUE des trucs super super super simples, sinon c'est que c'est pas la bonne idée
ton code est deja trop complexe pour que tu puisse sérieusement l'utiliser par la suite


pour ton saut tu as deux choix :

soit ton saut est toujours le meme, et tu fait suivre a ton perso une courbe définie (c'est le cas de nombreux jeux) pas besoin de recalculer la meme trajectoire a chaque fois
si tu utilise la gravité irrlicht, alors tu la désactive pendant le saut, et tu le bouge comme tu veux

soit tes sauts varient en fonction du poids des persos, la deux solutions :
soit tu fait la solution 1 avec un parametre qui varie
soit tu integre un moteur physique, mais bon, si c'est juste de la physique pour que ton perso saute en l'air c'est tuer une mouche a coup de grenade

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
114 invités en ligne
Aucun membre connecté
RSS Feed