Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1550 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Page Suivante
Auteur Sujet :

[C++] Programmation d'un serveur de jeu

n°1569731
_darkalt3_
Proctopathe
Posté le 04-06-2007 à 14:46:53  profilanswer
 

Reprise du message précédent :

zapan666 a écrit :

ragdoll : je connais pas du tout ce terme.


(en gros) c'est quand t 'as pas d'animation prédéfinie pour un mesh animé, et que t'as plutôt des relations mécaniques entre parties du meshe, degré de liberté; genre tu déplace l'avant bras, l'épaule va effectuer une rotation, ou tu avant le pied, la jambe suit. Là il est plus question de parler de keyframe pour l'animation des personnages.


---------------
Töp of the plöp
mood
Publicité
Posté le 04-06-2007 à 14:46:53  profilanswer
 

n°1569732
MagicBuzz
Posté le 04-06-2007 à 14:47:07  profilanswer
 

Master p a écrit :

Maintenant j'ai déjà joué à des FPS il y a quelques années, et dans mes souvenirs, j'ai jamais croisé de bounding box déformable [:jagstang]  
J'essaye juste de comprendre mais t'as l'air d'être assez fermé dans ton explication. Chez toi aussi, la machine à café marche plus ?
Nan, ça c'est parce que t'explique mal [:aloy]


Désolé, j'aime pas me faire insulter, et là je suis relativement énervé (dès que poste un truc dans un topic hors "SGBD", c'est bon, c'est pour me faire insulter, y'en a marre).
 
Pour le bounding box déformable, explique ce que tu ne pige pas.
Si c'était pas un troll, je suppose qu'on peut trouver un compromis, ça doit être un problème de terme...
 
Pour moi, un personnage, c'est on va dire composé en 5 bounding boxes : 1 pour le tronc et la tête, et 1 pour chaque membre.
 
Ensuite, lorsque le personnage bouge, vu que les membres bougent aussi, dans mon explication, je déforme la box globale en effectuant des rotations aux boxes des membres. Ceci afin d'éviter de me taper tous les poly du perso en cas d'interception inutile de la grosse bounding box, qui a de grandes chances d'être arrivée 30 fois par seconde dans un FPS (donc une chiée de calcul inutiles, pouvant être évités par une "déformation" de la bounding).
Après moi j'ai jamais fait de 3D, et encore moins des jeux.
Par contre, j'ai fait du Ray-Tracing. Et par expérience, quand t'as un objet complexe et des traîtements lourds à faire dessus (réflexions, radiosités, réfraction, etc.) t'as intérêt à faire une bounding box qui colle le plus à la forme possible, plutôt que de faire un bon gros cube des familles qui va nécessiter une infinité de calculs en trop. Je transpose juste le problème à un FPs moderne, où un membre de personnage n'est plus 20 poly mais plutôt 200.

n°1569737
MagicBuzz
Posté le 04-06-2007 à 14:49:00  profilanswer
 

zapan666 a écrit :

il n'y a pas qu'une boite de colision par personnage : 1 a l'avant bras, etc. (je crois qu'on se comprend pas sur ce point)  
Il y en a plusieurs qui sont pour la plupart du temps rataché aux bones du personnage (du moins avec HL) donc c'est relativement indépendant du models 3D.
 
ragdoll : je connais pas du tout ce terme.


Donc c'est bien ce que je dis. C'est un problème de terme.
 
J'entends par "une bounding box déformable" un ensemble de bouding box qui correspondent à un seul personnage.
Déformation qui vient du Ray-Tracing en fait, où on stipule une seule bounding box à un objet, aussi complexe soit-elle.

n°1569739
masklinn
í dag viðrar vel til loftárása
Posté le 04-06-2007 à 14:49:29  profilanswer
 

Master p a écrit :

[:hahaguy] JE LA COUPE HEIN §§§
Nan mais, j'y connais que dalle, c'est loin d'être mon domaine [:petrus75]
Maintenant j'ai déjà joué à des FPS il y a quelques années, et dans mes souvenirs, j'ai jamais croisé de bounding box déformable [:jagstang]


Soldier of Fortune [:aloy]  
 
Le seul FPS que je connaisse avec une vraie localisation des dégats aussi [:aloy]  
 
Pas de bol, ils ont tout dégagé dans le 2 [:sisicaivrai]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1569741
_darkalt3_
Proctopathe
Posté le 04-06-2007 à 14:50:00  profilanswer
 

MagicBuzz a écrit :

Donc c'est bien ce que je dis. C'est un problème de terme.
 
J'entends par "une bounding box déformable" un ensemble de bouding box qui correspondent à un seul personnage.
Déformation qui vient du Ray-Tracing en fait, où on stipule une seule bounding box à un objet, aussi complexe soit-elle.


 
Les FPS et autres MMORPG sont pas en raytracing ...


---------------
Töp of the plöp
n°1569754
Master p
My new cock ring :D
Posté le 04-06-2007 à 15:01:48  profilanswer
 

MagicBuzz a écrit :

J'entends par "une bounding box déformable" un ensemble de bouding box qui correspondent à un seul personnage.


[:pingouino] et t'as pas l'impression que c'est proche de ce que je disais ?
Et dans ce cas-là, les seuls caractéristiques physiques de ces box, ça suffit pas au client ?


---------------
HAHAHA I M USING TEH INTERNET
n°1569757
MagicBuzz
Posté le 04-06-2007 à 15:06:04  profilanswer
 

Exemple avec un dessin :
 
http://img363.imageshack.us/img363/7694/boundingcd5.png
 
Premier : Bounding à l'ancienne mode, où non seulement il est plus qu'approximatif, mais en plus les 3 impacts (en vert) font un touché.
 
Dessins suivant :
- L'impact 1 est hors bounding box (pour moi "le bounding box" c'est les 5 carrés rouges).
- L'impact 2 est en plein dedans. On calcule si ça touche un poly du tronc, oui, banco.
- L'impact 3 est dans le bounding du bras droit. Mais lors du calcul plus fin, on détecte qu'en fait ça n'a pas touché. On peut imaginer qu'avec des armes telles que lance flame, on peut faire des dégats mineurs.
 
Dans le troisième dessin, même perso, mais avec le bras qui a bougé. La bounding du bras a fait une rotation (d'où ma notion de "déformation de la bounding box" )
- Le premier impact touche.
 
=> Dans ce cas, si moi j'ai le tracé des polys à l'écran (en noir) il faut qu'au même instant le serveur ait le tracé des bounding correspondant (en rouge) et ce, sans décallage possible. Dans une animation "indéformable", le "top" de départ + une valeur de temps permet d'avoir un comportement cohérent. Dans un système de mouvements plus libres, le serveur va devoir nécessiter bien plus de syncronisations. Par exemple le jeu "Die by the sword", qui se jouait en réseau et proposait des mouvements parfaitement libres devait absolument synchroinser chaque frame de mouvement (on tenait une épée qu'on bougeait au joystick -et l'animation suivant exactement le mouvement du joy, genre si on arrêtait le mouvement au milieu, ou changeait de trajectoir, alors ça stopait l'animation immédiatement pour suivre la nouvelle).

n°1569758
MagicBuzz
Posté le 04-06-2007 à 15:06:37  profilanswer
 

_darkalt3_ a écrit :

Les FPS et autres MMORPG sont pas en raytracing ...


Ouais, et ça change quoi en ce qui concerne l'utilisation de boundings et le calcul d'impacts sur une forme ?
 
Parceque quand il s'agit de calculer le touché entre une balle et un objet,c'est peut-être plus du "ray"-tracing, mais du "bullet"-tracing hein... les calculs sont rigoureusement les mêmes... on peut même se trouver avec des calculs de réflexion si on veut gérer les balles qui ricochent [:magicbuzz]

Message cité 2 fois
Message édité par MagicBuzz le 04-06-2007 à 15:11:27
n°1569762
MagicBuzz
Posté le 04-06-2007 à 15:09:54  profilanswer
 

Master p a écrit :

[:pingouino] et t'as pas l'impression que c'est proche de ce que je disais ?
Et dans ce cas-là, les seuls caractéristiques physiques de ces box, ça suffit pas au client ?


 
J'ai jamais dit le contraire. J'ai dit que ce qui important, c'était pas l'utilisation du'ne bounding ou autre pour faire les calculs, mais que le serveur synchronise les clients de façon à savoir quoi afficher, et pas seulement "perso 1 avance". Le serveur doit dire "perso 1 avance, et sa jambe droite est là, et la gauche etc." Après, que ce soit un "top" toutes les 12 keyframes d'un mouvement ou les infos complètes à chaque frame, ça change rien au principe. C'est ensuite au dev de choisir s'il veut par exemple qu'un mouvement soit interropable ou non, ou alors combinable avec un autre, etc. <- dans ce cas, un top au début du mouvement n'est plus forcément suffisant.

n°1569765
_darkalt3_
Proctopathe
Posté le 04-06-2007 à 15:11:27  profilanswer
 

MagicBuzz a écrit :

Ouais, et ça change quoi en ce qui concerne l'utilisation de boundings et le calcul d'impacts sur une forme ?


Le vocabulaire [:spamafote]


---------------
Töp of the plöp
mood
Publicité
Posté le 04-06-2007 à 15:11:27  profilanswer
 

n°1569769
MagicBuzz
Posté le 04-06-2007 à 15:11:54  profilanswer
 

c'est bien ce que je dis... on passe de "ray"-tracing à "bullet"-tracing :spamafote:

n°1569774
tbp
Posté le 04-06-2007 à 15:13:41  profilanswer
 

MagicBuzz a écrit :


J'entends par "une bounding box déformable" un ensemble de bouding box qui correspondent à un seul personnage.
Déformation qui vient du Ray-Tracing en fait, où on stipule une seule bounding box à un objet, aussi complexe soit-elle.


Pardon, mais la c'est nawak.  
Restons dans le contexte, ce genre de proxy est typique de la physique dans un jeu (pour des raisons de cout de mise-à-jour). Basta.

n°1569778
zapan666
Tout est relatif
Posté le 04-06-2007 à 15:15:02  profilanswer
 

MagicBuzz a écrit :

le jeu "Die by the sword",


 :love:


---------------
my flick r - Just Tab it !
n°1569780
Master p
My new cock ring :D
Posté le 04-06-2007 à 15:17:11  profilanswer
 

Il suffisait juste de d'expliquer qu'un bounding box déformable correspondait à plusieurs bounding box indéformables et dont la position évolue dans l'espace.

MagicBuzz a écrit :

=> Dans ce cas, si moi j'ai le tracé des polys à l'écran (en noir) il faut qu'au même instant le serveur ait le tracé des bounding correspondant (en rouge) et ce, sans décallage possible. Dans une animation "indéformable", le "top" de départ + une valeur de temps permet d'avoir un comportement cohérent. Dans un système de mouvements plus libres, le serveur va devoir nécessiter bien plus de syncronisations.

Tu multiplies par 5 la quantité de données échangées entre le serveur et le client, perso, je suis fonctionnaire, je trouve pas ça critique :o


---------------
HAHAHA I M USING TEH INTERNET
n°1569795
MagicBuzz
Posté le 04-06-2007 à 15:25:36  profilanswer
 

Master p a écrit :

Tu multiplies par 5 la quantité de données échangées entre le serveur et le client, perso, je suis fonctionnaire, je trouve pas ça critique :o


 
Ben non, pour une animation "indéformable" (si je commence à courrir, l'animation de deux pas est incompressible), on n'a besoin que d'une seule info : "anime X démarre au temps T", et on n'a à renvoyer l'info que pour chaque début d'animation.
Pour une animation qui peut être interrompue, deux choix : soit le serveur envoie la frame utilisé à chaque changement de frame, soit il dit "anime X s'arrête au temps T' ".
 
=> Les infos des coordonnées de la (des) bounding n'est pas échangé. Le client à tout ce qu'il faut pour faire un rendu cohérent avec les bounding que gère le serveur.

n°1569806
Master p
My new cock ring :D
Posté le 04-06-2007 à 15:29:27  profilanswer
 

MagicBuzz a écrit :

Ben non, pour une animation "indéformable" (si je commence à courrir, l'animation de deux pas est incompressible), on n'a besoin que d'une seule info : "anime X démarre au temps T", et on n'a à renvoyer l'info que pour chaque début d'animation.
Pour une animation qui peut être interrompue, deux choix : soit le serveur envoie la frame utilisé à chaque changement de frame, soit il dit "anime X s'arrête au temps T' ".

Désolé, je vois pas le rapport entre indéformable, et pouvant être interrompu :/ (je crois que je vais laisser tomber [:petrus75])


---------------
HAHAHA I M USING TEH INTERNET
n°1569813
MagicBuzz
Posté le 04-06-2007 à 15:32:48  profilanswer
 

Sauter par exemple, c'est "indéformable". Je peux pas en cours de route décider que "ha ben finalement je suis bien en l'air, j'y reste"... L'animation ne peut se terminer que lorsqu'elle a fini.
 
Quoique sauter c'est pas le meilleur truc, parceque selon la hauteur, l'anime ne dure pas le même temps [:magicbuzz]
 
Bon, recharger son arme par contre, c'est une animation "indéformable". Jamais on ne pourra l'arrêter en cours.


Message édité par MagicBuzz le 04-06-2007 à 15:38:07
n°1569910
bjone
Insert booze to continue
Posté le 04-06-2007 à 16:58:32  profilanswer
 

MagicBuzz a écrit :

je te parle pas de la phase d'optimisation, je te parle du principe bordel.
 
sur un FPS, le client ne se contente pas de dire "la position du gars bouge, donc il court, donc j'anime".
il doit savoir où il en est au niveau des frames du mouvement "courrir".
 
putain mais y'en a marre, vous être trop con. pourquoi dès que je parle faut absolument que j'aie tord ? merde à la fin, vous êtes vraiment trop cons.
 
dans un FPS, c'est pas le client gère l'anime POINT BARRE. C'est le serveur qui les synchronise, donc c'est en aucun cas le client qui la gère.


 
oui mais il y a des animations purement locales au client (et donc potentiellement incohérentes avec les autres client et la réalité du serveur), ça dépends du dégré d'évolution et de complexité du moteur, et tout simplement des choix des devs entre dépendance à la latence et la cohérence.

n°1569911
bjone
Insert booze to continue
Posté le 04-06-2007 à 17:00:17  profilanswer
 

MagicBuzz a écrit :

Désolé, j'aime pas me faire insulter, et là je suis relativement énervé (dès que poste un truc dans un topic hors "SGBD", c'est bon, c'est pour me faire insulter, y'en a marre).
 
Pour le bounding box déformable, explique ce que tu ne pige pas.
Si c'était pas un troll, je suppose qu'on peut trouver un compromis, ça doit être un problème de terme...
 
Pour moi, un personnage, c'est on va dire composé en 5 bounding boxes : 1 pour le tronc et la tête, et 1 pour chaque membre.
 
Ensuite, lorsque le personnage bouge, vu que les membres bougent aussi, dans mon explication, je déforme la box globale en effectuant des rotations aux boxes des membres. Ceci afin d'éviter de me taper tous les poly du perso en cas d'interception inutile de la grosse bounding box, qui a de grandes chances d'être arrivée 30 fois par seconde dans un FPS (donc une chiée de calcul inutiles, pouvant être évités par une "déformation" de la bounding).
Après moi j'ai jamais fait de 3D, et encore moins des jeux.
Par contre, j'ai fait du Ray-Tracing. Et par expérience, quand t'as un objet complexe et des traîtements lourds à faire dessus (réflexions, radiosités, réfraction, etc.) t'as intérêt à faire une bounding box qui colle le plus à la forme possible, plutôt que de faire un bon gros cube des familles qui va nécessiter une infinité de calculs en trop. Je transpose juste le problème à un FPs moderne, où un membre de personnage n'est plus 20 poly mais plutôt 200.


 
oui mais c'est hiarchique: tu peux avoir un aabb par objet, puis les boundings par bone, puis le test des triangles skinnés.


Message édité par bjone le 04-06-2007 à 17:03:13
n°1569914
bjone
Insert booze to continue
Posté le 04-06-2007 à 17:01:46  profilanswer
 

MagicBuzz a écrit :

Ouais, et ça change quoi en ce qui concerne l'utilisation de boundings et le calcul d'impacts sur une forme ?
 
Parceque quand il s'agit de calculer le touché entre une balle et un objet,c'est peut-être plus du "ray"-tracing, mais du "bullet"-tracing hein... les calculs sont rigoureusement les mêmes... on peut même se trouver avec des calculs de réflexion si on veut gérer les balles qui ricochent [:magicbuzz]


 
tout à fait.

n°1569915
MagicBuzz
Posté le 04-06-2007 à 17:01:51  profilanswer
 

après c'est sûr que les devs peuvent passer outre cette règle pour certaines actions.
 
ceci dit, c'est s'exposer à des problèmes, que ce soit hacks ou problème de cible "transparente" (je tire à côté du gars et il meurt, ou vice versa). personnellement, je préfère un jeu moins riche en éffets visuels, mais où quand je touche, je touche (spour ça que j'ai laissé tombé les FPS [:ddr555])

n°1569939
bjone
Insert booze to continue
Posté le 04-06-2007 à 17:21:53  profilanswer
 

le problème se posera toujours quelque soit l'approche.
 
tant que tout le monde aura pas un ping de 10ms sur les serveur, il y aura toujours des instabilités.
 
malheureusement les providers qui proposent la possibilité d'avoir un ping assez bas sont rares.  
perso j'ai perdu le fastpath qui me donnait un ping de 9ms sur le site de free et dans les 10-12ms sur les serveurs CSS connectés chez free, à cause du passage forcé en ReADSL, et tu le sens.
 
la prochaine étape chez les providers, c'est la réduction des latences plus que l'augmentation de la bande-passante.


Message édité par bjone le 04-06-2007 à 17:22:12
n°1569942
MagicBuzz
Posté le 04-06-2007 à 17:29:42  profilanswer
 

ceci dit, même s'il y a eu une régression ces dernières années, c'est quand même mieux qu'au débuts de l'ADSL, où un ping de moins de 300ms relevait de l'exploit :)


Message édité par MagicBuzz le 04-06-2007 à 17:30:13
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Fenetre DOC et programmation CProgrammation php/htlm/mysql avec caractères asiatiques.
[RESOLU]comment faire tourner 1 serveur MySQL sur mon PC??Programmation pour Débutant
projet de programmation[form] Comment choisir un fichier côté serveur ?
Client Serveur en OpenORBHelp Programmation division binaire C
Probleme programmation en C jeu de la vie[C] Programmation fonction recup Bits port Série
Plus de sujets relatifs à : [C++] Programmation d'un serveur de jeu


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR