Text Frequency 1550 A location-based multi-user mobile game
Waag Society is a knowledge institute operating on the cutting edge of culture and technology in relation to society, education, government and industry. www.waag.org Just van den Broecke, freelance software developer specialized in object technology, networking, Java and multimedia. just@justobjects.nl www.justobjects.nl Intro
Presentation Subjects Project - motivation, context, initiators, timeline Concepts - game elements - architecture - multi-user protocols - J2ME client - Bluetooth programming with JSR-82 - location-based with GPS Intro
Context Participants - Waag Society: initiator + concept/technology developer - IVKO Montessori: concept + educational content - KPN Mobile: sponsoring (EUR), UMTS + phones - Freelance developers Timeline - concept/research: jul-sep 2004 - development: okt-jan 2004 - pilot with IVKO students: 7-9 feb 2005 - now: evaluation of concept and further product strategy Project
Motivation Problem - traditional history teaching: declining interest How to motivate students? Applying new media - use familiar technology (mobile phones) - apply adventure and gaming aspects - self-expression through media production - creative use of positioning technology (GPS) Project
Game Concept Concept
Frequency 1550 Story Line Ketterse storingen: freq 1550 Spelers zijn pelgrims Contact met schout via UMTS Schout geeft opdrachten Winnaar: meeste punten (dagen) Concept
Concept
Frequency 1550 Game Elements Multi-user - multiple teams - within team players in city (mobile) and at homebase (HQ) - real-time multi-user Location-based - city as play field - navigation on medieval map - teams can see other teams on map - assignments triggered on locations - boobytraps ( frequentie bommen ) - confrontations - cloaking ( onzichtbaarheidspij ) Multimedia - streaming video, images, text for assignments - players make and submit media as part of assignments Concept
De Kloosters Die Plaets De Twee Zijden Verdediging 6 zones 6 zones De Kade De Lastage Concept
Frequency 1550 De Twee Zijden 3 opdrachten per zone De Kade De Lastage Concept
Assignments Trigger - navigate on mobile phone on medieval map - reaching GPS location of assignment triggers assignment - video stream, images, text shown on phone Answer - make media - HQ can consult internet for additional media - submit media - provide text answer Concept
Example Zone Intro Movie Concept
Creating Media Concept
Frequency 1550
Frequency 1550 Per Team GPS Infrastructure HQ Email Video call Video stream TCP (GPRS) TCP GSM UMTS INTERNET TCP Game Server (KeyWorx) Admin
Frequency 1550 Delorme GPS GamePhone (Nokia 6600) JSR-82 (Java Bluetooth Comm) Mobile Clients Java J2ME (MIDP2) GUI: Nokia SDK Comm: KeyWorx XML protocol client VideoPhone (SE Z1010) Used as is video calls with HQ via UMTS watch video streams (intros/assignments) capture video clips/images send captured media via email to HQ
GamePhone Design GUI javax.microedition.lcdui.* Protocol Handler GPS Reader CLDC/MIDP2.0/JSR-82
Frequency 1550 HomeBase (HQ) Client Java Standard WinXP PC Macromedia Flash ActionScript.NET for integration with IE (Google, image drag/drop) Comm: KeyWorx XML protocol client
www.keyworx.org KeyWorx Platform Java - JSP - PHP - Flash - Director - C(++)... Clients TCP HTTP UDP Local SMS Email Multichannel Framework (multi-user, portal, security,...) Game Engine Chat File Sharing RT Data (multi-user) developer plugins Server Content Management databases/files
GPS
Mapping GPS Data $GPRMC,152906.851,A,5222.3574,N,00453.4815,E,0.00,155.73,010205,,*0D\n $GPGGA,152917.850,5222.3565,N,00453.4799,E,1,04,7.4,28.5,M,47.0,M,18.5,0000*72\n.
Frequency 1550 Live Route tracking
About - based on J2ME CLDC - client-server - discovery, streams, object transfer (OBEX) - check support on your Java/BT phone! JSR-82 Bluetooth API Client Programming Steps 1- device discovery 2- service inquiry! 3- connect using service URL 4- data transfer!""#$%&'()#$*)*$+*,#-.,*$#/)0!#1/!+!#)0*2%3%2!(%4.#0!$(%2%0!(%4.#!&$**5*.(6!!!!!.! con = (StreamConnection) Connector.open(url, Connector.READ); is = con.openinputstream(); $%&!'()($'!%$!(*+,!%&,(-./!012/3!2$!*!4567589:;(&%%&,<!'(=>+(?!&,(!@271!)%-&>%$/!%A!&,>/!'>*B-*C!D>::! $%&!(E>/&3!!! 5%,0N D:EFGCCGH!77:9J?G9CKA F)(-*&>$B 5%,0!R#D:EFGCCGH#N!0% 2",2PQ+5 4*5#A7FJ9B9J!77:9J?G9CKA 4*5NA7FJ9B9J 2:?AAFA.?G9@F!77:9J?G9CKA 47F8?G9KL#)MAGFS#T#D:EFGCCGH#)G?JU!
Location-based actions GPS Nokia Server <map-coordinates /> <zone-entered/> Raw GPS data < gps-data/> <assignment-reached/> <boobytrap-hit/> Team Server determines action based on current game state <confrontation/> Team Team /** Tests if two locations are near each other. */ public boolean isnear(jxelement loc1, JXElement loc2) { int deltax = loc1.getintattr(attr_rx) - loc2.getintattr(attr_rx); int deltay = loc1.getintattr(attr_ry) - loc2.getintattr(attr_ry); int distance = (int) Math.round(Math.sqrt((deltaX * deltax + deltay * deltay))); return distance < gameconfig.getintattr("hotspotrange"); }
Multi-user Protocols Two Broad Categories 1 - same time/same place (synchronous) examples: chat, action games, A/V conferencing, shared whiteboard 2 - different time/different place (asynchronous) examples: email, news, forums Note: Freq1550 is category 1
Multi-user Protocols Design issues for synchronous multi-user - security login, rights, roles,... - shared session spaces game instances, chat rooms, conferences,... - who is there - shared state shared drawing, shared game state,... - late joiners - protocol message format Standard J2EE (EJB) and Web Services do not address these issues
Multi-user Protocols KeyWorx Approach - common server-side container framework - extensible multi-user protocol common: login, entering spaces, shared state, who, late joining extensions: whatever app requires - lightweight XML protocol message format common messages like <login/> <enter/> <join/> extension protocol: <amulet id= myextid />...</amulet> - minimalistic XML schema language Server-side plugin => extension protocol (POA)
Example - Protocol Exchange Team 1 Team 2 Server All teams <gps-data-ind/> <gps-data-ind/> Location clash <confront-ind winner="2"/> <confront-ind winner="2"/> <score-update-ind/>
Links Project - freq1550.waag.org - www.computable.nl/artikels/archief5/d07hb5nh.htm - www.justobjects.org/blog/index.php?p=8 Other - www.waag.org - www.keyworx.org - www.justobjects.nl - www.geoskating.com - www.jcp.org/en/jsr/detail?id=82 (JSR-82 Bluetooth API) Outro