Je ne connais pas de solution idéale, et j'ai un sentiment que l'on n'existe pas. Même si vous pouviez prédire avec précision la position du véhicule, vous seriez incapable de prévoir la manière dont l'utilisateur va actionner les commandes. Donc le problème revient donc à minimiser les effets négatifs de client/serveur lag. Avec cela à l'esprit, je l'approche de ce à partir de la position de principe de moindre étonnement (reformulation de Wikipedia):
Dans la conception de l'interface utilisateur, le principe de moindre étonnement (ou surprise) précise que, si deux éléments d'une interface de conflit, ou sont ambigus, le comportement devrait être celui qui sera le moins surprenant de l'utilisateur au moment du conflit.
Dans votre exemple, chaque utilisateur voit les deux véhicules. Leur propre, et que d'un autre joueur. L'utilisateur s'attend à leur propre véhicule pour se comporter exactement de la manière dont ils ont le contrôle, de sorte que nous sommes incapables de jouer avec cet aspect de la simulation. Toutefois, l'utilisateur ne peut pas savoir exactement comment l'autre utilisateur a le contrôle de leur véhicule, et je voudrais utiliser cette ambiguïté pour masquer le gal de l'utilisateur.
Voici l'idée de base:
- Le serveur doit prendre la décision au sujet de l'imminence d'une collision. L'algorithme de détection de collision n'a pas à être parfait à 100%, il a juste à être assez près pour éviter les incohérences évidentes.
- Une fois que le serveur a déterminé que les deux véhicules entrent en collision, il envoie chacun des deux utilisateurs, un message indiquant qu'une collision est imminente.
- Sur Un client, la position du véhicule B est ajusté (réaliste) pour garantir que la collision se produit.
- Sur le client B, la position du véhicule est ajustée (réaliste) pour garantir que la collision se produit.
- À la suite de la collision, la position de chaque véhicule peut être ajusté, au besoin, de sorte que le résultat final est en harmonie avec le reste du jeu. Cette partie est exactement ce que MedicineMan proposé dans sa réponse.
De cette manière, chaque utilisateur est toujours en contrôle de leur propre véhicule. Lorsque la collision se produit, il ne sera pas inattendu. Chaque utilisateur va voir de l'autre véhicule se déplace vers eux, et ils auront tout de même le sentiment d'une simulation en temps réel. La bonne chose est que cette méthode réagit bien dans les bas-lag conditions. Si les deux clients ont une faible latence des connexions au serveur, le montant de l'ajustement sera petit. Le résultat final sera, bien sûr, de s'aggraver à mesure que le décalage augmente, mais qui est inévitable. Si quelqu'un est de la lecture d'un fast-paced action de jeu sur une connexion avec plusieurs secondes de retard, ils ne sont tout simplement pas allez obtenir la pleine expérience.