本文由4609rain贡献一、背景介绍现在的移动电话是小型的计算机,它的处理能力与台式机的标准处理能力相比很有限,但是足够运行一个小型的游戏。
现在的手机的一个特性就是它们还是网络计算机,能够高速发送和接收数字数据。
除了语音数据以外,它们还可以发送和接收其它类型的数据。
所以类似《传奇》、《千年》这样的网络游戏也可以在手机上实现。
当然就处理能力和性能而言,当前阶段的支持Java的手机很接近第二代控制台游戏机、80年代中期的家用电脑和早期的手持游戏机。
内存通常很有限--一般128KB到500KB--虽然有些智能手机比如Nokia 3650有4 MB内存。
与PC相比,它们的输入和显示功能也很有限;小屏幕(许多仍然是黑白屏幕),为电话拨号优化的小键盘并不针对文本输入,以及有限的声音处理能力。
二、移动游戏是如何实现的目前在移动电话实现游戏的技术主要有以下几种:1、嵌入式游戏一些游戏在出厂前就固化在芯片中了,象Nokia的贪吃蛇就是一个最著名的例子。
但由于用户不能自己安装新的游戏,所以它们逐渐变得不太流行了。
2、短消息服务游戏短信息服务(SMS)被用来从一个手机向另一个手机发送简短的文字信息。
用户一般为每条信息支付1毛钱的信息费。
短消息服务游戏的玩法通常是发送一条信息到某个号码,这个号码对应游戏供应商的服务器,服务器接收这条消息,执行一些操作然后返回一条带有结果的消息到游戏者的手机中。
短消息服务不是一个特别好的用于实现移动游戏的技术,因为它依靠用户输入文字,因此本质上它是一个命令行环境。
而且它还很昂贵,即使和服务器只交换10次信息也要花费1块钱或者更多的钱。
虽然多媒体消息服务( MMS)技术的推出使得基于消息的游戏更加具有吸引力,但是仍然不是一种重要的游戏环境,所以在此我们不会深入探讨它。
3、浏览器游戏差不多1999年以后出厂的每台手机都有一个无线应用协议(WAP)浏览器。
WAP本质上是一个静态浏览载体,非常像一个简化的Web,是为移动电话小型特征和低带宽而专门优化的。
要玩WAP游戏的话,可以进入游戏供应商的URL(通常通过移动运营商门户网站的一个链接),下载并浏览一个或多个页面,选择一个菜单或者输入文字,提交数据到服务器,然后浏览更多的页面。
WAP (1.x)版本使用独特的标记语言WML,允许用户下载多个页面,即卡片组。
新版本的WAP(2.x)使用XHTML的一个子集,一次传递一个页面并且允许更好的控制显示格式。
两种版本的WAP都提供一个比SMS更友好的界面,而且更加便宜,只要根据使用时间付费而不是根据信息数。
但是它是一个静态的浏览载体;手机本身几乎不需要做任何处理过程,并且所有游戏必须通过网络,所有的操作都是在远程服务器上执行的。
手机将继续带有WAP浏览器,而且开发者可能发现WAP有利于传送比游戏应用程序提供的更详细的帮助信息或者规则,因为大部分的游戏仍然受有限的内存制约。
然而,WAP没能达到高使用率的目标(在欧洲和北美洲,只有6%的手机使用WAP),而且移动运营商和游戏开发者正在远离WAP技术。
我们也不会在这里探究任何WAP的细节。
4、J2ME和其它的解释语言Java 2 Micro Edition (J2ME)是一种针对移动电话和PDA这样的小型设备的Java语言。
大部分的手机厂商都迫切希望Java手机推广应用。
上千万的Java手机已经到了消费者的手中。
J2ME与台式机中的Java相比还是有很大的限制,但是它已经极大的提高了移动电话支持游戏的能力。
它有比SMS或WAP更好控制的界面,允许使用子图形动画,并且可以通过无线网络连接到远程服务器。
支持Java的手机的普及,所以它成为目前最好的移动游戏开发环境,我们在这里将详细研究J2ME游戏的开发。
J2ME不是手机上配置的唯一的解释语言,但是它是一个许多厂商支持的行业标准。
一些专用的解释语言也在某些区域有上佳的表现,如北美的Qualcomm的BREW ( Binary Runtime Environment for Wireless,用于无线应用程序的二进制运行环境)和一些韩国移动运营商支持的名为GVM的标准。
在这个系列文章中,我们将要重点讨论使用J2ME开发移动游戏,并且将介绍在Nokia平台上开发移动游戏的方法。
5、C++应用程序或其它编译语言另外一种开发方式是使用C++开发移动游戏,把程序编译为本机机器代码。
编译语言程序一般说来提供更好的控制用户界面,以及与解释语言相比更快的速度。
C++开发者可以定位于Series 60平台设备。
此外,Microsoft的.Net CF也可以以编译的形式开发移动设备上的游戏,在以后的文章中我将介绍Pocket PC平台上游戏开发的方法。
三、移动游戏开发与传统游戏开发的区别移动游戏开发与传统游戏开发区别在许多方面:1、开发团队的大小传统的PC和控制台游戏一般需要12到30人的开发团队。
因为大部分移动游戏规模比控制台游戏小,所以一般情况下只需要3到5人的团队开发,有的时候甚至设计者和编程者是同一个人。
2、预算传统游戏的预算在一百万美元到五百万美元之间。
大部分移动游戏的预算则通常少于一百万美元。
实际上,移动电话有限的显示能力和对应用程序大小的限制使得不可能象传统游戏那样投入大量的财力物力。
从某种意义上来说,这也算是一个优点。
3、开发周期传统的游戏一般要开发两到三年。
而大部分移动游戏几月之内就能开发完毕。
换句话说,只要有一个小型开发团队和一个小的预算,你就可以开发并推广一个专业品质的移动游戏。
因此,对于许多在传统游戏领域遇到挫折的开发者来说,移动游戏开发有很强的吸引力。
4、网络设备移动游戏可能不同于我们之前看到的任何游戏:它受载体因素的限制,但是支持网络并且可多人游戏。
用于PC的调制解调器也只是8年前才大范围应用;控制台游戏只不过现在才能上网。
移动电话的特性决定它是一种网络设备。
即使它们的处理能力使人想起以前的老式计算机技术,但是它们的网络性能却更加出众。
5、开放标准控制台游戏开发需要从控制台游戏厂商取得授权和支持,需要支付给他们"平台使用费"。
在无线应用程序世界(如同在PC游戏开发中一样),你可以免费的开发任何款式的游戏,而不要支付Nokia、Sun或其他平台提供商一分钱。
此外,这些移动游戏开发平台标准可以向开发者发布、开放并可免费取得。
6、部署传统的游戏主要是在软件市场上购买。
而移动游戏主要是由用户从移动门户网站下载并安装。
在有些情况下,它们是通过无线网络下载的。
有些手机允许你下载一个应用程序到计算机中,然后通过数据线传送到手机中。
因此,移动游戏的销售渠道是非常不同的。
用户一般通过移动运营商的游戏菜单、手机厂商预装在手机中的游戏菜单或者无线应用程序门户网站上找到移动游戏。
四、载体的优点1、庞大的潜在用户群现在全球超过十亿部移动电话正在被使用,并且这个数目正在逐渐增加。
在除美国之外的每个发达国家,拥有手机的人数比拥有计算机的人数更多。
虽然那些手机只有一小部份是支持Java的手机,但是这个数目正在快速地提高并且在几年内Java手机将要成为行业标准。
移动游戏潜在的市场比其它任何平台,比如Playstation和GameBoy都要大。
2、便携性GameBoy比任何其他控制台游戏卖出的多的一个原因就是:便携性。
人们可以随时随地玩他们选择的游戏。
与现在的游戏控制台或者个人电脑相比,手机可能不是一个好的游戏设备,但是人们基本上是随时随刻都把它们带在身边。
在他们离开家的时候或者想玩的时候,给开发者应该为他们提供好玩的游戏。
3、支持网络因为移动电话是网络设备,所以可以实现多人游戏,虽然有某些限制因素。
五、载体的缺点1、屏幕小你面对的是小型的屏幕。
虽然屏幕分辩率持续提高,并且彩屏即将成为标准,但是屏幕尺寸还是一直很小,因为没有人乐意拿着砖块一样大的手机。
还有一个相关的问题:不同的手机的屏幕大小是不同的。
比如说Nokia Series 60平台设备就提供了和Nokia 5100这样的Series 40设备不同的屏幕尺寸。
虽然各个厂商已经标准化它们产品的屏幕尺寸以避免分割市场,但是开发者仍然需要为不同的电话优化他们的游戏--你肯定想使用特定的手机上所有可用的屏幕空间。
2、有限的颜色和声音支持大部分使用者手中的手机仍然是黑白的,虽然现在出售的支持Java的手机大部分都是彩屏手机。
在这些手机中12bit彩色非常流行。
即使手机本来就有声音设备,但是应用程序播放声音的能力却非常有限。
J2ME规范根本不需要硬件厂商支持声音,虽然基本的Java手机允许使用一些声音并且MIDI支持正在成为标准。
通常,手机中只有一个语音或者一个声道可用。
3、应用程序大小限制大部分的Java手机只有很少的内存空间用于运行MIDlet。
此外,对MIDlet的大小始终有一个限制。
实际的限制取决于手机设备和移动运营商的规定。
在这样的限制条件下设计开发移动游戏固然是非常困难的,但是我们要知道,第一台家用电脑只有64 KB内存,但是仍然有人热衷于在其上开发游戏软件。
在一些智能手机上内存的限制就少一些,比如Nokia 3650甚至可以运行几兆字节的应用程序。
4、高等待时间等待时间机器发出请求和接到响应之间所花费的时间在计算机上是以微秒计算;在有线因特网上是以毫秒计算;而在无线网络则要以秒计算。
等待时间是网络游戏中一直存在的一个问题,开发者们总是在努力消除它带来的问题。
无线网络等待时间非常长,这就不可能有效的开发多人快速动作移动游戏。
然而基于回合制的多人游戏是相当可行的,我们在后面的文章中将讨论如何使用各种方法来处理这个问题。
虽然移动运营商总是在努力增加移动电话可用的带宽,但是他们却没有把降低等待时间当成首要解决的问题,因为它对于别的应用程序并不重要。
还有一种特殊情况:使用蓝牙技术或其他无线局域网技术的手机可以和附近的蓝牙设备使用因特网等待时间(一般200-400毫秒)通讯。
这样,使用像Nokia 3650这样的智能手机,你就可以和附近的移动用户一起玩多人快速动作游戏了。
5、可中断性是关键当用户接听电话的时候,手机都会中断进行中的游戏。
游戏程序必须能够暂停并且继续,而且不会造成游戏问题(例如,游戏者在打电话的时候老怪仍然在移动,打死玩家扮演的角色,导致输掉游戏)并且不会造成内存溢出。
这需要在编程的时候多注意,Nokia提供了技术文档帮助J2ME和Symbian C++开发者了解并解决这个问题。
6、正在发展的技术用于开发移动游戏的技术并不是针对游戏设计的,因此常常有特定的限制条件。
例如,J2ME规范不需要支持透明度,这就使得子图形除了在空白的背景上以外,在任何背景上都会很难看。
幸运的是,大部分设备厂商的Java手机都补充了J2ME,支持了透明度。