EA2012-Plateformes de jeux mobiles multijoueurs

=Plateformes de jeux mobiles multi-joueurs= Auteurs de la présentation et de la page: Léopold Dauvergne et Florian Lévêque.

Resumé :
Depuis quelques années, le marché du mobile (téléphones et tablettes) constitue un enjeu économique important. Avec l’évolution ultra-rapide des matériels, un appareil mobile peut offrir des fonctionnalités de divertissement en plus de celles de communications. Cette évolution permet d’envisager le développement de jeux multi-joueurs possédant des fonctionnalités équivalent à celui d’une console ou d’un ordinateur, au niveau du rendu visuel, performances et intelligences de jeu principalement (les interactions étant plus difficile sur mobile).

Il est alors nécessaire de développer des plateformes et des frameworks qui vont contrôler et offrir les services nécessaires à des jeux multi-joueurs. Ces "systèmes distribués" étant soumis à des contraintes importantes, les différents acteurs du marché doivent utiliser des méthodes innovantes & performantes ainsi qu'une architecture robuste pour pouvoir répondre à la demande.

Summary :
Since few years the mobile market has become the biggest IT market worldwide. With the fast growing evolution of hardware, a mobile device is now able to provide advanced entertaining features besides the basic communications ones to the end user. This evolution allow the development of multi-players games with as good quality as computers games or dedicated gaming platforms. With as good visual quality, playability and IA system than the IT standards.

It became necessary so create platforms and frameworks that would offer the convenient services it order to provide reliable multi-players mobile games. This basic "distributed systems" are often facing huge loads with a lot of quality requirements. The different companies on the market have to use new innovative methods along with better plateform architecture in order to answer to the growing demand.

Le multi-joueurs sur mobile
Dès le début de l'informatique, différents jeu multijoueurs sont apparus. En voici une sélection, plateforme par plateforme:

Anciens systèmes:

Empire, PLATO 1973 : Il s'agit d'un jeu multijoueur connu pour tourner sur le système PLATO. Il était le précurseur des jeux multijoueurs.

Ordinateur: Spectre, Apple 1991 : Jeu basé multijoueur basé sur le protocole AppleTalk, pour les plateformes Apple, multijoueur jusqu'a 8 personnes.

Doom, PC 1993: Premier HIT sur PC, multijoueur possible jusqu’à 4 joueurs (sur WAN/LAN)

EverQuest, PC 1999: Premier MMORPG ayant eu un franc succès, développé par Sony.

Consoles: Duke Nukem 3D, Sega 1996: Jeu jouable en réseau grâce à la technologie Sega Netlink, qui peut fonctionner soit en mode P2P, soit en mode client-serveur.

Mobiles: Snake, Nokia (6110) 1997: Premier jeu sur mobile jouable en réseau (par infrarouge) entre Nokia 6110 notamment.

Badlands, 3 Mobile 2005: Premier jeu multijoueur fonctionnant sur réseau 3G.

Angry Birds Magic, Rovio 2011: Premier jeu permettant de partager du contenu par NFC, en l’occurrence, pour débloquer des niveaux.

Pourquoi Mobile ?
Le mobile est en pleine extension et il est dès à présent le support le plus possédé et utilisé comme attestent les statistiques ci dessous (d'après Ericson):

- 6.5 Milliards d’abonnements mobiles (Fin 2012)

- 3.4 Milliards d’abonnements 3G (2015)

- 80% des connexions à Internet via mobile (2015)

Nous assistons donc a un vrai engouement autour du mobile et plus particulièrement des smartphones comme l'atteste le graphique ci dessous:



De ces données, nous pouvons analyser que :

- Le mobile est le support le plus possédé, et la part de smartphones ne cesse d'augmenter.

- Le mobile est de plus en plus puissant:


 * Nokia « Asha »: 1Ghz ou plus, destiné aux marchés émergents, <100€


 * Google Nexxus 4: Quadcore 1.5Ghz, 2GB Ram, 300€

Il y a donc une convergence des caractéristiques matérielle entre les différents supports PC, Console et mobile. Il sera donc possible d'avoir le même jeu tournant sur toutes ces plateformes. Pour arriver à produire des jeux multiplateformes de qualité, il faut réussir a implémenter une couche d'abstraction entre le matériel et le logiciel. C'est là qu'interviennent les plateformes de jeux multijoueurs.

Les plateformes de jeux multijoueurs répondent donc à un besoin d'unification / standardisation des différentes architectures & OS. Pour arriver à cela, il y à d'abord eu un développement des framworks, tel Qt (qui peut se compiler pour Symbian, Meego, SailFish,BB10, Android). Puis des plateformes ont commencé à émerger (exemples: Terraplay Move, uGasp, SmartFoxServer, Photon de ExitGames, Electrotank).

Problèmes et contraintes liés aux plateformes
Cependant, le développement de jeux multi joueurs sur mobile constitue un réel challenge technologique, il y a beaucoup de contraintes et de difficultés liées aux services fournis par les plateformes. Le design et l’utilisation d’une plateforme de jeux multi-joueurs pour mobile ressemble à un système distribué à grande échelle. En effet, elle possède de fortes contraintes en termes de connectivité réseau, de synchronisation, de charge réseau ou machine … Nous allons vous expliquer quelques contraintes importantes dont une très importante.

- Persistance des données

La mobilité des utilisateurs et leurs utilisations d’un téléphone mobile peuvent créer des problèmes par rapport à la connexion/déconnexion fréquente ou des sauvegardes fréquentes. Il est alors impératif de sauvegarder l’état courant de la session de jeu au moment de la déconnexion. Il faut alors créer un mécanisme de sauvegarde ultra léger et efficace pour éviter d’être trop lourd pour le mobile et pour les serveurs de stockage.

- Routage des données

Un trafic des données cohérent sur le réseau est la base du bon fonctionnement afin d’éviter une surcharge réseau ou machine. Une plateforme doit donc posséder des mécanismes performants de gestion du trafic réseau, en implémentant des algorithmes de routage efficaces. Il faut éviter d’ajouter une surcharge réseau lié à un mauvais routage et une latence liée à l’algorithme de routage.

- Détection d’erreurs/ Résistance aux fautes

Les machines utilisées pour gérer l’exécution des sessions de jeu, la gestion du trafic des données ou d’autres services associés aux jeux peuvent être amenées à tomber en panne. Une plateforme se doit de fournir des fonctionnalités de qualité de services et de disponibilité pour les utilisateurs. Les utilisateurs, qui payent un abonnement pour pouvoir jouer sur son mobile, ne peuvent tolérer des pannes systèmes en cours de partie et des indisponibilités de service fréquentes. Il est donc nécessaire d’être capable de détecter et d’anticiper les crashs des machines de la plateforme. Il faut donc mettre en place des mécanismes de détection d’erreurs. Cependant, comme toutes les erreurs ne peuvent pas être anticipées. Des mécanismes de résistance aux fautes sont mis en place, un système qui va crasher pour une raison quelconque va être capable de réamorcer son exécution à partir de sauvegardes antérieurs au crash.

- Sécurité

Ce type de plateforme doit être parfaitement sécurisée afin de protéger les droits digitaux des jeux, de limiter l’accès aux utilisateurs enregistrés ou encore afin d’éviter les attaques malveillantes.

- Latence

Par définition, la latence est le temps nécessaire à un paquet de données pour aller de la source à la destination à travers un réseau. Nous remarquons qu’il y a une première latence lié à la transmission sur le réseau pour aller d’un joueur au serveur. Ensuite il y a un temps de calcul du serveur pour effectuer le routage puis un deuxième retard pour transférer les données sur la destination.

La latence peut créer des problèmes de cohérence de jeux liés au retard des données entre deux joueurs. L’utilisateur va donc avoir un ressenti désagréable sur le jeu car il y aura des comportements illogiques.

La latence doit donc être minimale pour conserver une bonne expérience de jeu, sans délai entre la commande effectuée par le joueur et le traitement de celle-ci sur le serveur et les autres joueurs.

Différents principes peuvent être appliqués pour éviter les problèmes liés à la latence:

- Méthodes de prédiction

Le Dead Reckoning est une méthode permettant de prédire un nouvel état des entités du jeu grâce aux informations courantes (position, vitesse, évènements,…). Par exemple, Grâce à la position courante et à la trajectoire de l’objet, il est possible de définir une nouvelle position.

Chaque application est capable de gérer localement les états au moyen de prédiction et de réception des mises à jour d’état. Le Dead reckoning est particulièrement efficace lorsque le déplacement d’un objet est soumis à des règles que l’on peut prédire. Par exemple, une voiture suit des lois physiques et ne peut pas avoir un comportement aléatoire brutalement. Cette méthode est donc inutilisable lorsque les changements sont brutaux.

- Méthodes de synchronisation

Le Trailing State Synchronisation permet d’avoir une synchronisation forte. En effet, elle utilise des mécanismes qui exécutent les évènements au fur et à mesure de leur apparition même si un évènement antérieur aurait pu arriver. Ils effectuent des retours en arrière pour réparer les inconsistances nécessaires.

Par exemple, ici il y a une réception d’un message avec l’estampille 175 ms, cependant l’état courant est à plus de 200 ms. Il va donc falloir repartir depuis l’estampille reçue et exécuter tous les évènements accélérés jusqu’à arriver à l’estampille courante. Cette méthode ne peut pas être utilisée dans un jeu en temps réel car il faut « revenir en arrière ».

Nous remarquons qu’il y a beaucoup de contraintes liées aux plateformes et au principe du jeu sur mobile. En effet, les solutions ne sont pas parfaites et nécessitent beaucoup de ressources différentes pour avoir une exécution le plus correct possible.

Les acteurs
- Open Mobile Alliance

C’est un organisme de standardisation formé par différentes entreprises comme IBM, AT&T, Nokia. Le but est de développer des standards ouverts pour l'industrie des téléphones mobiles. Ils ont donc défini une architecture pour les plateformes de jeux afin d’homogénéiser toutes les technologies mobiles. Cette architecture est séparée en 3 couches distinctes : - La couche réseau qui gère les connections avec les terminaux - La couche de jeu qui est l'environnement d'exécuter des algorithmes liés aux jeux - La couche service qui gère les différents services fournis aux utilisateurs

Il y a aussi une connexion vers des systèmes de sauvegardes et bases de données.

- SmartFoxServer

Leader sur le marché, il fournit une solution multiplateforme. Il est possible de jouer sur différents terminaux grâce à cette solution. Leur architecture est basée sur le principe client/serveur.

- Photon de ExitGames

Comme SmartFox, c’est une solution multiplateforme basée sur une architecture client/serveur. Cependant ils fournissent un cloud où il est possible laisser la gestion de la plateforme serveur à Photon.

- uGasp

C’est la seule solution OpenSource qui implémente les spécifications des services de jeux défini par l’OMA. Cependant, elle n’est compatible qu’avec des terminaux Android et J2ME.

Conclusion
•	Nouvelles méthodes d’interaction

Les solutions existantes sont déjà capables de gérer des milliers de clients en parallèle.

Une autre solution est le Cloud Gaming. Le principe est d’exécuter le jeu sur un serveur distant et seulement l’affichage est renvoyé aux terminaux. Pour l’instant, cette solution est appliquée à des jeux vidéo sur console qui possède moins de contraintes liés à la puissance des consoles mais aussi à la connexion à Internet qui est souvent beaucoup plus rapide qu’une connexion mobile (en attendant la 4G).

Demo
Comme première démo, nous avons utilisé un jeu de pong entre Nokia N9 fonctionnant par NFC et Bluetooth, voici l'archive du projet, appartenant à Nokia : http://air.imag.fr/mediawiki/images/0/0b/Bttennis.tar

Voici les deux téléphones avant de lancer le jeu :



Les deux instances du jeu sont lancés, mais elles ne sont pas synchronisées:



On archive le link NFC en rapprochant les deux téléphones (vous pouvez voir le "touch to play" sur l'écran).



Les deux téléphones sont reliés, le lien Bluetooth est activé (vous pouvez le voir à l'écran)



Et les deux parties sont synchronisées en une seule:



Et voila, très simple d'utilisation grâce au NFC !