Vous êtes sur la page 1sur 14

Sources

 “Jeux vidéo multijoueurs sur Internet”, Cédric Levy-Bencheton,

Jeux vidéo multi-joueurs Déc. 2006.

et  “Aspects of Networking in Multiplayer Computer Games”, Jouni


Smed, Timo Kaukoranta, Harri Hakonen, 2002.
contraintes réseaux
 “Networking and Online games – Understanding and

engineering multiplayer Internet games”, Grenville Armitage,


Mark Claypool, Philip Branch, Ed. Wiley 2006.

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

 Connaître les contraintes auxquels un  Introduction

développeur de jeu vidéo est soumis.  Les différents type de jeux


 Introduction aux techniques employées pour  Notions importantes
répondre aux exigences des joueurs.
 Synchronisation, compensation et gestion du
 Nous n'étudions pas dans ce cours les jeux au
temps.
tour par tour (ex: poker, golf, etc.) ni les jeux
 Architectures des serveurs.
utilisant la technologie Flash (surcouche

graphique au protocole HTTP).  La triche !

Jean-Patrick G elas, Université de Lyon 3 Jean-Patrick Gelas, Université de Lyon 4


Introduction Problématiques

 Apparition des Jeux Vidéo Multi-joueurs (JVM)  Comment faire pour concevoir un système

au milieu des années 90. capable de gérer plus de 7 millions de joueurs

 simultanément ? (ex: WoW)


Avec l'apparition des ordinateurs personnels

et d'Internet il est possible de jouer avec la – joueur bloqué car toutes les commandes n'ont pas

été prisent en compte.


planète entière !
– mauvaise synchronisation des joueurs les uns par

rapport aux autres (ex: courses de voiture).

 Nécessiter d'utiliser des techniques qui

rendent les contraintes réseaux transparentes

aux utilisateurs.
Jean-Patrick G elas, Université de Lyon 5 Jean-Patrick Gelas, Université de Lyon 6

Objectifs de base Contrainte temporelle

 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

seul sur son ordinateur. plusieurs joueurs humains, en temps réel.

– exploiter au mieux l'accès haut-débit (ex: ADSL).  Temps réel => contrainte de temps aux

 Comment garantir une interactivité paquets circulant sur le réseau.

maximum ? (sans forcément surcharger les – les paquets contiennent les actions qu'un joueur

serveurs). effectue.

 – si le paquet arrive en retard ou pas du tout, il est


Quels sont les protocoles de communication
ignoré.
adaptés ?

Jean-Patrick G elas, Université de Lyon 7 Jean-Patrick Gelas, Université de Lyon 8


Différents types de jeux vidéo
Type 1 : FPS
multi-joueurs sur Internet
 On distingue ici 4 types de JVM sur Internet.

  Jeux de tir à la première personne (FPS – First


Chaque type de jeu a un ou plusieurs
Person Shooter).
paramètres critiques au niveau du réseau :

–  Jeux d'actions rapides.


latence (latency) ;

– gigue (jitter) ;  Ex: Counter Strike, Quake,

– débit (throughput) ; Unreal Tournament, etc.

– architecture des serveurs ou interconnexion

réseau.

 Paramètre critique : la latence.

Jean-Patrick G elas, Université de Lyon 9 Jean-Patrick Gelas, Université de Lyon 10

Type 1 : FPS

Jean-Patrick G elas, Université de Lyon 11


Type 2 : MMORPG
Type 3 : RTS

 Jeux de stratégie temps réel


World of Warcraft (STR ou en anglais RTS – Real

Time Strategy).

 Le joueur contrôle un grand

nombre d'unité et doit détruire

la base de l'adversaire.

 Ex: Age of Empires, Warcraft 3, etc.

 Paramètre critique : la bande passante étant

donné la grande quantité d'informations a

transmettre en même temps.


Jean-Patrick G elas, Université de Lyon 13 Jean-Patrick Gelas, Université de Lyon 14

Type 3 : RTS

Age of Empire Type 4 : Jeux de sport/course

 Dans ce type de jeux les joueurs se concentre

principalement sur leur performance

individuelle.

 Ex: Need for Speed, Fifa et Pro Evolution

Soccer, etc.

 Paramètre critique : L'architecture

d'interconnexion des joueurs (pair-à-pair ou

centralisé).

Jean-Patrick G elas, Université de Lyon 15 Jean-Patrick Gelas, Université de Lyon 16


Temps de réponse maximum pour
Type 4 : Jeux de sport/course
chaque type de jeu

Latence non ressentie La tence toleree Latence limite Jeu


Type de jeu
Jouabilite parfaite Jeu jo uable injouable

FPS <=150ms 150 a 200ms > 200ms

MMORPG <=200ms 200 a 500ms >500ms

RTS <=250ms 250 a 500ms > 500ms

SPORT <=100ms 100 a 200ms > 500ms

D'après une étude de Sugih Jamin (“Latency Limitation”, Networking Playing

Games, p.26, EECS 494, Octobre 2006).

Jean-Patrick G elas, Université de Lyon 17 Jean-Patrick Gelas, Université de Lyon 18

Facteur humain Facteur humain (suite)

 Perception du joueur
Les joueurs ont leur propre langage qui réfère aux performances du jeu.

– Le ping : c'est la latence, le temps que met un paquet pour


– le jeu doit paraître fluide et
arriver à destination.

– 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

cause le warp. Le joueur est téléporté en fonction des paquets par

le serveur.

– Un cheat est une méthode de triche...

Jean-Patrick G elas, Université de Lyon 19 Jean-Patrick Gelas, Université de Lyon 20


Notions importantes
L'état du jeu
Notions importantes dont dépend l'état du jeu :

 Il dépend des informations envoyées par les clients. Toutes les


– Le principe d'interactivité qui consiste à réagir a

actions des joueurs seront fonction de l'état du jeu. son environnement (la base de tout jeu temps réel).

 La fluidité du jeu est donc nécessaire.


Quatre règles que tout JVM doit respecter :

–
– La corrélation : les joueurs doivent être au courant
Règle 1 : Répondre immédiatement à une action effectuée par le

joueur en local. des informations des autres joueurs, pour cela on

regroupe les informations qui ont lieu en même temps


– Règle 2 : Garantir la prise en compte des mise-à-jour dans l'ordre.
entre elles.
– Règle 3 : Prendre en compte deux actions simultanées.
– La consistance : s'ajoute à la corrélation a cause des
– Règle 4 : Garantir un temps physique identique chez tous les
problèmes inhérents au réseau, certaines info.
joueurs.
peuvent arriver en retard. Le jeu doit être le même

(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

dit que le jeu diverge (nécessité alors d'appliquer des


Jean-Patrick G elas, Université de Lyon 21 Jean-Patrick Gelas, Université de Lyon 22
mécanismes de corrections).

Notions importantes (suite) Que transmettre ?

 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

être consistent. paquet (tirer, sauter, etc.)

 En fonction du jeu, ces informations peuvent

être plus ou moins conséquentes.

 La transmission de ces paquets est sensible a

plusieurs paramètres : latence, gigue et taux

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

admise. attend un temps fixe avant de les

 Gigue retransmettre dans l'ordre du timestamp, en


: si importante elle influe sur la fluidité
conservant le délai d'origine.
du jeu. Possibilité de la réduire avec de la QoS

(cf. diapo suivante).  Adaptative playout delay : La gigue est

 Taux de perte estimé à l'arrivée du paquet, on calcul alors le


: fonction de l'engorgement
délai adapté avant de retransmettre le
du réseau ou d'un serveur saturé qui rejette
paquet.
les paquets.
Jean-Patrick G elas, Université de Lyon 25 Jean-Patrick Gelas, Université de Lyon 26

Comment transmettre les paquets ? Comment transmettre les paquets ?

TCP ? UDP ?

 La taille des informations peut dépasser celle des  Permet d'envoyer les paquets le plus vite possible sans

paquets. tenir compte de leur bonne réception.

  Nécessité de tenir compte du fait qu'un paquet peut :


TCP adapté pour le transfère de données

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

actions => consommation de BP importante.


désavantage TCP pour le développement des jeux en

réseaux.  Une alternative consiste a envoyer à intervalle régulier

des coordonnées absolues, puis entre chaque intervalle,

d'envoyer uniquement les différences avec l'état


Jean-Patrick G elas, Université de Lyon 27
précédent. Jean-Patrick Gelas, Université de Lyon 28
Comment transmettre les paquets ?
Synchronisation
UDP “fiable” ?

 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

événements importants (ex: tir de sniper).  La synchronisation est sensible à la latence et


Jean-Patrick G elas, Université de Lyon 29
à la gigue. Jean-Patrick Gelas, Université de Lyon 30

Synchronisation (suite) Synchronisation

Processus de synchronisation :

 Les paquets des autres joueurs arrivent de


sérialisation d'événements qui

se produisent en parallèle.

façon concurrente. Pour que tous les joueurs

voient le même jeu, on introduit une

sérialisation des évènements.

 On a besoin d'un processus qui va

synchroniser les évènements à intervalle

régulier (cf. diapo suivante).

 La synchronisation dans un JVM est le

processus qui sérialise des évènements source : Aspects of Networking in

Mulit player Computer Gam es.

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

jeu. Le jeu ne diverge pas mais cela nécessite un


– Compression et agrégation des paquets ;

débit réseau et une puissance de calcul important. – Gestion d'intérêt ;

– Input synchronisation : Chaque joueur envoie – Prédiction (Dead reckoning).

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.

 Elles peuvent s'appliquer aussi bien au niveau du client


Jean-Patrick G elas, Université de Lyon 33 Jean-Patrick Gelas, Université de Lyon 34

que du serveur.

Compensation : Compensation :

Compression et agrégation de paquets Gestion d'intérêt

 La compression et l'agrégation de paquets se

fait avant leur envoi.

 Les paquets de même types sont regroupés

puis compressés.

 Permet de gagner en bande passante.
Permet au joueur de n'émettre et recevoir que les

données concernant directement son sous-ensemble de


 Augmente la latence mais n'entraîne pas ou l'état global.

peu de gigue. – zone d'intérêt intersectant celle d'un autre joueur =>

auras symétriques.

– vision des joueurs (focus) => zones asymétriques.

Jean-Patrick G elas, Université de Lyon 35 Jean-Patrick Gelas, Université de Lyon 36


Compensation :

Prédiction (Dead Reckoning) Gestion du temps

 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

position réelle : c'est l'interpolation. – Trailing State Synchronization.

 La prédiction permet une amélioration de la fluidité, même

avec des paquets perdus. Trop de perte causent le warp (les


Jean-Patrick G elas, Université de Lyon 37 Jean-Patrick Gelas, Université de Lyon 38

joueurs se téléportent à l'écran du joueur).

Gestion du temps : Gestion du temps :

Time Warp Optimistic Bucket Synchronization

 Le Time Warp sauvegarde l'état du jeu actuel (snapshot) avant  La synchronisation Optimistic Bucket utilise un système de

de prendre en compte un nouvel événement (ev. A). Si un jetons.


nouvel événement (ev. B), plus ancien est reçu après
 Les ev. sont stockés pendant un certain temps avant d'être
l'événement A, le time warp effectue un retour arrière
ordonnés et pris en compte.
(rollback) pour prendre en compte l'événement B.
 La durée du délai doit empêcher qu'un événement arrive après
 Le retour arrière va d'abord restaurer un snapshot avant que
son intervalle d'exécution.
l'événement B se produise. Puis, tous les états du jeu sont
recalculés, avec l'événement B exécuté au bon endroit.  Pas de rollback, le paquet est simplement détruit. Des algo. de
prédiction sont utilisés pour compenser ces problèmes.
 Inconvénient : la consommation mémoire puisqu'il faut faire un
snapshot a chaque arrivée d'un nouvel événement.

Jean-Patrick G elas, Université de Lyon 39 Jean-Patrick Gelas, Université de Lyon 40


Gestion du temps :

Architecture des serveurs


Trailing State Synchronization (TSS)

 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 ;

– Ainsi pas de problèmes de charge mémoire et – Serveur miroir.


CPU.

Jean-Patrick G elas, Université de Lyon 41 Jean-Patrick Gelas, Université de Lyon 42

Architecture pair-a-pair Architecture Client/Serveur

 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).

 Architecture la plus courante dans les jeux commerciaux.


 Cette architecture se limite aux jeux avec peu de joueurs dans une

partie (ex: jeux de sport).

Jean-Patrick G elas, Université de Lyon 43 Jean-Patrick Gelas, Université de Lyon 44


Serveurs distribués Gestion de serveurs distribués

 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

limitées en permettant aux joueurs de différents pays de jouer – pair-a-pair ;


ensemble.
– arbre.
 Il existe trois modèles de serveurs distribués :  Quel que soit le modèle choisi, des méthodes de
– Serveur de sessions : chaque serveur maintient une session du jeu. synchronisation adaptées doivent être utilisé pour gérer la

– consistance des états de jeu distribués.


Serveur de zone : adapté au jeux à grande échelles. Chaque serveur
gère une zone du jeu. Lorsqu'un joueur quitte un serveur pour une

autre zone il y a synchronisation entre les deux serveurs.

– Serveur miroir : reprend le même état du jeu sur plusieurs serveurs


en simultanés. Les clients jouent tous au même jeu mais sont

connectés sur plusieurs serveurs différents.

Jean-Patrick G elas, Université de Lyon 45 Jean-Patrick Gelas, Université de Lyon 46

Architecture/Type de jeu Multicast

Type de jeu Architecture  Le multicast n'est pas utilisé dans les jeux
FPS Client/Serveur. Pair-à-Pair pour les informations peu importantes.

MMORPG Distribuée mixte miroir + zone


vidéo commerciaux.
RTS Pair-à-Pair

SPORT Pair-à-Pair
 Ex: MiMaze (pacman expérimental, utilise

RTP/UDP, Bucket Synchronization, Dead

Reckoning)

Jean-Patrick G elas, Université de Lyon 47 Jean-Patrick Gelas, Université de Lyon 48


La triche... :-( La triche : Quelques exemples

 Il existe des méthodes qui utilisent les


 Différents cheats sont utilisés en fonction des jeux.

informations circulant sur le réseau. – RTS : Où se situe la base de son adversaire ?

– – FPS : Viser plus facilement sans subir de dommage.


Lorsque le client envoie ses informations sous
 L'aimbot permet de viser automatiquement les joueurs
forme de snapshot réguliers le tricheur peut influer
adverses dans la tête. La détection est faite statistiquement
dessus. Plusieurs techniques :
(ex: > 80% de tirs dans la tête et le joueur est exclu).
 modifier le temps d'émission (timestamp) de ce snapshot
 Le wallhack permet de voir à travers les murs.
(look ahead ou suppress-correct cheat).

 modifier directement les informations à l'intérieur du  Le speedhack permet aux joueurs de bouger plus rapidement

snapshot. que les autres joueurs en modifiant le timestamp des paquets

et sa propre position, le serveur va constamment modifier le


dead reckoning associé au tricheur.

Jean-Patrick G elas, Université de Lyon 49 Jean-Patrick Gelas, Université de Lyon 50

La triche : Quelques exemples La triche : solutions au niveau réseau

 Rendre le décryptage des données du jeu beaucoup plus

difficile

– fonction de hashage ou/et

– l'ajout de bits inutiles rend les opérations de reverse

engineering plus difficile...

 Empêcher les joueurs de modifier leurs informations de temps :

– Le LockStep Protocol interdit aux joueurs de voir les mouvements des

adversaires avant l'envoi de ses propres mouvements.

– Le Pipelined LockStep Protocol (PLS) permet au joueurs d'envoyer


leurs données au premier hash reçu.

– L'Adaptative Pipeline Protocol permet de réguler le framerate du

serveur associé à chaque joueur.

Jean-Patrick G elas, Université de Lyon 51 Jean-Patrick Gelas, Université de Lyon 52


Quelques exemples de JVM Conclusions
 Pour que le jeu soit le plus à jour possible, il faut donc envoyer
 Les FPS : Quake et Half-Life 2 (Counter Strike des paquets à des intervalles régulier aussi courts que
possible. Mais il faut aussi garantir que les paquets importants
Source).
arrivent à destination.

 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.

 Les jeux de sport ont peu d'informations à gérer mais doivent

les transmettre rapidement.

 Les jeux vidéo en réseaux utilisent majoritairement UDP.


Jean-Patrick G elas, Université de Lyon 53 Jean-Patrick Gelas, Université de Lyon 54

Vous aimerez peut-être aussi