Je dois synchroniser le mouvement de plusieurs joueurs sur Internet et j'essaie de trouver le moyen le plus sûr de le faire.
Le jeu est basé sur des tuiles, vous ne pouvez vous déplacer que dans 4 directions, et chaque mouvement déplace le sprite 32px (au fil du temps bien sûr). Maintenant, si je voulais simplement envoyer cette action de déplacement au serveur, qui la diffuserait à tous les joueurs, pendant que la touche de marche est maintenue enfoncée, pour continuer à marcher, je dois prendre cette prochaine commande, l'envoyer au serveur, et à tous les clients, à temps, ou le mouvement ne sera plus fluide. J'ai vu cela dans d'autres jeux, et cela peut devenir moche assez rapidement, même sans décalage. Je me demande donc si c'est même une option viable. Cela semble être une très bonne méthode pour un seul joueur, car c'est facile, simple (il suffit de prendre l'action de mouvement suivante à temps et de l'ajouter à une liste), et vous pouvez facilement ajouter des mouvements de souris (en cliquant sur une tuile), pour ajouter un chemin d'accès à une file d'attente, c'est parcouru.
L'autre chose qui m'est venue à l'esprit était d'envoyer l'information que quelqu'un a commencé à se déplacer dans une certaine direction, et encore une fois qu'il a arrêté ou changé la direction, ainsi que la position, de sorte que le sprite apparaisse à la bonne position, ou plutôt pour que la position peut être fixée en cas de problème. Cela devrait (espérons-le) ne poser des problèmes que si quelqu'un est vraiment en retard, auquel cas il faut s'y attendre. Pour que cela fonctionne, j'ai besoin d'une sorte de file d'attente, où les changements de direction entrants et les trucs sont enregistrés, afin que le sprite sache où aller, une fois le mouvement actuel vers la tuile suivante terminé. Cela pourrait réellement fonctionner, mais semble un peu trop compliqué. Bien que ce soit la seule façon de le faire, sans risque de bégaiement. Si un changement d'arrêt ou de direction est reçu du côté client, il ' s enregistré dans une file d'attente et le caractère continue de se déplacer vers les coordonnées spécifiées, avant de s'arrêter ou de changer de direction. Si la nouvelle commande arrive trop tard, il y aura aussi du bégaiement bien sûr ...
J'ai du mal à décider d'une méthode, et je n'ai pas encore vraiment trouvé d'exemples pour cela. Mon principal problème est de garder le mouvement des tuiles en douceur, c'est pourquoi d'autres sujets concernant la synchronisation des mouvements basés sur les pixels n'aident pas trop.
Quelle est la manière "standard" de procéder?