How to develop a collaborative mobile game
My EPFL co-worker Fabien wrote a postmortem report (.pdf) about our CatchBob! project in which he describes the whole development process. He presents how we designed CatchBob on two platforms (namely iPAQ and TabletPC) and how he implemented it. The report goes throught the whole thing, dealing with the game architecture, the user interface, the positioning feature as well as the communication tool (that allows to annotate the map). Here are the key points for people in a rush:
- CatchBob! uses WiFi-enabled TabletPC as clients They use the Wireless Network sniffing capabilities of Place Lab to locate themselves by listening for radio beacons.
- The positioning technique is based on a propagation model using the degradation of the signal strength of a radio wave over distance in space. We implemented a very simple triangulation using a centroid algorithm. It positions the user at the center of the scanned nearby access points by computing an average of their x, y location and taking the signal strength as a weight. We hence achieved to get a rough positioning accuracy (10-20 meters) which was sufficient for our needs.
- CatchBob! is built on a client-server communication model. Every 30 seconds, the clients broadcast their positions, commands and annotations via a centralized server. The communication is done over SOAP. Clients are in a pull mode in order to retrieve and synchronize the data.
- The map, annotation, and awareness rendering on CatchBob! interface is generated in Java2D on a static background displaying the campus.
The end of the report aims at enlarging the scope, discussing interesting issues such as the design of engaging technology (for the user's point of view), the relevance of 3D positioning and the huge potential of map annotation.
This document might be seen a good summary of how Fabien achieved the mobile game development. Besides, it's absolutely human-readables. Non-tech-savvy people should not be afraid to have a glance if they are interested in how to develop a mobile game.