serveurs de sockets en java,perl,php,c++
Accueil L'offre Tarifs YSServer Tutoriaux Support Espace client Forum Legal
serveurs de sockets en java,perl,php,c++
Meilleure façon de déplacer un personnage
your-socket
Bienvenue, Invité. Veuillez vous connecter ou vous enregistrer.
Avez-vous perdu votre courriel d'activation?Bienvenue.
Septembre 04, 2010, 10:45:03

Connexion avec identifiant, mot de passe et durée de la session
Recherche:     Recherche +
De nouveaux tutoriaux sont aujourd'hui disponibles.
1150 Messages dans 138 Sujets par 9690 Membres
Dernier membre: semiaddict
* Accueil Aide Recherche Identifiez-vous Enregistrez-vous
+  your-socket
|-+  Général
| |-+  Autres...
| | |-+  Meilleure façon de déplacer un personnage
« sujet précédent | | sujet suivant »
Pages: [1] Imprimer
Auteur Sujet: Meilleure façon de déplacer un personnage  (Lu 206 fois)
loupstigrou
Newbie
*
Messages: 26


Voir le profil
Meilleure façon de déplacer un personnage
« le: Mars 06, 2010, 08:14:41 »

Bonsoir !

Je suis confronté à un probleme, jusque là pour déplacer les autres joueurs sur le client 1, je transférais des données du type "deplacement=posX=posY=DirectionDuPersonnage" et le client se contentait de replacer le personnage à la bonne place. Mais ce système est vraiment primaire, bouffant en ressources et "moche", car il y a des "sauts" du personnage à chaque déplacement.

Je voulais savoir, vous qui avez touché à blablaland et autre, comment vous avez corrigé ce probleme. J'ai lu qu'on pouvait faire des actions du genre quand on appuie sur la touche "flèche droite", ça envoit au serveur "deplacement=droite", le personnage se déplacera donc à droite sur tous les clients, jusqu'à ce qu'on reçoive "stop" quand le joueur relache la touche.

Mon jeu est avec des déplacements du style Super Mario, avec des sauts et des chutes possibles dans le decors, des glissements du personnage sur du verglas et autre.. Comment faire, quelle solution serait la plus appropriée ?

Si vous pouviez m'aiguiller.

Merci d'avance !
Journalisée
seal3
Administrator
Hero Member
*****
Messages: 504


Voir le profil
Re: Meilleure façon de déplacer un personnage
« Répondre #1 le: Mars 06, 2010, 08:48:09 »

Salut !

Il ya deja des post pour ce genre de chose Smiley
Journalisée

Ma signature utilise un compte your-socket afin de dessiner/chatter en temps réel. Etant aussi sur media-box vous y trouverez aussi leurs membres Smiley.
<a href="http://ystutori.your-socket.com/mediabox/dessin.swf" target="_blank">http://ystutori.your-socket.com/mediabox/dessin.swf</a>
seal3
Administrator
Hero Member
*****
Messages: 504


Voir le profil
Re: Meilleure façon de déplacer un personnage
« Répondre #2 le: Mars 06, 2010, 08:53:53 »

Je complete :

Oui il faut envoyer un message d'etat, contenant les touches enfoncées et la position actuelle. Lorsque l'etat change opn renvoie la position avec le nouvel etat du clavier.

Par contre cela n'empechera pas les saut etant donné que certains messages metront 30 ms pour passer et d'autres 200ms voir plus si ya un lag. C'est la que la latence entre en jeu, il faut sunchronizer tout le monde sur la même heure et pour chaque message dire qu'ils doivent etre executés maintenant + un temps de latence, par exemple 100 ms. Le client qui recoit ce message ne l'interpretera que X ms plus tard en fonction du temps qu'il aura mis à le recevoir.
Journalisée

Ma signature utilise un compte your-socket afin de dessiner/chatter en temps réel. Etant aussi sur media-box vous y trouverez aussi leurs membres Smiley.
<a href="http://ystutori.your-socket.com/mediabox/dessin.swf" target="_blank">http://ystutori.your-socket.com/mediabox/dessin.swf</a>
loupstigrou
Newbie
*
Messages: 26


Voir le profil
Re: Meilleure façon de déplacer un personnage
« Répondre #3 le: Mars 29, 2010, 06:43:31 »

Ok ! J'ai pas trop trouvé de topic sur le net parlant du lag/latence, y'a-t-il un nom précit pour ça, car je comprend trop comment faire ?

Sinon, quelle est la meilleure méthode : on a un avatar dont la couleur est changée dynamiquement par un colorTransform. Sauf que quand le personnage va dans une direction, ce n'est pas le même dessin, en gros le clip va passer à l'image clée 2 par exemple quand il est va à droite ou à l'image 3 quand il va à gauche. Mais pour le colorTransform, il faut le refaire à chaque changement d'image dans le clip ?

Sinon, est-ce possible de faire un removeChild et addChild à chaque fois que le personnage change de sens ? Mais ça risque d'être galère de recalculer la position, la couleur, les caractéristiques à chaque changement de sens. Et il ne risque pas d'y avoir des "blancs" de 1 secondes entre le removechild et l'addchild ??

Je ne sais pas du tout comment faire :/


Journalisée
loupstigrou
Newbie
*
Messages: 26


Voir le profil
Re: Meilleure façon de déplacer un personnage
« Répondre #4 le: Avril 03, 2010, 04:20:03 »

Finalement j'ai trouvé pour les couleurs ^^

Par contre, je ne vois toujours pas comment prendre en compte la latence. As-tu un tuto sous la main ou peut tu m'expliquer en gros comment je peux coder un truc de ce genre ? :s

Merci d'avance ^^
Journalisée
seal3
Administrator
Hero Member
*****
Messages: 504


Voir le profil
Re: Meilleure façon de déplacer un personnage
« Répondre #5 le: Avril 03, 2010, 05:15:51 »

Salut !

Tu as plusieurs moyen de le faire, déja synchroniser l'heure exacte en milliseconde entre les client grace à l'heure du serveur. Un client envoie un event en indiquant à quelle heure il l'a envoyé. Le serveur retransmet aux autres clients, les clients qui recoivent, regarde l'heure d'envoie indiqué dans le message et comparent avec l'heure actuelle. Si sa ta latence est de par exemple 100 ms. Alors si le message est plus vieux de 100ms on le traite directement, sinon on le met en mémoire et on attend la frame suivante pour voir si les 100 ms sont atteint.

Pour synchroniser, perso je fais en sorte que toutes les minutes le client envoie un message particulier au serveur, le serveur repond en indiquant l'heure actuelle en millisecondes depuis janvier 1970 (heure universelle retournée par tous les systemes codés sur 8 octets), le client qui recoit ce message regarde en combien de temps le serveur à répondu, il peut donc estimer son ping et en tenir compte en divisant cette valeur par deux et la retirant de l'heure que le serveur lui donne. Je fais cette opération 5 fois de suite et je prend la difference d'heure entre l'ordi du client et celle du serveur la plus petite.
Journalisée

Ma signature utilise un compte your-socket afin de dessiner/chatter en temps réel. Etant aussi sur media-box vous y trouverez aussi leurs membres Smiley.
<a href="http://ystutori.your-socket.com/mediabox/dessin.swf" target="_blank">http://ystutori.your-socket.com/mediabox/dessin.swf</a>
Pages: [1] Imprimer 
« sujet précédent | | sujet suivant »
Aller à:  

Propulsé par MySQL Propulsé par PHP your-socket | Propulsé par SMF 1.0.5.
© 2001-2004, Lewis Media. Tous droits réservés.
XHTML 1.0 Transitionnel valide! CSS valide!

serveurs de sockets en java,perl,php,c++
serveurs de sockets en java,perl,php,c++