GASP: un intergiciel pour les jeux en réseaux multijoueurs sur téléphones mobiles



Documents pareils
Encadré par : Michel SIMATIC

Mobile Gaming Services Services pour les jeux multijoueurs sur mobiles

Manuel d installation de l application Dimona New via SMS

Machine virtuelle Java pour Palm TX

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

La technologie Java Card TM

Remote Method Invocation (RMI)

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Introduction aux applications réparties

Mise en œuvre des serveurs d application

Mini-projet systèmes & réseau serveur de «tchatche»

Internets. Informatique de l Internet: le(s) Internet(s) Composantes de l internet R3LR RENATER

Grid Technology. ActiveMQ pour le grand collisionneur de hadrons (LHC) Lionel Cons Grid Technology Group Information Technology Department

Le service FTP. M.BOUABID, Page 1 sur 5

DUT Informatique Module Système S4 C Département Informatique 2009 / Travaux Pratiques n o 5 : Sockets Stream

2. DIFFÉRENTS TYPES DE RÉSEAUX

Application web de gestion de comptes en banques

Projet Active Object

Applications distribuées: le retour du client "riche"

Patrons de Conception (Design Patterns)

1. Introduction à la distribution des traitements et des données

Le passage à l échelle de serveur J2EE : le cas des EJB

Programmation de services en téléphonie sur IP

Refonte front-office / back-office - Architecture & Conception -

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

UE 8 Systèmes d information de gestion Le programme

Serveurs de noms Protocoles HTTP et FTP

JOnAS Day 5.1. Clustering

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Tutorial Terminal Server sous

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

La carte à puce. Jean-Philippe Babau

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

JOnAS 5. Serveur d application d

PROGRAMME DETAILLE. Parcours en première année en apprentissage. Travail personnel CC + ET réseaux

MQPerf un outil de diagnostic en mode SaaS des performances optimales du MOM JORAM

Remote Method Invocation Les classes implémentant Serializable

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

SITE WEB E-COMMERCE ET VENTE A DISTANCE

Java pour le Web. Cours Java - F. Michel

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

La sécurité informatique d'un centre d imagerie médicale Les conseils de la CNIL. Dr Hervé LECLET. Santopta

L3 informatique TP n o 2 : Les applications réseau

SugarCubes. Jean-Ferdinand Susini Maître de Conférences, CNAM Chaire systèmes enfouis et embarqués. Paris, le 9 janvier, 2009

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Cloud et SOA La présence du Cloud révolutionne-t-elle l approche SOA?

TP2 : Client d une BDD SqlServer

Architecture distribuée

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

GPC Computer Science

25 septembre Migration des accès au Registre national en protocole X.25 vers le protocole TCP/IP, pour les utilisateurs du Registre national

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

2X ThinClientServer Guide d utilisation

Les Content Delivery Network (CDN)

Déploiement de l iphone et de l ipad Gestion des appareils mobiles (MDM)

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction

Dispositif e-learning déployé sur les postes de travail

SPECIFICATION ET DESCRIPTION DU MULTICAST FIABLE DANS ETOILE

M Études et développement informatique

Cisco Certified Network Associate

Diagramme de déploiement

Initiation à JAVA et à la programmation objet.

Introduction aux «Services Web»

EP60.92 Projet d application pluridisciplinaire La chasse aux trésors

Augmenter la disponibilité des applications JEE grâce au clustering : Le projet open source JShaft

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et

Chapitre 3 : Les technologies de la communication. I- Les TIC de la PME

OpenPaaS Le réseau social d'entreprise

Services RDS de Windows Server 2012 R2 Remote Desktop Services : Installation et administration

Chapitre 1 Windows Server

Bases Java - Eclipse / Netbeans

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Projet Sécurité des SI

Module BD et sites WEB

CQP Développeur Nouvelles Technologies (DNT)

Architecture BIGBLUEBUTTON Groupe BigBlueButton - Sénégal

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Vulgarisation Java EE Java EE, c est quoi?

Solutions de gestion de la sécurité Livre blanc

Network musical jammin

Plate formes mobiles. Utilisation. Contexte 9/29/2010 IFC 2. Deux utilisations assez distinctes :

Cédric Ouvry Bibliothèque nationale de France Liberty Alliance Deployment Workshop Paris December 7, 2005

Installation ou mise à jour du logiciel système Fiery

EA D S INNOVA TION W ORKS. Mobilité et sécurité. Nicolas RUFF nicolas.ruff [à] eads.net

Gestion distribuée (par sockets) de banque en Java

LES ACCES ODBC AVEC LE SYSTEME SAS

Programmation C. Apprendre à développer des programmes simples dans le langage C

Windows Server 2012 Les bases indispensables pour administrer et configurer votre serveur

Installation du client

NFP111 Systèmes et Applications Réparties

Systèmes répartis. Fabrice Rossi Université Paris-IX Dauphine. Systèmes répartis p.1/49

Disponibilité et fiabilité des services et des systèmes

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Compte Rendu d intégration d application

Transcription:

GASP: un intergiciel pour les jeux en réseaux multijoueurs sur téléphones mobiles PELLERIN Romain Projet de Recherche: CNAM-Cedric, GET-INT et InfraWorlds

Plan 1. Le jeu sur mobile 2. Le jeu multijoueur sur mobile 3. Fonctionnalités d une plateforme de jeux 4. Etat de l art des plateformes de jeux pour mobile 5. Gaming Services Platform (GASP) Modèle de données Architecture Interfaces Modèle Evénementiel Protocole MooDS 6. Conclusion et Perspectives CNAM Page 2

1. Le jeu sur mobile Langages de développement sur mobile C++ / SymbianOS Java (J2ME) CLDC MIDP 1.0 et 2.0 POUR CONTRE DoJa 1.5 et 2.5 CDC Personal Java CNAM Page 3

1. Le jeu sur mobile (2) Environnements de développement PROGRAMMATION EMULATION C++ / SymbianOS Java (J2ME) CLDC MIDP 1.0 et 2.0 DoJa 1.5 et 2.5 CDC Personal Java CNAM Page 4

1. Le jeu sur mobile (3) Java 2 Micro Edition (J2ME) MIDP / DoJa Personal Java CLDC CDC KVM JVM CNAM Page 5

1. Le jeu sur mobile (4) Contraintes de développement en MIDP et DoJa Machines virtuelles allégées (pas de FPU: ni float, ni double) Capacités d exécution réduites Librairies Java réduites ou expurgées (ex: pas de sérialisation d objets) Limitation en termes de taille de code (.jar) MIDP : 100-200 Ko DoJa: 30 Ko impossibilité d embarquer des APIs propriétaires lourdes. Limitation en termes de taille de ressources (graphismes, sons, maps, ) MIDP : 4Mo en 1.0, toute la mémoire disponible du téléphone en 2.0 DoJa: 100 Ko en 1.5, 200Ko en 2.5 CNAM Page 6

1. Le jeu sur mobile (5) Guidelines pour le développement sur mobile Réduction de la taille du code Limiter le nombre de classes dès la conception (gourmand en code) Obfusquer son code (ex: utiliser ProGuard) réécriture des identificateurs au plus court (variables, fonctions) in-lining des constantes suppression des codes morts Eviter l utilisation des packages Sortir les constantes du code => utilisation de fichiers binaires Amélioration des performances Réduire au strict minimum l instanciation d objets (new), malloc et garbage collector déficients Limiter le nombre de threads, implémentations variables en fonction des KVM CNAM Page 7

1. Le jeu sur mobile (6) Modélisation typique d un jeu sur mobile J2ME App étend Midlet/IAppli 1 1 Moteur étend Canvas 1 * Acteur Classe spécifique Gestion du cycle de vie de l application (1) Calcul du tour Gestion des Collisions Gestion des acteurs Gestion du monde Comportements des acteurs : - avatar du joueur - acteur contrôlé par la logique jeu. Traitements des interactions IHM Accès aux ressources (2) (3) Affichage du monde (paint) Ecouteurs évènements clavier 3 threads: exécution de la logique de jeu (1) paint (2) écouteurs d évènements clavier (3) CNAM Page 8

2. Le jeu multijoueur sur mobile Contraintes des réseaux de téléphonie 2/2.5/3G Latence élevée (dépendante des conditions du réseau) GPRS/EDGE: > 800 ms UMTS: > 350 ms Faible bande passante (dépendante des conditions du réseau) GPRS: 20 (down) / 20 (up) Kbps EDGE: 59 (down) / 59 (up) Kbps UMTS: 384 (down) / 384 (up) Kbps Pas d'adressage IP => pas de connexion serveur vers client possible CNAM Page 9

2. Le jeu multijoueur sur mobile (2) Contraintes protocolaires en MIDP et DoJa Protocoles réseaux utilisables au niveau applicatif: HTTP (MIDP 1.0/2.0 et DoJa 1.5/2.5) HTTPS (MIDP 2.0 et DoJa 1.5/2.5) Sockets (MIDP, utilisation controlée par l opérateur) le seul protocole «universel» sur téléphone java: HTTP CNAM Page 10

2. Le jeu multijoueur sur mobile (3) Impact sur le développement de jeux multijoueurs sur mobile Pas d adressage IP => modèle client-serveur Utilisation du protocole HTTP => requêtes périodiques du client vers le serveur pour être informer des évènements du jeu & stockage côté serveur des évènements. Optimisation requise du protocole d échange de messages: minimiser la consommation de bande passante et améliorer la vitesse de transmission tout en contrôlant les coûts (facturation au Ko). Optimisation requise de la taille de code réservée à l interface cliente de l intergiciel. Types de jeux multijoueurs envisageables sur ces réseaux: Tour par tour RTS «Real Time Strategy» => jeux d action temps réel irréalisables (ex: FPS «First Person Shooter» ou simulation), temps réel maximal acceptable ~ 200ms CNAM Page 11

2. Le jeu multijoueur sur mobile (4) Modélisation typique sur mobile J2ME App étend Midlet/IAppli Classe spécifique Gestion du cycle de vie de l application 1 1 (1) (2) (3) Moteur étend Canvas Calcul du cycle Gestion des Collisions Gestion des acteurs Gestion du monde Traitements des interactions IHM Acces aux ressources Affichage du monde (paint) Ecouteurs évènements clavier 1 * 1 1 (4) Acteur Comportements des acteurs : -avatar du joueur - avatars des joueurs distants - acteur contrôlé par la logique jeu. Communication Dialogue avec la logique serveur du jeu Envoi/Réception de messages 4 threads: exécution de la logique de jeu (1) paint (2) écouteurs d évènements clavier (3) communications (4) Réseau CNAM Page 12

3. Fonctionnalités d une plateforme de jeux Services support des jeux pour: Joueurs: gestion du compte, récupération des sessions de jeux «lobby», gestion des amis «buddy», gestion des scores Editeurs: publication des jeux (incluant les mises à jour), gestion des joueurs, gestion des compétitions Administrateurs systèmes: supervision, logging, répartition de charge Services systèmes Securité, optimisation des échanges de données, équilibrage de charge, tolérance aux fautes, persistance des données, monitoring, logging, data mining CNAM Page 13

3. Etat de l art des plateformes de jeu pour mobile Nombreuses plateformes propriétaires (Terraplay Move, InFusio EGE, mformat ) Aucune plateforme open source Problèmes liés aux spécificités des architectures propriétaires Clients Connecteurs Connect. Message Connect. HTTP Connect. Tps réel Plateforme conforme spéc OMA Interopérabilité plateformes Interface externe - fortes contraintes jeu - non intéropérabilité normalisation du domaine Environnement d exécution de jeu Jeu conforme spéc OMA Jeu conforme spéc OMA Normalisation: Open Mobile Alliance (2002), groupe de travail «Games Services» [OMA GS] - architecture générale (ci-contre) - spécifications fonctionnelles Services généraux & Spécifiques aux jeux Système d information Autorisation Authentification Gestion Abonnés Gestion session Mesures Gestion score Application Facturation Gestion équipe Orga. match... Gestion Joueurs Portée OMA Frontière plateforme CNAM Page 14

4. GASP «GAming Services Platform» Objectifs Implanter les spécifications des services pour les jeux de l OMA GS Open source (implémentation Java) Cibles Mobiles J2ME, profils MIDP et Doja Jeux «pseudo» temps réel (protocole HTTP sur 2/2.5/3G) Petits éditeurs Prise en compte des contraintes de développement des jeux sur mobile (taille du code, taille des messages échangés) CNAM Page 15

4.1. GASP: Modèle de données Platform 1 Application 1 0..1 0..* MasterApplicationInstance 1 1 1 0..* 0..* ApplicationInstance 1 0..* Actor 1 0..* Session 1 1 0..* ActorSession 0..* 1 Rights User Base de données Classes CNAM Page 16

4.2. GASP: Architecture FirstLogin Login REPRESENTATION PLATEFORME Platform étend com/appel Lobby Join Services DBManager GASP DB association Create IDManager InGame MOBILE Name StartAI MasterApplicationInstance MasterApplicationInstance SERVEUR DE JEU GASP Client OTA EndAI QuitAI ApplicationInstance ApplicationInstance ApplicationInstance GASP Server Logique cliente de jeu Quit GESTION DES COMMUNICATIONS ActorSession REPRESENTATION SESSIONS DE JEU Logique serveur de jeu

4.3. GASP: Interfaces org.mega.gasp.client.gaspclient Rôle int firstlogin(int userid, int username, String pwd) int login(int actorid, String username, String pwd) Vector getapplicationinstances (int sessionid) int joinai (int sessionid, int appinstanceid) int joinairnd (int sessionid) int createai (int sessionid, int min, int max) int createaipriv (int sessionid, int min, int max, Vector actors) String name(int actorsessionid, String pseudo) void getevents(int actorsessionid) void startai(int actorsessionid) void senddata(int actorsessionid, Hashtable data) void endai(int actorsessionid) void quitai(int actorsessionid) void quit (int sessionid) Première connexion Connexion à la plateforme Récupération des sessions de jeu Rejoindre une session Rejoindre aléatoirement une session Créer une session Créer une session privée Changer de pseudonyme Récupération des évênements Démarrer la partie Envoyer des données Arrêter la partie Quitter la partie Déconnexion de la plateforme CNAM Page 18

4.3. GASP: Interfaces (2) org.mega.gasp.server.gaspserver Rôle void onjoinevent(joinevent je) void onquitevent(quitevent qe) void onstartevent(startevent se) void onendevent(endevent ee) void senddatato (int actorsessionid, DataEvent de) void ondataevent(dataevent de) JoinEvent listenner QuitEvent listenner StartEvent listenner EndEvent listenner Envoyer des données à un joueur DataEvent listenner CNAM Page 19

4.4 GASP: Modèle Evénementiel 5 types d événements: JoinEvent => un nouveau joueur rejoint la partie StartEvent => début de la partie EndEvent => fin de la partie QuitEvent => un joueur quitte la partie DataEvent => données envoyées en cours de jeu par un joueur ou par la logique serveur du jeu 3 types d écouteurs d événements: ApplicationInstance (session de jeu) ActorSessions (les joueurs) GASPServer (l interface étendue par la logique serveur du jeu) JOIN actorsid Username START END QUIT actorsid DATA actorsid Hashtable CNAM Page 20

4.4. GASP: Modèle Evènementiel (2) MOBILE REPRESENTATION PLATEFORME D Join?sID asid JoinAI onjoinevent(e) ApplicationInstance MOBILE A JOIN asid4 Pseudo MOBILE B JOIN asid4 Pseudo getevents() getevents() InGame createas(sid) ActorSession D raiseevent(e) listenners:vector actorsessions:vector onjoinevent(e) raiseeventtolistenners(e) raiseeventtoactorsessions(e) JOIN asid4 Pseudo raiseevent (e) raiseevent(e) ActorSession B SERVEUR DE JEU GASP Server Logique serveur du jeu MOBILE getevents() getevents() ActorSession C raiseevent(e) ActorSession A C CONTENEUR JOIN asid4 Pseudo DE SERVLETS

4.5. GASP : Protocole MooDS Mobile Optimized Objects Description & Serialization (MooDS) But: améliorer la vitesse de communication en réduisant la taille des messages de données transférées en cours de jeu Algorithme: transférer les objets messages du jeu par valeur (types primitifs) <types> <type name= Update > <element name= asid type= short /> <element name= x type= int /> <element name= y type= int /> <table name= t type= double > <row/> </table> </type> </type> types.xml Fichier de description de types d objets transférés en cours de jeu MooDS Generator gamepackage.customtypes void encodeupdate(dataoutputstream dos) Update decodeupdate(datainputstream dis) void encodedata(hashtable h, DataOutputStream dos) Hashtable decodedata(datainputstream dis) CustomTypes.java Classe incluant les méthodes d encodage/décodage des objets décris CNAM Page 22

4.5. GASP : Protocole MooDS (2) Update asid:short posx:int posy:int time:long Update asid:short posx:int posy:int Time:long «Upd1» Update Hashtable «Upd1» Update Hashtable CustomTypes encodeupdate(dos,update) void encodedata(dos,hashtable) UPType asid posx posy time CustomTypes Update decodeupdate(dis) Hashtable decodedata(dis) Emétteur MooDS Bits Stream Destinataire CNAM Page 23

4.5. GASP : Protocole MooDS (3) REPRESENTATION PLATEFORME ApplicationInstance SERVEUR MOBILE listenners:vector actorsessions:vector server:mgpserver types:customtypes DE JEU CustomTypes CustomTypes GASP Client encodeddata encodeddata InGame getcustomtypes() ondataevent(e) raiseeventtolistenners(e) getcustomtypes() senddatato(asid,e) ondataevent(e) raiseevent(e) senddatato (asid,e) GASP Server Logique cliente de jeu getevents() ActorSession D events:vector putevent(e) Logique serveur du jeu CONTENEUR putevent(e) getevents() DE SERVLETS

5. Conclusion & Perspectives GASP est une plateforme Java open source dédiée aux jeux multijoueurs en ligne sur mobile Statut Développement selon le modèle en spirale Première version = Prototype Prototype d un jeu Doja reposant sur GASP dans le cadre du projet JIMM Publication open source via le consortium ObjectWeb depuis Juin 2005 Perspectives Nouvelles fonctionnalités: Gestion accrue des communautés de joueurs Gestion des compétitions, réflexion sur un canevas générique de création de compétition Réflexion sur les modèles d exécution des jeux (automatique, propriétaire, ), canevas générique de modèles d exécution Persistance de données (pour le moment déléguée à la logique serveur) Interfaçage avec les services du fournisseur de contenu (compte utilisateur, ) CNAM Page 25

Bibliographie [1] http://www.openmobilealliance.org/tech/wg_committees/gs.html [2] R. Pellerin. GAming Services Platform, Plateforme pour les jeux multijoueurs sur mobiles. Rapport Master Recherche (DEA). CNAM- Cedric/INT/Paris 6. Septembre 2004 (http://bscw.enstbretagne.fr/pub/bscw.cgi/0/2731016) [3] R. Pellerin. Mobile Gaming Services, Services pour les jeux multijoueurs sur mobiles. Rapport Bibliograhique. CNAM-Cedric/INT/Paris 6. Juin 2004 (http://bscw.enst-bretagne.fr/pub/bscw.cgi/0/2731016) CNAM Page 26