The client-side
is a collection of library components running on mobile device
with J2ME or Symbian support. The OnME client-side is written
in two different languages, one is Java for the J2ME platform;
the other one is C++, which is for the Symbian platform. Both
versions have the same functionalities and the differences
are on the API syntax and the underlying implementation language.
The main justification of having two implementations is to
support a wide range of handsets. In other word, the OnME
platform is not architecture-dependent like the Nokia N-gage.
Therefore, many games designers and handset manufacturers
can benefit from the OnME platform.

Figure
2: Client-side architecture
Figure 2 illustrates
the client-side architecture for the OnME. The components
of the client-side software are listed below:
Memory
management module: the functionalities of this component
are to perform compression/decompression of information before/after
packet transmission, to perform model-based boundary checking
so that when a user is close to the edge of the virtual world
(or a sub-part of a game), the memory module can perform automatic
pre-fetching of the next virtual world or graphical model.
Note that this is an important component since a good memory
management module can reduce communication latency and thereby
provide a higher chance to synchronize all users¡¦ viewpoints
within a game.
For the compression, we propose to first compress images and
data models to as to reduce network transmission delay and
memory consumption. The compression technology that we will
use is the ¡§indexed-color-based¡¨ so as to significantly reduce
file sizes for the mobile game.
Live-version
update module: Version update is an essential feature
for mobile online game because (1) game designers may provide
new story/characters for the game, or (2) a new version of
a game is necessary to remove existing software bugs. Therefore,
it is crucial to have an automatic notification feature so
client handsets can automatically update new software update.
The functionalities for this component are to perform automatic
code and data update from the OnME game server. Therefore,
users who play the multi-player mobile game do not need to
manually check for new version of the game. In this project,
we will develop a communication protocol for this live version
update module.
Networking
module: In general, all mobile devices with J2ME
platform support the HTTP protocol. However, not all devices
support the low level protocols like TCP/UDP. Note that for
video streaming, one has to use the UDP but not the HTTP protocol
so as to satisfy the video continuity requirement. Our network
module can communicate using low-level protocols like TCP
or UDP, or higher layer protocol like the HTTP. The advantage
of using the low-level protocols is that they are much faster
and more efficient than the HTTP protocol since they involve
less headers and overhead. This module allows game designers
the flexibility to communicate in different communication
protocols. For example, game designer may choose to stream
video data using UDP, transfer graphics files using TCP and
game status update using the HTTP. Also, to reduce network
latency, our networking module will also provide compression/decompression/encryption
options for game designers.
Lobby
system module: Every online mobile game has to handle
multi-players interaction and user matching mechanism. Users
may create a lobby (or waiting area) to invite friends to
join-in and work together on a mission. The lobby creator
can restrict the access of lobby, e.g. invite his friend or
reject any unknown user to join in the lobby. Within a lobby,
the status and viewpoints of all users must be synchronized
by passing status update message. Therefore, the size of lobby
has a strong impact to the communication overhead. We propose
to design a generic lobby system that supports optimized message
exchange and at the same time maintain strong viewpoint synchronization.