Socket + Synchronisation [Résolu]

Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
- - Dernière réponse : cs_emmanuel9
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
- 11 août 2009 à 15:09
Bonjour à tous,

J'ai une question technique concernant les jeux réalisés en réseaux :

Si l'on imagine un jeux en réseau de ping pong avec deux raquettes et une balle, on a deux ordinateurs représentant chacun un joueur et échangeant des informations via un serveur se trouvant sur internet et qui retransmet les informations aux deux ordinateurs.

Pour le mouvement des raquettes cela ne pose pas de problème :

[i]- le joueur 1 presse le flèche haut

- l'information est envoyé au serveur

- le serveur retransmet l'info au joueur 2/i



Mais concernant le mouvement de la balle comment garantir que les deux ordinateurs verront la même chose ?

Est-ce au serveur de calculer les mouvements de la balle et retransmettre les informations ?

Comment garantir une parfaite synchronisation dans les jeux en réseaux ?

Par avance, merci.
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
82
3
Merci
Salut,

Je pense que tout comme l'information de la raquette, l'information de la balle doit être envoyée par le client (sous forme de direction et force), et le serveur ne fait que transmettre l'information au deuxième client qui se chargera de calculer la position de la balle, sinon, si tu as un message à chaque nouvelle position de la balle, tu va consommer énormément de bande passante pour rien !
______________________________________
DarK Sidious

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 193 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
Messages postés
112
Date d'inscription
lundi 29 juin 2009
Statut
Membre
Dernière intervention
5 novembre 2009
3
Merci
Je te conseille également d'envoyer dans ton message la position de la balle le "TEMPS" !
Ce message devra être transmis à chaque changement de direction de la balle, ou périodiquement.


Imaginons qu'un packet se traine dans le réseau pour 500ms (ça peut arriver), voire que 2 packets arrivent dans un sens inverse (Cas fréquent en UDP)
Il faut garantir pour un "moteur physique" qui va faire des intégrations, que le bruit généré par l'aléa du réseau est corrigible.

Je te conseille de faire un packet ballEvent du type

class ballEvent ... {
int noBallEvent;
Point ballP;
int vX;
int vY;
}

le serveur va calculer les changements de vitesse , et la position.
Lorsque la vitesse change, il emmet aux clients le packet ballEvent.

Ce packet permet aux clients de savoir :
* la position actuelle de la balle
* les nouvelles vitesses

Si on perd un packet : pas grave, vu que le nouveau va nous renseigner sur l'état de la balle (Au bout d'un temps déterminé par le lag)

Si un packet arrive dans le mauvais ordre:
tu l'ignore: (on peut le savoir si jamais on recoit un packet aveec noBallEvent plus petit qu'un précédent)

Bonne chance !

; I'm just keeping the hopeless cross to increase the meaninglessness

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 193 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Kotomine
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
0
Merci
Merci pour la réponse.
Commenter la réponse de cs_emmanuel9
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
0
Merci
Merci beaucoup pour cette réponse si complète
Commenter la réponse de cs_emmanuel9