Title: INF4715 Ingnierie des applications multimdia interactives
1INF4715 Ingénierie des applications multimédia
interactives
Jean-Noé Morissette Carlos Valcarcel
jean-noe.morissette_at_polymtl.ca carlos.valcarcel_at_po
lymtl.ca
2Multiple joueurs
- Jeux consoles 5.2 milliardJeux PC 1.1
milliardJeux consoles (portables) 1.0
milliard(rapport pour lannée 2004 du
Entertainment Software Association (ESA) ) - 24 millions consoles XBOX vendues (fin 2005,
pcvsconsole.com) - 101.37 millions console PS2 vendues(fin 2005,
pcvsconsole.com) - 43 des gamers jouent en ligne!!!(estimé du ESA,
une hausse de 31 depuis 2002)
3Concepts de base
- Peer-to-PeerChaque poste joue un rôle client et
de serveur. Cest-à-dire que chaque poste offre
des services, ainsi que chaque poste peut
profiter des services offert par un autre.
Le poste A peut utiliser limprimante du poste B.
Dans ce cas, le poste A est un client du poste
B. Mais linverse est aussi possible.
4Concepts de base
- Client-ServeurUn poste, le serveur, gère toutes
les ressources et a le dernier mot sur tout. Les
autres postes peuvent interagir avec le serveur
suivant les règles établies par ce dernier.
5Concepts de base
- Commnication dactions vs communication
détatsAction Transmettre les actions dun
joueur aux autres (first person shooter).État
Transmettre les changements détat aux autres
(Massively Multiplayer Online Role Playing Game).
6Concepts de base
- Une façon de réduire votre charge de travail
cest de sassurer que votre équipe travaille
AVEC vous et non CONTRE vous.Pour réussir, il
faut un système simple que les autres
programmeurs nhésiteront pas à utiliser.Mais
comment réussir à mettre au point un système qui
fera du travail compliqué mais offrira un
interface simple à la surface?
7COUCHEÔ
- On cache le code de bas niveau en lisolant sous
différentes couches logicielles.
Système de messagerie Système simple et
compréhensible pour facilité la mise en réseau
des systèmes des fonctionnalités de lengin.
Permet aux autres programmeurs de nous faciliter
la tâche.
Module de réseau prend les fonctionnalités de
bas niveau et offre un jeu simplifié de
commandes. Fait le lien entre la couche réseau
et le style de lengin.
Code de bas niveau Packets, protocols,
connections, pertes, vitesse
8Prise de décision
- Il faut déterminer qui prend les
décisions.Exemple-Jeu de rôle où on joue à
tour de rôle-Architecture Peer-to-Peer-La
machine à qui sest le tour prend les décisions
Tour 1Action Joueur 1 attaque le joueur 2 et
lui cause 2 points de dommage.Réseau Machine
1 informe toutes les autres que joueur 2 perd 2
points de vie.
Tour 2Action Joueur 2 se guérit.Réseau
Machine 2 informe toutes les autres que joueur 2
regagne ses points de vie.
9Problème potentiel
- Si personne ne sassume, il pourrait y avoir des
problèmes.
Au même momentMise en situation Dans un jeu de
guerre, deux joueurs sadonnent à un face à
face!
Sur la machine 1Action Le joueur 1 tire sur
le joueur 2 et il est malheureusement
décédé.Réseau Il envoie le message aux autres
que le joueur 2 est mort.
Sur la machine 2Action Le joueur 2 tire sur
le joueur 1 et il est malheureusement
décédé.Réseau Il envoie le message aux autres
que le joueur 1 est mort.
10Problème potentiel (suite)
- La machine 1 déclare le joueur 2 comme étant mort
et reçoit ensuite le message que le joueur 2
vient de le tuer. - La cohérence de la partie est compromise.
- Sur la machine 1, quelle animation doit jouer sur
le joueur 2? Un sous-marin qui tire, ou un
sous-marin qui coule?
11UDP vs TCP
- UDP (User Datagram Protocol) On nest pas
certain que linformation va se rendre Ni de
lordre dans laquelle elle arrivera Mais si
tout se passe bien, ce sera rapide!(environ 32
bits dentête) - TCP (Transmission Control Protocol) Protocol
qui assure la réception et lordre de
linformation, il peut même distinguer le type
dinformation pour une même destination.(environ
192 bits dentête) - Dans le domaine du jeu, les deux peuvent être
utiles
12UDP vs TCP (exemple)
- On peut envoyer la position du joueur à tous les
secondes et en sauter une de temps en temps. - Si le joueur allume les lumières de son
sous-marin, alors il est important que le message
se rende, car on ne le répétera pas.
13Comment être efficace
- Il y a des solutions mathématiques ou des
techniques de programmation.Ex. Un vecteur
unitaire peut être envoyé avec deux angles plutôt
que trois composantes (X,Y,Z).Ex. Envoyer un
quaternion au lieu dune matrice de
rotation.Ex. Compacter les données dans un
champ de bits plutôt que denvoyer plusieurs
booléennes. - Il y a des solutions logiques.Ex. Le serveur
envoie un message de simulation pour dire quun
joueur a tiré. Le serveur envoie ensuite un
message de statistique pour indiquer le nouveau
décompte. On pourrait remplacer le tout par un
seul message.
14Comment être efficace (suite)
- Il y a des compromis.Ex. Lorsquon tire un
projectile, plutôt quenvoyer une direction, un
point dimpact et la normale de limpact, il est
possible de seulement envoyer la direction et
recalculer le point dimpact et la normale
dimpact sur chaque client. - Bien balancer entre le nombre de messages et la
grosseur des messages.
15Conseils
- Mettre sur place un système troué que les autres
programmeurs sauront utiliser (système détats). - Isolé le joueur réel de son entité dans la
simulation. - Approche itérative dabord ça fonctionne,
ensuite ce sera rapide. - Les concepts de base demeurent vrais couvrir
ses arrières, Data Driven Design, et tous les
autres classiques!