Overview
Figure 1: Rummy game based on MoGS.
The MoGS project was set up to investigate the possibility of building a portable server API for multi-player mobile games, able to support the game server logic of many different games. The language chosen was Java, as this is a very convenient language for developing servers. For the networking technology, we chose Bluetooth.
A suitable game server API was developed, as well as server implementations for Mobile Information Device Profile 2.0 (JSR 118) [MIDP 2.0] and Java™ 2 Standard Edition (J2SE 1.4) and two example games using the servers, Paintball and Rummy.
Technology Employed
The MoGS code is 100% Java, using the Java APIs for Bluetooth Wireless Technology (JSR-82) [JSR-82]. On MIDP 2.0 we used the implementation in the Nokia 6600 (and 6230), and on J2SE 1.4 we used the commercial implementation for Linux from Rococo Software (www.rococosoft.com).
References
- [JSR-82] Java APIs for Bluetooth Wireless Technology (JSR-82)
Java Community Process, 2002
http://www.jcp.org/en/jsr/detail?id=82 - [MIDP 2.0] Mobile Information Device Profile 2.0,
Java Community Process, 2002
http://www.jcp.org/en/jsr/detail?id=118
Requirements
This section summarises the requirements for the MOGS design.
- Convenient and Powerful API
The MoGS API was intended to be sufficiently powerful to allow many different kinds of games to be created, and sufficiently convenient that it hid all the common complexity of using Bluetooth. - Support Different Platforms
MoGS was intended to be independent of the underlying platform, so that it could be run on PCs, set-top boxes and smart-phones. - Efficient
The MoGS implementation was intended to be sufficiently efficient that low-latency games could be implemented using it.
Research Results
Mogs Framework Design - Architecture

Figure 2: 'Smart server' in PC or set-top box.
MoGS was originally conceived as a framework for multi-player games where phones running MIDlet clients would play together using a shared server, connected to it over Bluetooth.
Later, we noticed that we could use the same game logic in a simpler server which would be combined with the MIDlet client.

Figure 3: 'Simple server' in phone.
It would be possible to have versions of the MIDlet client both with and without the server, though in practice we always included the server in the client and just offered the option of using it to host a game or ignoring it and joining a remotely hosted game (either in another phone or in a PC).
