Je crée mon premier jeu en ligne en utilisant socket.io, et j'aimerais que ce soit un jeu multijoueur en temps réel comme agar.io ou diep.io.
Mais j'ai rencontré le problème d'essayer de comprendre comment faire fonctionner tous les ordinateurs à la même vitesse.
J'ai trois idées de modèles, mais aucune ne me semble juste, et je me demande comment les jeux vidéo normaux le font. (Vous pouvez sauter la lecture de mes idées; elles vous donnent juste un moyen de voir les problèmes que j'ai.)
Le serveur permet aux clients de s'exécuter de leur propre chef et de transmettre les mises à jour au serveur, qui les diffuse ensuite au reste des clients. Cela a pour problème que certains ordinateurs fonctionnent plus rapidement que d'autres, ce qui les laisse se mettre à jour plus rapidement et se déplacer plus rapidement sur l'écran.
Demandez au serveur de dire aux clients quand mettre à jour. Je peux ensuite attendre que le dernier client réponde (une idée terrible au cas où une personne a un ordinateur lent), attendre que le premier client réponde (encore une fois, attendre la communication avant chaque trame), ou simplement les envoyer le plus rapidement possible (ce qui semble rencontrer le même problème que le numéro 1).
Au début du jeu, demandez au serveur d'indiquer aux clients la rapidité de la mise à jour. Cela signifierait que le client serait responsable de restreindre les déplacements entre cette période. Par exemple, si quelqu'un réussit à appuyer sur un bouton deux fois au cours de cette période, il n'enverra qu'un événement de pression sur un bouton. Cela pose le problème que certaines actions seraient ignorées (telles que la double pression sur un bouton) et que l'interaction dépendrait de l'horloge du client, qui pourrait ne pas correspondre à celle du serveur. Le serveur devra alors garder une trace de chaque client et s'assurer que leurs mises à jour sont soumises au bon moment.
J'ai fait quelques recherches , mais les articles que j'ai lus ne semblent pas aborder spécifiquement ce qu'il faut faire si un client envoie des mises à jour plus rapidement que les autres clients.
Dans mon cas particulier, j'ai affaire à des gens qui ont des vitesses de clavier plus rapides (leur ordinateur enverrait plus de mises à jour de clavier que les autres ordinateurs).
Comment les programmeurs gèrent-ils généralement cela?