Je crée un jeu de course simple (vaisseaux spatiaux, sans gravité) en utilisant p2.js, phaser et node.js.
Ce que j'ai fait: le client reçoit l'état mondial du serveur:
- extrapoler d'autres joueurs en fonction de la dernière vitesse / position du serveur
- vérifier si la prédiction côté client était correcte - si aucune position d'application du serveur et des entrées de processus dont le serveur n'était pas au courant.
- étape de physique fixe
Serveur:
- reçoit les commentaires des clients et postule
- étape de physique fixe
- envoie l'état du monde à chaque client
Maintenant, je lutte avec des collisions entre joueurs. Le joueur en collision saute tout le temps pendant la collision. Je pense que c'est parce que la prédiction côté client ne calcule pas des résultats similaires au serveur.
Le serveur ne connaît pas toutes les entrées du lecteur (décalage).
Le joueur n'a pas la même position de collision avec le serveur que le serveur (décalage).
La combinaison de ces deux rend le client pour résoudre la collision différent du serveur et lorsque l'état du monde arrive, le joueur doit faire une grosse correction.