Je pense créer un jeu multi-joueurs sur le web en Node.js . Cela signifie que j'utiliserai le même langage dans le backend et dans le frontend. Il s'agirait d'un projet en temps réel, avec une vingtaine de personnes maximum dans chaque "salle", et j'ai donc quelques idées :
-
Comment compenser le retard entre tous les utilisateurs pour que chacun voie la même chose au même moment ? Je pense suivre le temps de ping moyen de chaque joueur, trouver le plus lent, et informer les autres clients du temps (en millisecondes) dont ils doivent être retardés chacun pour que tout le monde soit aussi synchronisé que possible.
-
J'envisage de faire tourner le code du jeu dans le backend ainsi que dans le frontend (puisque c'est du JavaScript aux deux extrémités) et d'avoir juste un mécanisme de correction d'erreur pour se synchroniser avec le "vrai jeu" dans le backend. De cette façon, le jeu devrait se dérouler sans problème sur le front-end et avec seulement quelques pépins lorsque la synchronisation se produit. Cela minimiserait également le piratage JavaScript en front-end puisque les tricheurs seraient synchronisés avec le jeu en back-end.
-
Dois-je recevoir les actions des joueurs via le socket (pressions sur les touches), informer tous les autres clients des actions des autres joueurs et, pendant ce temps, "jouer" le jeu dans le backend et envoyer des informations de synchronisation à tout le monde sur l'état complet du jeu de temps en temps pour les synchroniser ?
Qu'en pensez-vous ? Y a-t-il d'autres éléments que je devrais prendre en considération ou auxquels je devrais prêter attention ?
Veuillez poster toute réflexion ou tout lien vers de la documentation ou des articles concernant les jeux multi-joueurs.
EDIT : Ceux-ci sont utiles :
- Gaffer sur les jeux - Très bons articles de Glenn Fiedler sur la mise en réseau et la physique des jeux multi-joueurs
- Le modèle de réseau de Quake3