分享
 
 
 

掌上游戏机开发指南如何开发Smartphone游戏

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

游戏市场概述

伴随着新的 Microsoft? Windows? Powered Smartphone 呈现在我们面前的是一些非常有吸引力的游戏,而在未来还会有更多这样的游戏问世。接下去,您将了解这些电话为什么能吸引那些“重量级”的游戏玩家,以及开发成功的游戏需要注意的事项。

计算机游戏市场走过了一条漫长的发展之路,这条路的起点可以追溯到上个世纪 70 年代后期第一款基于字符的简单游戏的诞生。从金融角度来讲,一些分析家声称:仅在美国,游戏市场加上游戏机和 PC 软件的销售,预计到 2004 年将带来 180 亿美元的销售额;而在全世界范围内,该项销售总值已经超过了整个好莱坞电影产业的产值。从技术角度来讲,游戏市场带动了消费硬件的发展,而在过去几年中,甚至带动了 Internet 的普及和连通。很显然,那些字处理软件、电子表格软件或者业务流程应用程序并不象计算机游戏那样,需要功能更强大的三维图形芯片、大容量存储设备以及速度更快的处理器。

据预测,新兴的无线游戏产业的产值到 2006 年将达到 40 亿美元到 150 亿美元,当然不同的人有不同的算法(英文)。无论游戏产业朝什么方向发展,其前景都将非常美好。

游戏开发

移动电话的游戏开发与基于 PC 的游戏开发的发展道路非常相似。PC 游戏开发的进步表现在从非图形到图形、从单人游戏到多人游戏、从互不相连到 Internet 互联等各个方面。经过数年的发展,移动电话中的游戏已经达到那些较低级的图形 PC 游戏的水平了。而有些移动电话制造商已经开始在产品中包含更好的图形支持,尽管现在市场上出售的一些移动电话的内置游戏几乎没有任何图形。

有了 Smartphone 的支持,移动电话产业将能取得象在 PC 游戏市场中那样的巨大飞跃。虽然其发展会更加迅猛,但最先发布的 Smartphone 游戏可能仍然是现有的 Windows 和 Pocket PC 游戏。由于游戏开发人员可以使用相同的开发工具、编程语言和操作系统 API(应用程序编程接口),因此将这些游戏移植到 Smartphone 的工作量非常小。

可以移植到 Smartphone 中的游戏

下表是为 Smartphone 2002 开发和移植游戏的公司。

表 1:为 Smartphone 2002 开发和移植游戏的公司。

公司 游戏

Ideaworks3D(英文) “Rebound!”以及很多其他游戏,有些是与 Eidos Interactive(英文)等合作出版商共同进行的。

Hexacto(英文) “Tennis Addict”、“Full Hand Casino”和“Slurp”。更多的游戏将相继问世,包括“Lemonade Inc.”、“Baseball Addict”和“Bob The Pipe Fitter”。其中,有几个游戏将具备多人游戏的功能,充分利用了 Smartphone 的无线功能。

Incagold(英文) “Slamtilt”,一种三维弹球游戏

Pixel Technologies(英文) “MobilePlay 1”,一个包含国际象棋、跳棋、纸牌、锄大地、军棋和黑白棋等多人游戏的在线游戏包

Xen Games(英文) “Interstellar Flames”,一款让用户驾驶战斗机保卫地球的动作游戏

Terra Mobile-iobox(英文) “Defender”以及其他将具有无线功能的游戏

游戏开发工作和开发出的游戏的质量很大程度上取决于目标平台的性能以及可用的游戏引擎。除了 Smartphone 软件开发工具包中的 API 以外,预计还会有以下游戏引擎可供使用:

Fathammer 的 X-Forge 三维游戏引擎(英文)

Tao's Group 的多媒体 Java(J2ME MIDP)平台(英文)

Amiga Anywhere(英文)

单击这些链接查看丰富的功能,以及它们带给 Smartphone 用户的引人入胜的游戏体验。

编写高效的游戏

为了深入了解如何编写高效的游戏,我们请教了 Sven Myhre。Sven Myhre 是 Amazing Games(英文)的 CEO,同时也是一名游戏开发人员。

手持设备用户和开发人员中间普遍存在一个错误概念,即现在的 ARM 处理器与同一速度级别的 Pentium 处理器功能相当,但 ARM 处理器并未很好地体现出这一点。一个早期的 Pentium 处理器就可以胜过当前基于 ARM 的所有 Smartphone 和 Pocket PC,这是由处理器自身及其支持系统决定的。

Pentium 处理器具有超标量体系结构(能够在一个时钟周期内执行多条指令),有五个并行执行单元和一个集成的浮点运算单元。一般情况下,大多数以 Pentium 处理器为核心构建的 PC 都有一个内部 L1 缓存和一个大型外部 L2 缓存。

当前基于 ARM 的 Windows Powered Smartphone 和 Pocket PC 具有标量体系结构(它们可以在一个时钟周期内完成一条指令)。但是指令集受到很大的限制,只包含了最基本的指令,而不包含一些相对高级的指令(比如除法),这些指令必须在软件中进行模拟。

另外一个问题是向处理器提供指令和数据以保持其全速运行的能力。大多数设计方案都使用一条 16 位总线来获取代码指令和数据。由于所有指令都是 32 位的,总线的运行速度就应当是处理器速度的两倍,这样才能满足代码指令管道的需要。但实际并不是这样的。因为总线速度要比处理器速度慢,所以实际的解决方案是另外一种方式。处理器与总线的速度比在 2x 到 4x 之间。一条 66-MHz、16 位的总线最多只能为 33-MHz 的 ARM 处理器提供足够的代码指令以使其保持全速运行,这其中还不包括您需要处理的数据。为了解决这个问题,大多数 ARM 处理器都包含一个指令缓存和一个数据缓存,通常这两个缓存的大小均为 8 Kb,有些大的可以达到 32 Kb。只要缓存中出现请求的代码指令或数据,CPU 就能以全速直接从缓存中获得它们,而不必经过缓慢的内存总线。而一旦需要访问尚未加载到缓存中的代码和数据,您就会切换回 < 33 MHz(假定总线为 66 MHz、16 位)的速度。实际上,将一个 132 MHz ARM 处理器的速度降低为 2 MHz 是相当容易的。只需要采用一种效率非常低的方式来组织数据,使缓存失去作用就可以实现这个目的。

即便是这样,也比您使用错误数据类型和低效率编码的工作速度要快。执行大量除法运算,或者滥用浮点数据类型,将使 CPU 为达到每秒 20 万条代码指令的速度而“筋疲力竭”。

内存访问和带宽

Smartphone 可以配备各种基于 ARM 的处理器,每一种处理器的内存访问开销都不同。但可以肯定的是,由于缓存容量太小、存储总线速度太慢,因此您无法忽略这个问题。

比如,您的处理器运行速度为 132 MHz,内存总线为 16 位、运行速度为 66 MHz。每次读取一个尚未到达处理器缓存中的字节时,处理器都要先填充一整条缓存线。一条缓存线可能是 16 个字(在 ARM 体系结构中,一个字相当于 32 位或 4 字节),也就是说一条缓存线为 16 * 4 = 64 字节。由于您的内存总线是 16 位的,因此在操作结束之前它将被占用 32 个周期,而且更糟的是,由于总线运行的速度只有处理器的一半,所以处理器将在您获得请求的一个字节之前延迟 64 个周期。因此,要确保值得花时间去等待填充缓存线。同样,还要确保您的内存尽可能紧密,同时还要检查内存访问模式,以判断是否可以调整结构以使运行效率更高。如果您需要定期访问某一结构中的一个数据成员并要处理大量这样的结构,则请您考虑将这个特殊的数据成员移到它自己的数组中。

基于同样的原因,应该尽可能使用字节(8 位)或双字节(16 位),这是因为 ARM 处理器在从内存到寄存器加载信息的过程中,可以将无符号和有符号的字节和双字节扩展为字。不过,在将有符号值从寄存器存储到字节或双字节的内存位置时,编译器将生成两条额外的移位指令,以确保即使由于寄存器中的值过大而无法保存在指定的内存位置,该值也能保留其符号位。在 ARM 上,其中一条移位指令可能不需要任何系统开销(几乎每一条“常规”指令都可以与一条移位指令配对),这取决于编译器的效率。这是您在处理内部循环时应该了解的一条信息。每次使用单字节或双字节的变量时,都要确保尽可能使用无符号的数据类型。

内存管理器

您可能已经对此有所了解,但是一般的内存管理器和函数,如 malloc、realloc 和 new (通常只是 malloc 的一种包装),速度都很慢。您通常需要预先分配所需的全部内存,并使用自己的内存管理器。这是游戏项目中一个最重要的子系统。在开发过程中,您很容易加入一致性检查、测试坏指针等功能,并确保所有的 free 和 delete 操作都与 alloc 和 new 一一对应。

分配同样大小的结构的数组,并仅仅通过位屏蔽(或其他方式)来处理分配和解除分配,速度也会相当快。

消息系统

第二个最重要的子系统是一个可靠的消息处理系统,而不是传统的 Windows 消息泵系统。游戏对象之间的所有交互都应该通过您自己的专用消息系统来完成。这包括为消息设置传递时间的选项,这样您就能向自己或其他对象发送消息,以便在未来某个时刻传递该消息。例如,当游戏角色拾到一个加血物品时,您就可以简单地向自己发布一条“解除加血”的消息,并在 5 秒钟之内传递。由于对象并不能保证会在传递消息时仍然存活,因此您任何时候都不应该使用指针,而应该采取句柄(静态标识符)的方式。对于这样的系统,很容易添加回复功能,因为中央消息系统很容易游戏进行期间将所有消息保存到一个文件中。然后回复系统就能从保存文件读取所有消息并按顺序调度。这对于调试来说也是一种非常不错的功能:您可以添加一个控制台或日志文件,以便实时观察所有消息;也可以重复播放相同的消息流;直到到达游戏的崩溃点。

对象的创建和删除,以及玩家输入的处理,也应当使用消息来进行。唯一缺少的就是对象所有权的信息,您可以扩展消息系统使其与另一台计算机连接起来 - 这是多人游戏系统的基础。由于所有交互都要经过消息系统,因此您的游戏逻辑将不对真人玩家(硬件按钮)、AI 玩家或远程网络玩家发送

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有