2009.04.27.
GAming Services Platform (GASP)
Hidasi Balázs, Szendrei Gábor
Mi is a GAming Services Platform?
A CNAM párizsi egyetem CEDRIC laboratóriumának kutatási projektje
Middleware ami… ◦ nyílt forrású, ◦ tisztán Java alapú, ◦ kliens-szerver felépítésű
Megkönnyíti a… ◦ többszereplős, ◦ online, ◦ közel valósidejű
…mobiltelefonos játékok fejlesztését
GNU L-GPL licensz Az Open Mobile Alliance Games Services 1.0 (OMA GS) specifikációi alapján MIDP és DoJa J2ME profilokra
1
2009.04.27.
A környezet korlátai
Mobil hálózatok Késleltetés (ms) Sávszélesség (Kbps)
GPRS
EDGE
UMTS
> 800
> 800
> 350
20
59
384
Nagy késleltetés: FPS játékokhoz nem jó Figyelni kell a kommunikációra Kicsi sávszélesség Drága az adatátvitel
Kommunikációs protokoll: HTTP ◦ Biztosan nem korlátozza az operátor ◦ Közvetlen kapcsolat nem mindig lehet
Korlátozott alkalmazás méretek: ◦ MIDP 100-200 KB / DoJa 30 KB
Gaming middleware funkciók
Többszereplős játékokhoz Szolgáltatások Játékosoknak: hozzáférés kezelés, találkozási pont kezelése, játszótársak kezelése, toplista kezelése
Játék felügyelet részére: új játékok közzététele (frissítések is), játékosok kezelése Üzemeltetés részére: felügyelet, naplózás, terhelés megosztás
Rendszer szolgáltatások Biztonság, adatátvitel optimalizáció, terhelés elosztás, hibavédelem, perzisztencia, monitorozás, naplózás, adatbányászat…
2
2009.04.27.
A piac szereplői
Létező middleware-k mobil többeszereplős játékokhoz: ◦ Zárt forrásúak: Terraplay MOVE, Exit Games, InFusio EGE, Pixel Technologie JIVE, KayaK Interactive LIVE, Cash-U PECAN GAMING ◦ Nincsen nyílt forráskódú
Kereskedelmi platformok: ◦ Specifikus architektúrák és koncepciók Nem kompatibilis interfészek
◦ Nem lesznek hordozhatóak a játékok ◦ Nem lehetséges a platformok közötti együttműködés
◦ Szabványosítási törekvések
Szabványosítási törekvések
1999-ben a Mobile Gaming Interopérability Forum (MGIF) kezdte
MIGF beépült az Open Mobile Alliance-ba (OMA) 2002-ben
OMA ◦ 2002-ben alapította kb. 200 cég (IBM, Intel, France Telecom, Motorola, Ericsson, Siemens…) ◦ Cél: minden mobillal kapcsolatos technológiát szabványosítani ◦ A Gaming Services munkacsoport feladata a MIGF specifikációk továbbfejlesztése
3
2009.04.27.
Az OMA GS architektúra
OMA GS Adatmodell Application 1
1
0..1
MasterApplicationInstance
1
0..* ApplicationInstance 1 0..*
Actor 0..*
0..* 1
0..*
Session
1
1
ActorSession
0..*
1
User
4
2009.04.27.
GAming Services Platfom (GASP)
Történet: ◦ ◦ ◦ ◦
2008-2010: uGASP létrehozása a PLUG projekt keretein belül 2006-2008: GASP fejlődése a JETMU projekt keretein belül 2005: GASP fejlődése a JIMM projekt keretein belül 2004: A GASP projekt indítása a MEGA projekt keretein belül
Célok: ◦ OMA Gaming Services Specifikációk implementálása ◦ Nyílt forráskód ◦ Cél eszközök MIDP és Doja profilt támogató mobilok Közel valós idejű játékok
A GASP szolgáltatásai
Többszereplős játékokra kihegyezve
Szolgáltatások játékosoknak: ◦ Találkozási pont futó játékok listája, játszótársak kezelése
◦ Játék kezelés belépés, létrehozás, elindítás, megállítás, kilépés
◦ Hozzáférés kezelés bejelentkezés, jelszó
Rendszer szolgáltatások: ◦ ◦ ◦ ◦ ◦
Munkamenet kezelés Platform használati napló Hozzáférés szabályozás Felhasználó hitelesítés Platform felügyelet
5
2009.04.27.
GASP implementáció részei Adatmodell Architektúra Események modellje
Esemény típusok MooDS protokoll (kommunikáció)
GASP Adatmodell Platform 1
Database Classes
0..*
Application 1
1
0..1
MasterApplicationInstance 1
1
0..* 0..*
ApplicationInstance 1
0..* 0..*
Actor
1 0..*
Session
1
1
ActorSession
0..* 1
Rights
User
6
2009.04.27.
GASP Architektúra FirstLogin
PLATFORM REPRESENTATION
Login
Platform
Lobby
extends Join
com/calls
GASP DB
DBManager Services
Create
association
IDManager InGame Name
MasterApplicationInstance MasterApplicationInstance
GAME SERVER
StartAI
MOBILE
EndAI
OTA
GASP Client
Client Game Logic
ApplicationInstance ApplicationInstance ApplicationInstance
GASP Server
QuitAI Quit COMMUNICATION MANAGEMENT
GAMES ActorSession ETSI-ObjectWeb MobileREPRESENTATION Middleware Workshop
Server Game Logic
GASP Események •
5 eseménytípus JoinEvent
=> Egy új játékos belép
StartEvent => Játék kezdete EndEvent
=> Játék vége
QuitEvent
=> Egy játékos kilép
DataEvent => Játék közben adat érkezett egy játékostól vagy a szervertől
•
JOIN
actorSID
Username
START END QUIT actorSID DATA
actorSID
Hashtable
2 event listener típus ActorSessions (a játékosok) GASPServer (server game logic)
7
2009.04.27.
GASP Események modellje MOBILE
PLATFORM REPRESENTATION
Join(sID)
D
aSID
JoinAI
ApplicationInstance MOBILE
GAME SERVER
• listenners:Vector
• actorSessions:Vector
A
• onJoinEvent(e) • raiseEventToListenners(e) • raiseEventToActorSessions(e)
JOIN aSID4 Pseudo
JOIN
MOBILE getEvents()
aSID4 Pseudo
createAS(sID) raiseEvent(e)
InGame
B
GASP Server
ActorSession D ActorSession B
JOIN aSID4 Pseudo
Server Game Logic
raiseEvent(e) ActorSession C
MOBILE
SERVLET
C
CONTAINER
raiseEvent(e) ActorSession A
JOIN aSID4 Pseudo
GASP Események modellje modellje:: MooDS • Mobile Optimized Objects Description & Serialization (MooDS) – Cél: Kommunikáció sebességének növelése a játék közbeni adat üzenetek hosszának csökkentésével – Algoritmus: A játék objektumait érték szerint küldjük át (primitív típusokat)
gamePackage.CustomTypes
<element name=‘aSID’ type=‘short’/>
void encodeUpdate(DataOutputStream dos)
<element name=‘x ‘ type=‘int’/> <element name=‘y’ type=‘int’/>
MooDS
Update decodeUpdate(DataInputStream dis) void encodeUpdate(Hashtable h, DataOutputStream dos) Hashtable decodeData(DataInputStream dis)
…
CustomTypes.java types.xml
A kódoló/dekódoló metódusokat tartalmazó osztály
Objektum leíró fájl
8
2009.04.27.
GASP Események modellje modellje:: MooDS protok proto kol olll – Példa Update
Update
aSID:short
aSID:short
posX:int
posX:int
posY:int
posY:int
time:long
time:long
Hashtable
Hashtable
« Upd1 »
« Upd1 »
Update
Update
CustomTypes
CustomTypes
Update decodeUpdate(dis)
encodeUpdate(dos,update) void encodeData(dos,hashtable)
UPType
aSID
posX
posY
time
MooDS Bits Stream
Üzenet küldője
Hashtable decodeData(dis)
Üzenet fogadója
GASP Események modellje MooDS MooDS--el PLATFORM REPRESENTATION
ApplicationInstance • listenners:Vector • actorSessions:Vector • server:MGPServer • types:CustomTypes
MOBILE getCustomTypes()
CustomTypes
GASP Client
InGame encodedData
onDataEvent(e) putEvent(e)
Client Game Logic
CustomTypes
raiseEvent(e) • raiseEventToListenners(e) • getCustomTypes() • sendDataTo(aSID,e) • onDataEvent(e)
encodedData
GAME SERVER
GASP Server sendDataTo (aSID,e) Server Game Logic
ActorSession D getEvents()
SERVLET CONTAINER
• events:Vector
• putEvent(e) • getEvents()
9
2009.04.27.
Összefoglalás
Aktuális állapot ◦ Fejlesztés alatt spirál modell alapján ◦ Első verzió = Prototípus ◦ Folyamatban: Hálózat terhelés és gépterhelés tesztek
Jövőbeni tervek ◦ Teszteredmények alapján implementáció optimalizálás ◦ Új funkciók: Játékosok közösségeinek kezelésének továbbfejlesztése Competition kezelés, általános competition keretrendszer Többféle játék futtatási modell (automatikus, egyedi…), általános játék futtatási keretrendszer
Köszönöm a figyelmet!
10