如果读者有
Java编程经验,尤其是AWT和SWING的Java GUI开发经验将十分有助于理解本文,尽管不是必需的。
一、 引言
近来,移动游戏在提供个人娱乐方面变得越来越流行。这种流行使得移动游戏给手机用户,游戏出版商和手持设备制造者带来丰厚的利润;移动游戏,在给游戏
开发者和相关人员带来无数商机的同时,处于极为重要的枢纽位置。据估计,到2009年,全世界的手机玩家有望达到两亿两千万之多,移动游戏业将被规划并扩展到一个更
高层次,为手机用户和手持设备制造者带来更大的利润份额。
移动游戏可以分为三大类:
·嵌入式游戏:被硬编码到移动手持设备系统中的游戏,并随着设备一同发布。不久就会过时。例如:随着诺基亚手机一同发行的贪吃蛇游戏。
·SMS游戏:通过发送文本消息来玩的游戏-例如,把SMS消息发送到游戏服务器-该服务器处理这些SMS消息,然后再通过SMS消息形式发送回结果。经常是以在线竞赛和测验形式出现。并不很流行,因为游戏的费用将随着把每一个SMS发送到游戏服务器而逐步增加。
·浏览器游戏:这些游戏可以使用移动电话的内嵌微型浏览器(专用于移动设备的网络浏览器)来玩,在线或离线的方式都可以。玩家可以通过自己的手持设备或一个第三方游戏供给者的游戏Web站点的方式在线玩这样的游戏,或下载它们后离线玩。这一类游戏又有很多种类,例如单人或者多人游戏,网络游戏,离线游戏,街机游戏,等等。
在这三种类型中,浏览器游戏是今天最流行的移动游戏类型,这是因为它们具有
创新性和丰富的多媒体内容,引人入胜的表达与SMS游戏相比的低价位优势。本文将重点讨论浏览器游戏开发。今后,术语"移动游戏"在本文专指"浏览器游戏"。
注意:本文集中于讨论2D游戏开发。因为今天流行的大部分的数字移动电话有很有限的资源(小的屏幕,有限的内存和图形支持,繁琐的键盘输入),所以时下最适合于这些设备的也是最具有商业可行性的游戏是2D游戏。但是,随着移动电话能力的不断提高,3D游戏在不久的将来将广为流行。
移动游戏可用C++,Java(J2ME),还有Qualcomm公司的Binary Runtime Environment for Wireless(BREW)平台来进行开发。
二、 为什么选择Java进行移动游戏开发? 尽管C++能够被编译成本机代码并且可以直接存取本机系统资源,以及与BREW(它允许开发者使用任何希望的语言,包括C++,Java,XML和Flash)相结合为移动游戏开发者提供端到端的解决方案,但是Java仍然是进行移动游戏开发的最流行的选择。Java,或更精确的说是Java 2微型版本(J2ME)平台,被认为是开发移动游戏的最方便的语言。(要更多地了解J2ME,请参考"What is Java 2 Micro Edition?")。J2ME如此流行的背后动力包括:
·J2ME遵循为大多数手持设备生产商所支持的工业标准,如今大多数的移动电话都支持Java开发。
·J2ME是一个自由的和开放的平台。这使得开发人员投资很少,但却提供给他们必需的灵活性以及大量的支持。
·它的高度可移植的特性("书写一次到处运行")保证一部为一个品牌/类型的手持设备开发的游戏应用程序,将可以工作在其它类型的支持Java的手持设备品牌/类型上。
·它特别为小型设备进行了优化,是轻量级的,高度安全的,因为在其上开发的应用程序不能存取或者影响运行在该手持设备上的其它应用程序。
J2ME包含移动
信息设备轮廓(MIDP)API,它的设计是为专门开发包括手机在内的移动设备应用程序,但切记它们的局限性和约束条件。而且,最新的MIDP 2.0版自己提供了一套完整的API以用于游戏开发,这使得游戏开发更为简单和快捷。
现在,我们探索一下MIDP 2.0在移动游戏开发环境中的使用。
三、 MIDP2.0在游戏开发中的地位 MIDP2.0 API是一组具有特别性能的API,可用于开发安全的,内容丰富的多媒体应用软件,包括适合于移动设备的游戏程序。MIDP 2.0基于以前的MIDP 1.0之上并提供一个更好的开发平台以创建高效快速的移动设备应用程序。
MIDP 2.0进一步提炼了MIDP 1.0的特性和有关功能。有关这些新特性的信息请参考What’s New in MIDP 2.0。新增添到MIDP上的重要特点之一是Game API,或更精确地说是javax.microedition.lcdui.game API包。通过该Game API,MIDP 2.0提供给游戏开发者现成的程序模块,这些模块在早期的MIDP 1.0时是你必须从头开始创建的。这些模块以类的形式提供,用于创建和控制各种游戏元素,如游戏画布、精灵、层等等(后文将介绍)。这样,MIDP 2.0大大减少了游戏开发者的创作时间。
进行游戏开发必需的另外两个MIDP 2.0 API包,在本文中也作了探索,它们是javax.microedition.midlet和javax.microedition.lcdui。
javax.microedition.midlet API包是开发各种类型的移动应用程序的基础。它包含javax.microedition.midlet.MIDlet类,它是所有的基于J2ME的移动应用软件(或称为midlet)的基类,它必须由所有移动应用程序的main类加以扩展后使用。非常类似于java.applet.Applet类,MIDlet类提供创建midlet程序的必要的资源。
javax.microedition.lcdui API包是开发各种类型的移动应用程序的用户接口所必需的。这个API提供类来创建和控制UI部件(例如屏幕,表单,文本框,单选按钮,等等)并且处理包括游戏在内的移动应用程序的输入。有使用AWT和SWING GUI开发经验的
开发者会发现javax.microedition.lcdui包中的元素非常相似于这些API中的元素。
我将在本文的示例游戏开发期间讨论这些API中的和游戏开发相关的元素。