J'ai mis en place une architecture serveur/client, où tous les changements d'état sont envoyés à la fonction, validés et diffusés à tous les clients connectés. Cela fonctionne plutôt bien, mais le système ne maintient pas la synchronisation entre les instances clientes du jeu pour le moment.
S'il y avait un décalage de 5 secondes entre le serveur et un client particulier, celui-ci recevrait le changement d'état 5 secondes après le reste des clients, ce qui le laisserait avec un état de jeu non synchronisé. J'ai cherché différentes façons d'implémenter un système de synchronisation entre les clients mais je n'ai rien trouvé jusqu'à présent.
Je suis novice en matière de programmation réseau, et pas assez naïf pour penser que je peux inventer moi-même un système fonctionnel sans y consacrer beaucoup de temps. L'idée que j'ai eue, cependant, est de garder une sorte de système de temps, de sorte que chaque changement d'état serait connecté à un horodatage spécifique dans le jeu. De cette façon, lorsqu'un client reçoit un changement d'état, il sait exactement à quel moment du jeu le changement s'est produit, et il est capable d'établir une corrélation avec le décalage. Le problème avec cette méthode est que dans ces n Les secondes de décalage que le jeu aurait eu se poursuivraient du côté client, et donc le client devrait revenir en arrière pour mettre à jour le changement d'état, ce qui serait certainement désordonné.
Je cherche donc des articles discutant des sujets ou des algorithmes qui le résolvent. Peut-être que toute ma conception du fonctionnement du système multijoueur est défectueuse, dans le sens où l'instance de jeu d'un client ne devrait pas être mise à jour à moins que la notion ne soit reçue du serveur ? Actuellement, les clients se mettent à jour dans leur boucle de jeu en supposant que les états n'ont pas changé.
0 votes
Je crois que vous devriez reconsidérer la réponse acceptée. Havenard n'a rien dit au sujet du calcul à l'aveugle ou de toute autre technique de dissimulation du décalage utilisée aujourd'hui. Les jeux ne se contentent pas de déclarer que "les joueurs souffrant de lag doivent accepter leur condition" ; ils font un effort pour cacher le lag afin de rendre le jeu plus jouable. Après tout, si je jouais à un jeu où les gens sautaient partout et où je ne pouvais pas jouer, je quitterais ce jeu assez rapidement.