J'aimerais mettre un terme à un petit jeu commencé il y a fort longtemps. C'est un jeu de type pong, multijoueur avec une baballe qu'il faut empécher de rentrer dans son camp tout en attaquant les autres avec des armes, bonus et autres effets divers sur la balle, sur les raquettes de ses adversaires etc ...
Pour le moment, le jeu est multijoueur, ordi + humains, mais sur une seule et meme machine. Autant dire que l'aspect réseau serait un enorme plus. Mais tout ce que j'ai fait jusqu'à présent fut ... merdique au niveau de la jouabilité.
Mon problème ne touche pas à l'ouverture de connexion réseau, ni a l'envoie de paquets aux autres machines, mais plutot à la stratégie à adopter pour que toutes les machines voient exactement le meme plateau de jeu au meme instant. Le jeu va assez vite et le moindre écrart (retard de réception de paquet par ex) a des conséquences sur le jeu.
Jusqu'a présent, je me suis contenté de désigner une machine serveur, et des clients. Les clients recoivent du serveur la position de tous les objets du jeu, balle y compris et n'effectuent aucun calcul. Ils se contentent d'afficher ce que leur envoie le serveur, et envoie les actions réalisés par le joueur local.
Cette stratégie est bien sur pourrie (mais j'ai essayé qd meme ) : à cause de la différence de latence entre les différentes machines, les objets recus par les clients ne sont pas en phase à un meme instant t. Meme sur un réseau local on voit la différence.
J'ai essayé aussi de n'envoyer aux clients qu'une seule fois la position des objets, puis de les laisser calculer le reste jusqu'à la fin de la partie. Ca résoud pas mal de pb mais il y en a encore : imaginez que le joueur local bouge sa raquete et repousse la balle, le temps que l'information "bouge la raquette" atteigne les autres joueurs (client local -> serveur -> autres joueurs), le rebond aura eu lieu chez le client local et pas chez les autres ... => le jeu se désynchronise et ca devient trés amusant ("T'as perdu, t'as raté la balle !" "Non, je te l'ai renvoyé et toi t'as pas bougé, t'as perdu !!!" ...)
J'ai essayé d'autres trucs, qui sont plus de l'ordre de la bidouille, sans jamais arriver à un résultats satisfaisant.
bref, en gros, je ne sais pas comment résoudre ce pb. Vous avez des idéees ?
Vous connaissez un tutoriel qui traite de l'aspect synchronisation dans le jeux en réseau? J'ai déjà fait pas mal de recherche, mais c'est toujours trés obscur (j'ai lu beaucoup de choses sur des histoires de prédiction de position ... sans vraiment comprendre).