Jeu vidéo: Doom (Étude de cas)

Transcription

Jeu vidéo: Doom (Étude de cas)
Jeu vidéo: Doom
(Étude de cas)
Luc Trudeau
L’ÉTS est une constituante du réseau
de l'Université du Québec
Département de génie logiciel
et des technologies de
l’information
Montréal, Québec, Canada
Doom (Étude de cas)
Objectifs d’apprentissage
L Trudeau
•  Expliquer la solution originale pour le
multijoueur de Doom et en comprendre les
faiblesses
2
Département de génie logiciel et des technologies de l’informa5on Doom (Étude de cas)
Historique
L Trudeau
Selon Wikipédia, Doom (1993) est l’un
des premiers jeux à fournir un mode
multijoueur sur un réseau local.
3
Département de génie logiciel et des technologies de l’informa5on Doom (Étude de cas)
Historique
L Trudeau
Cependant, le module multijoueur de Doom est
passé à l’histoire, mais pour une autre raison
4
Département de génie logiciel et des technologies de l’informa5on Doom (Étude de cas)
Network Meltdown
L Trudeau
n. A state of complete network overload; the network equivalent of thrashing.
Network meltdown is often a result of network designs that are optimized for a
steady state of moderate load and don't cope well with the very jagged, bursty usage
patterns of the real world.
…
One amusing instance of this is triggered by the popular and very bloody
shoot-'em-up game Doom on the PC. When used in multiplayer mode over a
network, the game uses broadcast packets to inform other machines when
bullets are fired. This causes problems with weapons like the chain gun
which fire rapidly -- it can blast the network into a meltdown state just as
easily as it shreds opposing monsters.
Ref: http://www.definitions.net/definition/network%20meltdown
5
Département de génie logiciel et des technologies de l’informa5on Doom (Étude de cas)
L Trudeau
The very first release of the original Doom game on the
PC used broadcast IPX packets for LAN networking.
This seemed logical, because broadcast packets for a
network game of N players has a packet count of just N
packets on the network each tic, since everyone hears
each packet. The night after we released the
game, I was woken up by a call from a
college sysadmin yelling at me for
crippling their entire network. I didn't
have an unlisted number at the time.
Ref : http://fabiensanglard.net/doomIphone/Doom%20Classic.htm
6
Département de génie logiciel et des technologies de l’informa5on Doom (Étude de cas)
Question
L Trudeau
Quelle est l’architecture sur laquelle est fondé le
protocole de communication de Doom?
Pair-à-Pair
Où chaque client à un lien vers
l’ensemble des autres Clients.
7
Département de génie logiciel et des technologies de l’informa5on Doom (Étude de cas)
Structure d’une commande
L Trudeau
L’architecture réseau de Doom, Heretic et Hexen est de type pair-à-pair. Chaque
joueur est un pair, indépendant, qui exécute sa propre version du jeu.
Périodiquement (à chaque 1/35 de seconde), les commandes de chaque joueur sont
échantillonnées et insérées dans une commande Tic. Cette structure simple
encapsule l’action du joueur (mouvement avant arrière, de coté, l’angle de vue et
l’action d’utiliser ou de tirer)
8
Département de génie logiciel et des technologies de l’informa5on Doom (Étude de cas)
Lockstep
L Trudeau
La fonction NetUpdate, du fichier « d_net.c », est particulièrement importante. Elle
vérifie s’il faut générer une nouvelle commande Tic. Pour assurer la jouabilité, cette
fonction est appelée fréquemment, même dans le code de rendu graphique. La
fonction TryRunTics vérifie si suffisamment de commandes Tic ont été reçues de tous
les joueurs pour faire avancer le jeu.
int nettics[MAXNETNODES]; //The last tic command received from each player.
ticcmd_t netcmds[MAXPLAYERS][BACKUPTICS]; //This is a circular buffer into which
received tic commands are placed. A maximum of BACKUPTICS (usually 12) tic
commands can be queued.
ticcmd_t localcmds[BACKUPTICS]; //Locally generated tic commands. These are
stored in a circular buffer.
int gametic; //The next game tic to be run.
9
Département de génie logiciel et des technologies de l’informa5on Doom (Étude de cas)
Structure d’un paquet
L Trudeau
La composante réseau vérifie périodiquement pour de nouveaux paquets. Les commandes Tic
provenant des autres joueurs sont stockées dans un tampon. Lorsque les commandes tic de
tous les joueurs sont reçues, les boucles de jeu effectuent un certain nombre d’itérations.
Le protocole utilisé par Doom est basé sur les acquittements négatifs. Chaque paquet inclut un
nombre de commandes Tic et le numéro de la première commande Tic. Si le paquet reçu n’est
pas celui attendu, on suppose qu’il y a eu perte de paquet et une demande de retransmission
est envoyée à l’émetteur.
10
Département de génie logiciel et des technologies de l’informa5on Doom (Étude de cas)
L Trudeau
Réseau pair-à-pair
Augmentation exponentielle du nombre de
paquets (P) en fonction du nombre de joueurs
(N)
P = N × (N −1)
Pour chaque itération de la boucle de jeu
11
Département de génie logiciel et des technologies de l’informa5on