Develop state-of-the-art mobile games
Trends in mobile games and a survey of related J2ME APIs
By Michael Juntao Yuan, JavaWorld.com, 11/07/03
- Digg
- Reddit
- SlashDot
- Stumble
- del.icio.us
- Technorati
- dzone
Throughout the IT industry's history, computer games have been one of the drivers behind technology innovations. Computer
gamers are hungry for more hardware computing power; they are eager to push the limits of various software—from compelling
graphics to artificial intelligence (AI) to network security. Game developers and players are often the earliest adopters
of leading-edge computer technologies. Due to their innovative nature, games are not in danger of becoming technology commodities
controlled by big outsourcing corporations—there is always plenty of room for talented individual innovators in this space.
The market for games will continue to grow as the technology enhances the playing experience. As the enterprise IT revolution
improves our work life by saving time and money, we spend more time and money on games to improve the general quality of life.
Even in today's difficult economic times, gaming remains a fast growing and profitable industry sector. Java developers should
not overlook the tremendous opportunities here.
As in the rest of the IT industry, the latest buzz in the game industry is mobility. Mobile games have brought together many
unlikely players from traditional enterprise companies (e.g., Sun Microsystems' new game division), equipment manufactures
(e.g., Nokia's N-Gage and Qualcomm's Brew devices), and network operators (e.g., Vodafone's content services).
As Java developers, we are well suited to enter this profitable new industry sector because the Java 2 Platform, Micro Edition
(J2ME) is emerging as one of the most widely supported mobile gaming platforms. In this article, I discuss the opportunities
and challenges of mobile gaming from a Java developer's perspective. I also survey state-of-the-art mobile Java technology
through important J2ME specifications.
Mobile game characteristics
Mobile games' financial appeal comes from their wide reach. Mobile phones have become tightly integrated into the modern lifestyle.
They are second only to keys and wallets as the most commonly carried personal items. Unlike traditional console games that
target geeks and teenagers, mobile games are accessible to anyone—anywhere, anytime. Although each mobile game is inexpensive,
the projected large volume (e.g., a new game per week per person) will make this market immense and profitable. However, for
developers, mobile games present a big paradigm shift from console games due to the vastly different target audience, lifestyle,
and distribution models. Let's start with mobile games' requirements.
Requirements
A successful mobile game will likely have one of the following characteristics:
- Easy to learn: Since mobile games target general consumers not computer-savvy techies, they cannot have steep learning curves. Consumers
will not spend hours studying an operation manual of a game. The game must be playable the moment it is downloaded. It is
essential to keep the game simple.
- Interruptible: Multitasking is a basic characteristic of the mobile lifestyle. A mobile user often has small chunks of free time available
between tasks (e.g., while waiting for an email or a taxi to arrive). The same device is used for games, calendar management,
messaging, and work data access. A good mobile game should provide entertainment value for short time periods and allow users
to switch smoothly between game and work modes.
- Subscription based: Mobile games' financial success depends on their large volume. It is expensive to design and develop each game from scratch.
For a mobile game developer to make money, it is important to offer multiple titles from the same game engine along similar
basic storylines. Subscription-based games are the best way to generate sustained revenue.
- Rich social interactions: No matter how good a game design is, it quickly becomes boring when the player figures out the underlying pattern or has
exhausted all the play routes. For subscription-based games, it is important to incorporate other human players to increase
the intelligence and randomness of the game play. Games with rich social interactions have proven successful in many of today's
massively multiplayer games.
- Take advantage of mobile innovations: A huge amount of mobile technology research dollars have been spent on improving the usability and reliability of devices
and networks. As a result, the mobile device hardware and network protocols are very different from the desktop/console world
(e.g., Global Positioning System (GPS) extensions, barcode scanner, and Short Message Service (SMS)/Multimedia Message Service
(MMS) messaging). Good mobile games should take advantage of those innovative device features and network infrastructures.
- Nonexplicit content: Since all age/gender groups play mobile games and often in public/work settings, you should avoid explicit violent or sexual
content.
Types of mobile games
Based on the above criteria, the most successful future mobile games are casual games that provide entertainment value to
a broad range of players in all social settings. In particular, the following types of games are emerging as tomorrow's killer
games:
- Digg
- Reddit
- SlashDot
- Stumble
- del.icio.us
- Technorati
- dzone
Resources
- Michael Yuan's new book Enterprise J2ME covers many of the end-to-end application design, data management, and provisioning topics discussed in this article
http://www.enterprisej2me.com/books.php
- If you just started learning J2ME, Jonathan Knudsen's Wireless Java, Second Edition is an excellent book that covers both MIDP v1 and v2 specifications
http://www.amazon.com/exec/obidos/ASIN/1590590775/javaworld
- The MIDP v2 specification and the Sun J2ME Wireless ToolKit
http://java.sun.com/products/midp/
- More information on kSOAP
http://www.ksoap.org
- The Wireless Messaging API (WMA)
http://java.sun.com/products/wma/
- The J2ME Multimedia API
http://java.sun.com/products/mmapi/
- The Nextel Open Source J2ME Toolkits
http://nextel.sourceforge.net/
- The Synclast UI for MIDP
http://www.synclast.com/
- JSR 184 (Mobile 3D Graphics API for J2ME)
http://www.jcp.org/en/jsr/detail?id=184
- SuperScape provides JSR 184-complaint solutions for device vendors and developers
http://www.superscape.com/
- Nokia N-Gage is the first dedicated mobile phone game device
http://www.n-gage.com/R1/en/developers.html
- Forum Nokia is the best resource for information on Nokia J2ME handsets and developer tools
http://www.forum.nokia.com/main.html
- JSR 172 (J2ME Web Services Specification)
http://www.jcp.org/en/jsr/detail?id=172
- JSR 230 (Data Sync API)
http://www.jcp.org/en/jsr/detail?id=230
- JSR 177 (Security and Trust Services API for J2ME)
http://www.jcp.org/en/jsr/detail?id=177
- JSR 75 (PDA Optional Packages for J2ME)
http://www.jcp.org/en/jsr/detail?id=75
- The J2EE Client Provisioning page
http://java.sun.com/j2ee/provisioning/
- JSR 124 (J2EE Client Provisioning Specification)
http://www.jcp.org/en/jsr/detail?id=124
- JSR 135 (Multimedia API)
http://www.jcp.org/en/jsr/detail?id=135
- "Access Web Services From Wireless Devices," Michael Yuan (JavaWorld, August 2002)
http://www.javaworld.com/javaworld/jw-08-2002/jw-0823-wireless.html
- "Data Security in Mobile Java Applications," Michael Yuan (JavaWorld, December 2002)
http://www.javaworld.com/javaworld/jw-12-2002/jw-1220-wireless.html
- "High-Availability Mobile Applications," Michael Yuan (JavaWorld, June 2003)
http://www.javaworld.com/javaworld/jw-06-2003/jw-0606-wireless.html
- View all of Michael Yuan's Wireless Java columns
http://www.javaworld.com/columns/jw-wireless-index.shtml
- Michael Yuan also authored the following JavaWorld articles:
-
- For more articles on J2ME and wireless development, browse the Micro Java section of JavaWorld's Topical Index
http://www.javaworld.com/channel_content/jw-micro-index.shtml
- Sign up for JavaWorld's free weekly Micro Java email newsletter
http://www.javaworld.com/subscribe
- Visit the Device Programming dicussion
http://www.javaworld.com/javaforums/postlist.php?Cat=&Board=DeviceProgramming
Archived Discussions (Read only)