Tutoriel Mulijoueur 1 : Introduction

3

Index

Statistiques

3,601 visites, 9,307 vues

Outils

Partager

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Compenser les conditions du réseau

Pour minimiser la bande passante et la perte de paquets, le moteur multijoueur transmet par défaut des données jusqu'à 30 fois par seconde. Les jeux sont généralement rendus à 60 images par seconde, ce qui signifie que les données ne sont envoyées que toutes les deux images environ.

Compenser les Clients

Les Clients reçoivent des données de l'hôte indiquant des données d'objet, comme leur position. S'ils se contentaient d'afficher directement ce qui a été reçu, les mouvements des objets sembleraient saccadés car ils ne sont mis à jour que toutes les deux images. Ils se déplaceraient également de manière irrégulière, les mises à jour étant sujettes à la PDV et à la perte de paquets.

Pour améliorer l'expérience de jeu, le moteur multijoueur interpole entre les mises à jour pour des valeurs telles que les coordonnées X et Y. Dans le cas des positions, le moteur interpole entre les mises à jour. Dans le cas des positions, il procède à une interpolation linéaire entre les mises à jour. Par exemple, si les données arrivent toutes les deux images, l'image qui ne reçoit pas de mise à jour utilisera une valeur située à mi-chemin entre les deux mises à jour. Cela rend le mouvement fluide à nouveau sans avoir besoin de plus de données.

Cependant, lors du rendu d'une image interpolée, la valeur suivante n'est pas encore connue, car elle arrivera dans le futur ! Au lieu d'utiliser une machine à remonter le temps, le moteur multijoueur résout ce problème en ajoutant un délai supplémentaire artificiel de 80 ms pour les Clients. Cela signifie que le moteur multijoueur peut connaître les prochaines mises à jour avant celles qu'il est en train de rendre. Même si la prochaine mise à jour est manquante en raison de la perte de paquets, il peut être en mesure d'utiliser la mise à jour suivante pour interpoler vers. Même si de mauvaises conditions de réseau signifient qu'il n'y a pas de mises à jour pendant 80 ms, le moteur peut continuer à extrapoler à partir de la direction des deux mises à jour précédentes. Il ne s'agit cependant que d'une supposition, et l'objet peut sauter si la mise à jour suivante montre que l'objet est en fait allé ailleurs.

Le moteur multijoueur vous permet d'utiliser trois modes d'interpolation possibles pour les valeurs : linéaire (comme pour les positions des objets), angulaire (comme pour les angles des objets) et aucune (pour les données qui ne doivent pas être interpolées, comme un booléen indiquant si un laser est activé ou non).

Variations de latence

Il convient de noter que la latence peut varier. Par exemple, un dispositif de routage peut être surchargé quelque part et les données entre deux joueurs sont soudainement réacheminées par un chemin différent, plus lent, ou un nouveau chemin plus rapide devient disponible. Parfois, les latences s'améliorent progressivement au cours de la première minute qui suit la connexion, car les dispositifs situés le long de la route de connexion optimisent progressivement la connexion et déterminent le chemin le plus rapide possible. La latence est constamment remesurée pour détecter ces variations.

Si la latence diminue, le moteur multijoueur exécute temporairement le jeu avec une très légère avance rapide afin de réduire le retard que vous avez sur le jeu. En revanche, si le temps de latence augmente, le moteur multijoueur ralentit très légèrement le jeu et augmente la distance à laquelle vous voyez le jeu. Cela est nécessaire pour éviter le mouvement irrégulier et haché qui se produit lorsque le délai de 80 ms ne couvre plus aucune mise à jour. Ces adaptations doivent se produire assez lentement pour être imperceptibles, mais elles permettent de garantir la meilleure expérience possible même si la qualité de la connexion varie au cours du jeu.

Compenser pour l'hôte

L'hôte possède la version du jeu qui fait autorité. Il bénéficie d'une latence nulle, puisqu'il n'a pas besoin de se transmettre des données. En d'autres termes, l'hôte participe au "vrai" jeu, et les Clients font de leur mieux pour restituer le même jeu avec des mises à jour retardées et éventuellement irrégulières de la part de l'hôte. L'hôte bénéficie donc d'un léger avantage en matière de jeu.

On pourrait penser que l'hôte devrait interpoler entre les mises à jour de la position des objets reçues des Clients. En fait, cela ne se produit pas, car les Clients ne doivent pas dire à l'hôte où ils se trouvent. En fait, c'est l'hôte qui doit dire aux Clients où ils se trouvent. La raison en est expliquée dans la section suivante.

  • 0 Comments

  • Order by
Want to leave a comment? Login or Register an account!