Académique Documents
Professionnel Documents
Culture Documents
Jean-Patrick Gelas
Université de Lyon
Octobre 2007
Jean-Patrick G elas, Université de Lyon 1 Jean-Patrick Gelas, Université de Lyon 2
Objectifs Plan
Apparition des Jeux Vidéo Multi-joueurs (JVM) Comment faire pour concevoir un système
et d'Internet il est possible de jouer avec la joueur bloqué car toutes les commandes n'ont pas
aux utilisateurs.
Jean-Patrick G elas, Université de Lyon 5 Jean-Patrick Gelas, Université de Lyon 6
Un joueur (qui se connecte sur Internet) doit Un JVM sur Internet est un jeu vidéo dont les
obtenir les même sensations que si il jouait parties se déroulent sur Internet, entre
exploiter au mieux l'accès haut-débit (ex: ADSL). Temps réel => contrainte de temps aux
maximum ? (sans forcément surcharger les les paquets contiennent les actions qu'un joueur
serveurs). effectue.
réseau.
Type 1 : FPS
Time Strategy).
la base de l'adversaire.
Type 3 : RTS
individuelle.
Soccer, etc.
centralisé).
Perception du joueur
Les joueurs ont leur propre langage qui réfère aux performances du jeu.
les réponses aux commandes doivent être Le packet loss : perte de paquets liées soit au réseau, soit à un
immédiates. serveur saturé qui ne prendrait plus en compte toutes les actions
des joueurs.
Sinon, le joueur risque de quitter la partie et Le lag : est une combinaison de latence élevée et de forte gigue.
de ne plus jamais jouer à ce jeu => problème Il n'y a plus aucune fluidité et le joueur à l'impression de perdre le
contrôle.
marketing.
Le warp : si en plus des pertes de paquet interviennent cela
le serveur.
actions des joueurs seront fonction de l'état du jeu. son environnement (la base de tout jeu temps réel).
La corrélation : les joueurs doivent être au courant
Règle 1 : Répondre immédiatement à une action effectuée par le
(Armitage, Claypool, Branch, Networking and online games: Understanding and Engineering
pour tous les joueurs donc le jeu doit préserver la
Multiplayer Internet Games, Juin 2006)
consistance des évènements. Dans le cas contraire on
Le jeu peut recevoir des informations en Les paquets transmis contiennent des
retard (obsolescence des informations). informations relatives au joueur qui les envoie.
L'état du jeu dépend donc de la corrélation état du joueur (position, santé, munitions, etc.)
entre les événements non-obsolètes. Il doit actions effectués depuis le dernier envoi de
de perte de paquets.
Jean-Patrick G elas, Université de Lyon 23 Jean-Patrick Gelas, Université de Lyon 24
Latence, gigue et taux de perte de paquets Délai de jeu fixe/adaptatif
Latence : plus elle est élevée plus le jeu Fixed playout delay : Un timestamp est
semble long a répondre. En fonction du type appliqué a tous les paquets émis. Qu'importe
de jeu une latence + ou importante est l'ordre d'arrivé dans le routeur. Le routeur
TCP ? UDP ?
La taille des informations peut dépasser celle des Permet d'envoyer les paquets le plus vite possible sans
importantes. se perdre,
Si un paquet est perdu le temps de le retransmettre arrivé en retard (et ne plus être valide).
on risque de dépasser son temps de validité. Chaque paquet devrait contenir la totalité des
Le slow-start et le mécanisme de reprise sur erreur informations et pas seulement les différences entre deux
La majorité des JVM sur Internet utilisent une La synchronisation va permettre à tous les
surcouche applicative à UDP afin d'y ajouter les
joueurs de jouer au même jeu...
fonctionnalités suivantes :
Ils doivent recevoir les mêmes actions des
gestion de priorité des données ;
autres joueurs, et en même temps.
filtrage des données redondantes ;
La sync. est un processus qui regarde les info.
fiabilité des paquets si besoin ;
contenues dans les paquets de chaque joueur
contrôle de congestion si on envoie des gros
et interprète les actions.
paquets.
Sans cela ont dit que l'état du jeu diverge.
La fiabilité du protocole est nécessaire pour gérer les
Processus de synchronisation :
se produisent en parallèle.
parallèles.
Jean-Patrick G elas, Université de Lyon 31 Jean-Patrick Gelas, Université de Lyon 32
Synchronisation
Compensation
des état/des entrées
La compensation permet d'économiser des ressources
Il existe deux principaux types de
réseaux tout en rendant le jeu plus fluide.
synchronisation :
Il existe trois type de compensation (combinables) ayant
State synchronisation : Chaque joueur envoie
chacune ses avantages et inconvénients :
toutes les informations qu'il possède sur l'état du
uniquement ses propres informations. Risque de L'utilisation de ces 3 techniques permet de rendre le jeu
divergence à cause de la latence. Adapté au jeux plus robuste aux problèmes de réseau, dans des limites
rapides. raisonnables.
que du serveur.
Compensation : Compensation :
puis compressés.
Permet de gagner en bande passante.
Permet au joueur de n'émettre et recevoir que les
peu de gigue. zone d'intérêt intersectant celle d'un autre joueur =>
auras symétriques.
Le Dead Reckoning permet La gestion du temps permet à tous joueurs d'effectuer leurs
de prédire la position d'un actions en même temps malgré la latence.
joueur dans le futur en fonction
Chaque paquet possède un timestamp qui est utilisé pour
des données dont on dispose.
remettre les paquets dans l'ordre et assurer un jeu identique à
Ex: extrapolation en fonction de la vitesse et direction tous les joueurs.
d'un joueur.
Trois mécanismes qui partent du principe que tous les joueurs
Le Dead Reckoning utilise des techniques de convergence des envoient leurs informations en même temps :
données afin de fluidifier le jeu.
Time Warp ;
Lorsqu'un nouveau paquet arrive avec les vraies valeurs, on
Optimistic Bucket Synchronization ;
calcul les positions intermédiaires pour glisser vers la
Le Time Warp sauvegarde l'état du jeu actuel (snapshot) avant La synchronisation Optimistic Bucket utilise un système de
Les deux méthodes précédentes sont inadaptés au jeux rapides Architecture pair-a-pair
(ex: FPS).
Client/Serveur
TSS utilise des méthodes de retour arrière lorsqu'il détecte des
incohérences au niveau du déroulement des actions. Serveurs distribués
Mais contrairement au Time Warp, au lieu de garder en
Serveur de session ;
mémoire plusieurs snapshots, le TSS va plutôt stocker plusieurs
copies de l'état du jeu à des moments différents. Serveur de zone ;
Relie les différents joueurs d'une même partie entre eux. Un serveur dédié gère l'état du jeu de tous les clients.
Graphe complet (chaque joueur est connecté à tous les autres Les clients ne communiquent pas directement entre eux
joueurs).
mais envoient leurs mises à jour au serveur.
Tout client (noeud du graphe) possède une copie de l'état du jeu, et
Toutes les opérations sont réalisées au niveau du serveur
envoi ses mises à jour à tous les autres clients.
(validité des ev., leur synchronisation, les algo. de
Nécessite d'avoir un algo. de synchronisation entre tous les clients
compensation, etc.)
pour garder la consistance de l'état du jeu.
Le serveur calcul le nouvel état du jeu grâce aux
Meilleur robustesse (limite le risque de défaillance d'un point unique).
informations aux informations de tous les joueurs avant
L'usage de message unicast limite le débit en fonction du nombre de
de leur renvoyer.
clients (nb. d'arêtes = (n * (n-1))/2, n clients).
Utilisés par les JVM à grande échelle (MMORPG). Les serveurs distribués peuvent être organisé entre eux suivant
deux modèles :
Ils permettent de répondre à la contrainte de ressources
Type de jeu Architecture Le multicast n'est pas utilisé dans les jeux
FPS Client/Serveur. Pair-à-Pair pour les informations peu importantes.
SPORT Pair-à-Pair
Ex: MiMaze (pacman expérimental, utilise
Reckoning)
modifier directement les informations à l'intérieur du Le speedhack permet aux joueurs de bouger plus rapidement
difficile
Les MMORPG : World of Warcraft. La majorité des jeux implémentent des méthodes adaptées à
leur type ce qui permet aux joueurs d'évoluer dans
Les RTS : Age of Empires. l'environnement virtuel en préservant la fluidité et la
consistance du jeu.
Les jeux de sport : Need for Speed.
Difficulté de maintenir un jeu stable dans une architecture
distribuée.