本文是基于Nokia Series 60和Symbian OS技术,指导开发者在现在的Series 60移动电话终端上开发高级的移动游戏。
操作系统。这适用于Series 6.1作为Series 注重:本文档中讨论的技术路线都是以Symbian>
Symbian操作系统简介
Symbian操作系统是所有Symbian OS电话共享的应用编程接口( API)技术的公共核心。 这个核心被命名为"通用技术"(generic technology,简称为GT),它被分成不同的版本。 GT包括一个多任务核心、通讯、数据治理和图表中间件,低级图形用户界面框架和应用程序引擎。
象智能电话这样的小型手持设备,通常是资源非常紧张的设备。 这种设备的尺寸和制造费用限制了可用的存储器,处理速度和电池寿命。 尽管以上这些资源缺乏,但是这些设备还是需要能够稳定运行相当长的一段时间,甚至数个月。 一旦出现资源溢出的错误,对于系统来说重要的事情就是返回到前一个稳定的状态,而不失去任何重要的数据。 这使得完全地捕捉和处理每个运行错误对于系统和应用程序来说是非常重要的。
由于资源溢出而出现的错误,和所有的运行期错误一样被称为异常。 在标准的C++中,这些异常是使用try-catch-throw机制处理的,但是因为它造成了代码长度的负面影响,所以Symbian OS提供了它自己的称为trap harness的机制。
Symbian开发他们自己的异常处理程序的另一个原因是开发Symbian OS的时候,try - catch - throw机制还不是C++标准的一部分。trap- harness的概念是使用一个TRAP宏把可能引发异常的函数封装起来。这个宏可用于捕捉多个函数,并且这些函数可以嵌套。万一出现一个异常,导致异常的函数的执行就会通过User::Leave函数终止,相当于标准的C++异常处理中的throw。这被称为一个leave(离开),它将返回程序执行到结束的TRAP宏,在那里相应的恢复动作可以被执行。
Symbian OS还提供一个工具,以便清除异常。一个cleanupstack被用于引用只被一个自动变量引用,并且假如出现一个leave的时候需要被释放的对象。TRAP宏将销毁cleanupstack中自动变量分配的内存。
Symbian OS提供一个用于在单一线程之内非抢先式多任务处理技术的系统。这个包括活动对象和活动调度程序的系统的设计目标是降低运行时间成本和解决与优先计划线程冲突的同步问题。Symbian OS中的每个应用程序由一个活动调度程序和一个或多个活动对象组成。这个调度程序封装一个需要异步的服务和依照它们的优先权安排活动对象的等待循环。活动对象封装实际的异步服务。
需求
与许多其它用于游戏的设备不同,智能电话需要在游戏中或者任何其他的应用程序运行的时候能够通知用户各种系统事件。 应用程序需要考虑到可能的中断,例如因为打进来的电话或者消息,并且它们需要根据情况进行处理。 应用程序还应该不消耗设备资源,例如过度的使用内存或者电量。
通知用户的大多数系统消息使用系统自己的对话框,称为全局通知。 这个对话框具有比任何应用程序都要高的窗口优先权,因此它们出现在应用程序的前端。 在系统事件中,一个异常是打进来的电话造成电话通信应用程序变成最前端的应用程序而把被中断的应用程序留作背景。 然而,所有的系统端事件具有一个公共特征,可以被一个应用程序捕捉。 当一个系统事件发生时,最前端的应用程序失去焦点。 这造成应用程序用户接口类(CAknAppUI)的HandleForegroundEventL方法被调用。 通过覆盖这个方法,应用程序可以执行需要的动作,例如暂停正在进行的游戏。
应用程序需要注重电池使用量。 当一个电话在预定的时间内没有使用的情况下,它会进入睡眠方式以便消耗最少的电量。 假如一个应用程序持续做后台处理,例如在一个循环中查询一个变量,电话可能不会进入休眠状态。 所有的查询应该在程序块循环中执行,并且所有的计时器应该在游戏暂停的时候停止。 一旦一个计时器需要来维护和另一个终端的连接,这个计时器的频率应该降到最小水平。 当在预先设定的时间间隔里一直没有用户活动的时候,应用程序还可以从一个系统端计时器中取得事件。 要做到这些可以使用e32std.h头文件中可以找到的RTimer::Inactivity方法。 在电池供电的设备中,软件需要对忽然断电有所预备。 电池可能会没电,或者用户可能把它从设备中拿出来。 假如重要的用户数据被编辑的时候,就更应该注重这些情况了。 每隔一段时间这些数据就应该被保存,并且能够在重新启动之后恢复。 此外,应用程序应该对被损坏的数据有所预备,并且能够安全地从这种情况下恢复。
限制
除了有限的存储量之外,智能电话和PC相比有其他几个限制。 首先,智能电话没有像PC一样高效的处理器。 智能电话基本都没有数学处理器,因此时间单位计算应该使用整数实现。 Symbian OS作为一种游戏平台还有一些约束。 例如,这个平台不支持可写的静态数据,而静态数据经常被用于在游戏中来最优化访问广泛使用的数据。
智能电话还有相对限制的硬件。 显示屏幕有有限的分辨度、尺寸和彩色深度。 小键盘只有有限数目的按键,并且按键的布局可能不便于玩游戏。 在不同硬件解决方案之间,键盘的布局可能会有很大的不同,因此游戏应该提供用户重新定义按键的功能。 智能电话还没有足够的端口来支持各种游戏控制器,像方向盘和游戏杆,这些都是在PC环境中很常见的。 所有这些限制决定了哪些游戏可以被实现并且安装到一部智能电话上,而不会降低它们的可玩性。 然而从长远的观点来看,智能电话中使用的技术将越来越精巧,新的特性和解决方案将被引入。
新闻热点
疑难解答