游戏企业应用系统下的input子系统统该怎么说

当前位置: >>
游戏系统开发
游戏系统开发.txt对的时间遇见对的人是一生幸福;对的时间遇见错的人是一场心伤;错的时间遇见对的人是一段荒唐;错的时间遇见错的人是一声叹息。电子科技大学
硕士学位论文
基于J2ME的嵌入式3D游戏引擎的粒子系统分析与设计
姓名:王津
申请学位级别:硕士
专业:软件工程
指导教师:陈雷霆
20070
513
摘要
嵌入式设备高速发展的今天,嵌入式游戏也面临的巨大的挑战和机遇,而作
为处理运行在嵌入式设备上的3D游戏的底层技术平台的嵌入式3D游戏引擎的开
发就有了很大的发展空间。它为游戏开发者提供了一套核心的,可复用的代码和
系列工具。目前,3D游戏通常运行的嵌入式设备主要包括:高性能手机、高端
PDA(Personal DigitalAssistant)、GameBoy,PSP等。
3D手机游戏引擎技术的出现是手机3D游戏程序设计发展的里程碑之一,它
也是软件工程、专业化分工和游戏产品的独特文化性要求在游戏开发中的综合体
现。游戏引擎是软件工程中的软件复用思想在游戏开发中的表现形式之一。它把
游戏中最常见、最核心的功能进行集成,形成通用的框架平台。这样,在进行具
体的游戏产品开发时,游戏编程人员就不需要从头做起,而是可以直接调用游戏
引擎提供的强大功能,在短时间内高质量地开发出新游戏,适应游戏产业的激烈
市场竞争。游戏引擎也促使游戏编程人员进行更为专业化的分工。游戏往往受限
于硬件性能,尤其是运行在手机设备上的3D游戏,因此游戏往往要追求高效率
和高性能,这对游戏开发人员提出了很高的要求。这种高要求产生了更专业的分
工,一部分高水平的开发人员从事性能要求很高的游戏引擎的开发,而一般水平
的开发人员则利用引擎进行具体游戏产品的开发。游戏产品的核心特点是创意和
可玩性。这就使得游戏的开发要变得比较容易和简单,使得不懂编程的游戏创作
人员也能快速的实现他们的创意。这也是促进游戏引擎发展的一个方面。
本文较全面地介绍了嵌入式3D游戏引擎的主要内容和基础理论,研究的重点
是防在了游戏引擎中粒子系统和多媒体系统的研发。除了基础理论的研究外,本文还研究了移动设备的应用程序开发平台J2ME,基于手机设备的J删D图形
国际标准M3G(JSRl84)以及分析了引擎系统中的人工智能模块。最后在理论与
实践相结合的基础上,实现了一些简单的粒子系统模拟现实生活场景的效果以及
相应的多媒体效果。
关键词:游戏引擎;粒子系统;JSRl84;手机游戏;
Abstract
Abstract
Nowadays,Embedded equipments develope in a fast speed,SO there is huge challenge
also a big chance which the Embedded game need to face.As a sort of lower layer
technology platform,which is devised for 3D game of running on embedded
devices,Embedded 3D gallic engine development has a very expanse room to
advance.It provides game developer with a reusable kemel of code and a series of tools.
At present,embedded devices of running 3D game mainly include:hi曲-powered
mobile,advanced PDA(Personal Digital Assistant),GameBoy and PSP etc.
The emergence of embedded 3D game engine technology is one of 3D gamc
programming development milestones.It also synthetically shows the software
engineering,the specialization divides the work,game unique culture request.The
game engine is one of expressional format of software reusable thought from software
engineering theory in game development.It integrates the most coulmon and the most
important function to form the commou frame platform.Thus,when can'ies Oil the
concrete game product development,the game programmer does not need to start over
from the beginning,but directly transfers the powerful function which the game engine
provides and produces high quality new games in the short time in order tO adapt
intense market competition in game industry.The game engine also urges the game
programmers to carry on more specialized the division of labor.The game often is
restricted in the hardware performance,especially the embedded 3D game,therefore
game often must pursue the hi班efficiency and the higll performance,this present very
higll request to the game development personnel.This kind of hi曲request brings a
more specialized division of labor,part of high levels development personnel ar'e
engaged in game engine development that need very hi曲performance,but the
general level development personnel ealTies on the development of concrete game
product by using the engine.The game product core characteristic is the creativity and
game playable.This needs the game the development to be easy and simple,even if
game flctionists who don't know programming can fleetly realize their creativities.
This also is an aspect of promotion ganle engine development.

This article quite comprehensively introduces the Embedded 3D game engine main
content and the basic theory,but Stresses the ParticleSystem part,and Multimedia part
of the engine.Besides the elementary theory research,this article also studies the
mobile develop platform J2ME.the international standard protocol JSRl84 based on
the mobile equipments’JAVA3D graphic as well as the AI part of the engine.Finally
based on theory and practice union,has realized a simple SccIIC simulated by the
ParticleSystem with the corresponding multimedia effects.
Key words:game engine;particlesystem;JSRl84;mobile game
m
修改提纲
1.第l页/第3段/第2行。
原文为:
重点是防在了?
改为:
重点是放在了?.
2.第13页,第3段,第4行。
原文为:
J2ME的三曾体系结构如下图2一所示
改为:
J2ME的三曾体系结构如下图2―2所示,
3.第16页/第3段/第6行
原文为:
CDC&Connected Device Configuration)
改为:
CDC(Connected Devi ce Configurati01&1)
4.第17页,第1段/第1―3行。
原文为:
Java.1ane C Java
Java.ut I l
改为:
Java.1ang(java
Java.util
5.第43页/第1段/第4行。
原文为:
本文将就笔考对此项技术的运用心得与大家共同讨论。
改为:
文本将对此技术进行详细的分析
指导老师
答辩主席
日期
jjb比赛/
独创性声明
本人声明所呈交的学位论文是本人在导师指导下进行的研究工
作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地
方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含
为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。
与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明
确的说明并表示谢意。
签名: 醐叩年螂日
关于论文使用授权的说明
本学位论文作者完全了解电子科技大学有关保留、使用学位论文
的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁
盘厂允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文
的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或
扫描等复制手段保存、汇编学位论文。
(保密的学位论文在解密后应遵守此规定)
签名: 导师签名:
日期:出哕年f月∥日
jjb比赛/
第一章绪论
1.1课题背景
第一章绪论
自人类诞生以来,游戏成为了人们吴乐的重要方式。纵观人类历史,游戏在任
何时期都占有重要的角色,是所有人类生活的重要组成方式。信息时代的来临,
人们的生活节奏越来越快,在匆忙的生活中,游戏理所当然的成了一种重要的消
遣方式,劳累的人们借用这一种重要的方式来放松自己疲倦的身心。
游戏技术经过很多年的发展,已经出现了许多成熟的技术。这些软件方面的技
术,转而又促进了计算机硬件技术的发展。一直以来,推动处理器和图形芯片最
大的动力一直都是旺盛的游戏需求。这些硬件方面的进步,转而促进了整个计算
机科学的发展,从而为整个人类服务,由此可见对社会的重要性。
在当前游戏产业得到充分重视,许多重要的厂商纷纷进入游戏市场之际,寻
找Console Game(游戏主机)和MMORPG(大规模在线角色扮演游戏)之外的突破
口,是当前探讨的热点。日前比较一致的看法是,手机将作为最重要的游戏平台,
成为全球范围内的下一个游戏的金矿。就当前的数据表明,从游戏设备的数量上
来看,手机已经成为毫无争议的游戏平台之王。
1.1.1手机游戏的类型
基于内容的游戏:
这些游戏传送版权的多媒体内容,如名人的图片、视频片断、音频立体声、
和私人的体育节目,给那些音乐/电影/体育迷们。它成功的关键就是提供值得订
阅的高品质的内容流。
视频游戏:
目前各种传统的游戏平台已经从2D进化到3D。手机游戏也会遵循这种趋势。
现在已经出现手机3D图形引擎。但是,3D是非常资源集中型的。对开发者和图
形设计者的要求较高。本论文实现的就是一个3D游戏引擎。
jjb比赛/
电子科技大学硕士学位论文
1.1.2手机游戏的价值链
要完全理解手机游戏的前景,必须理解资金是如何流动的。这种商业的简直链
与传统游戏或者企业应用有着相当大的区别:
内容提供商(COP)
内容提供商是整个价值链的创造者,由他们来制作游戏。但是,传统的内容提
供商规模都不是很大,没有能力来处理营销问题。在整个价值链中处于被动地位,
得到的利润比例也不高。现在已经有一些有实力的CP开始自己进行产品的运作,
得到的利润比例也在上升。
服务提供商(SP)
游戏发行商收集来自开发者的论题。他们建立商标名,进行游戏售后服务,对
网络游戏还负责游戏服务器的运营,此外还建立与无线通信公司的商业关系。一
般来说是与开发者共享收益。现在有CP和SP合并的趋势。
无线通信公司
移动,联通等无线通信公司是手机游戏分布渠道的中心。通信公司不仅仅控制
网络而且拥有客户信息。是他们决定支持哪种设备和服务,因此获得的收益比例
也是最多的。
无线设备制造商
设备生产商驱动技术更新。他们制造新的硬件并且支持开发平台。实际上,
J2ME的成功主要归功于主要设备制造商对它的采用。设备制造商是通信公司和
消费者之间的一股独立的势力。
消费者
消费者作为价值链的最末端,为以上各方提供者的利润付款。消费者可从发行
商的网站上购买游戏或者通过通信公司提供的内容供应系统(如移动的百宝箱)购
买游戏。
1.1.3手机游戏的发展概况
2005年中国手机用户数为4亿,上网人数超过1亿,而手机游戏的付费用户
数为1400万,中国国内手机游戏市场的整体市场规模已经达到12亿元人民币。
2006年,中国手机游戏市场规模达到18.5亿元,成为超过无线音乐和娱乐内容
jjb比赛/
第一章绪论
服务的最大应用。IC Insights的预测数据显示,全球手机用户到2007年底前将达
到30亿户,这个数字意味着届时全球66亿人口中大约45%将拥有手机,诺基亚
公司也预测2007年中国手机用户总数将突破5亿。
如今的移动通信时代,正处于从话音迈向多媒体的进程中,应用极为关键,
而新型面向移动通信的3D手机游戏引擎的出现,为丰富多彩的游戏方面的应用
开发提供了平台。中国WAP终端的日益普及、业务发展环境的改善和市场需求
的快速增长都为WAP业务的发展提供了良好的机会,在这样的大环境下,手机
移动增值业务的需求被提升到了一个新的层面。市场需要多元化的应用和能为移
动用户带来更多附加价值的内容。目前手机游戏也正在像PC机上的游戏一样,
呈现网络化和3D化的趋势。
随着技术和市场的不断迈向成熟,己有越来越多的手机网络游戏和3D游戏
推上了市场。网络游戏例如空中猛犸的《异三国online)、魔龙国际的《水晶之树》、
盛大的《传奇世界.练功狂人》和《梦幻国度.我的宠物》、数字鱼&神话之鬼怪三
国》、美通无线公司《三界传说》。05、06年是3D手机游戏开始流行的两年,各
个手机游戏公司推出了相当多的3D游戏,例如数位红推出的《终极防线2》、《国
宝闯天关》、《极限滑雪》、《极剑道》,动动拇指工作室的强目啸江湖》,Com2uS
公司《幸福高尔夫3D),Kayak互动公司的手机版Carmageddon 3D(暴力赛车)。
1.2国内外研究现状
在过去的几年中,手机的软硬件都得到了极大的发展。作为一个广泛普及和频
繁使用的一个移动计算设备,手机成为了理想的游戏平台。就当前用户数量来看,
手机已经成为了全球第一大游戏平台。随着将来手机软硬件的飞速发展,手机的
娱乐能力将被极大地增强。
1.2.1国内外手机硬件研究现状
众多手机品牌都推出了自己的高端手机以支持JSRl84协议,来应对手机游戏告
诉发展的需求,如下表:
jjb比赛/
电子科技大学硕士学位论文
表1-1支持JSRl84手机举例
Motorola NoIda Siemens SonyEricsson Kvocera Samsung
E680 6630(Symbian8.∞ s65,s165 k700i,s700 koi(B尉BⅥn SCH.i519
i860 6255(CDMA) ex66.sk65 7.500,f500i
上表仅列举了众多手机中的沧海一粟,仅为参考。
手机硬件的发展一日千里,新技术层出不穷。表1.2中对最近3年的手机技术
进行了描述。
表1-2近年手机硬件发展
06―2007
处理器50MHZ Intel X.scale 400 800MHZ
MHZ
显示器128X128 320X240 320X240
8Bit 16Bit 16Bit
存储能力100K 2M一10M 4GB硬盘或半导体
存储器
输入设备数字键盘数字键盘+5向遥杆+ 数字键盘+5向遥杆+
摄象头+触摸屏摄象头+触摸屏+折叠
式键盘+红外投影全
尺寸键盘
内存250K 2M 64M
网络GPRS/CDMA GPRS/CDMA/Btue 更多无线宽带技术
Tooth/、)嘣
1.2.2国内外手机游戏引擎研究现状
目前,中国手机游戏产业生态系统已经基本成形,手机游戏已经初步拥有了
相当数量的用户群,开始进入规模化运营阶段。但是,国内在手机游戏开发方面
仍然是处于落后地位的,尤其是三维游戏领域,其技术壁垒由日、韩等国所垄断。
由于起步较晚,国产游戏产品的开发一直比较落后,而基于3D的手机游戏引擎
的开发因为前期投入高、风险大而无人问滓。因此,国内大部部分的手机游戏开
发公司都采用国外的游戏引擎,或者并没有从自己的游戏中提炼出游戏引擎。
国内开发手机3D游戏引擎最著名的公司是北京数位红软件应用技术有限公
jjb比赛/
第一章绪论
司(目前是盛大公司的全资子公司)。在2001年,该公司就已经着手自己研发游
戏引擎,两年之后,该公司成功开发出一套基于移动设备的游戏引擎――Dragon
Bone Game Engine for Mobile Phone(龙骨1,它可以支持目前大部分的高端移动设
备,不仅节省大量时间,而且能让美术人员最直观的看到其设计效果。而它最大
的价值就在于可以使开发人员的一套代码在不需要改动程序的情况下编译运行在
不同设备平台上(改动不超过20%)。目前使用它开发的游戏已经超过了30款,性
能稳定、高效。引擎提供了非常完善的8个模块与3个增强模块,可以完全满足
各类游戏开发的需要。游戏引擎可以直接嵌入到开发者的程序中,不需要额外的
支持程序即可使所开发的游戏独立运行。游戏引擎简单、易用,编译后体积很小,
占用内存也很小,可以节省玩家的内存空间及无线下载费用。
反观国外,手机3D游戏引擎研究比较活跃。游戏引擎从技术到商业运作都
有比较丰富的经验。其中较著名的是Fathammer公司的X.Forge引擎。X-Forge 3D
游戏引擎采用两层架构。低层提供硬件抽象、上层提供全3D特性的引擎和游戏
世界中需管理的图形对象模式。目前X.Forge引擎发布的商业授权已经超过15个。
美国英特图(1mterGrafx)技术公司是移动3D引擎及应用的提供商。它为移
动终端设计公司、制造商、运营商、内容商和增值服务商提供全面的移动3D解
决方案。目前英特图公司的移动3D应用方案已经能让任意一款主流手机上运行
各类3D屏保和部分3D游戏,如果加载英特图3D引擎的话,将得到更为细腻、
动感的画质和全方位的互动性。英特图进入中国后保持和各个手机厂商的密切联
系,除了和NOKIA合作已经推出的外,联想及CECT签署了相关
合作协议推出3D手机。CECT在04年末推向市场的868A手机内置了该公司的
3D引擎后拥有三款各具特色的3D屏幕保护程序,在用户选中其中任意一款屏幕
保护程序后都可以充分互动;在联想即将推出的3D手机E700中同样内置了3D
屏幕保护程序,用户可以通过按键选择不同视角来欣赏3D图形。据了解,多家
国内主流厂商都对英特图公司特有的移动3D技术表现了浓厚的兴趣和合作的意
向。
移动增值服务提供商也已经迅速捕捉到这个巨大的市场,国内多家sP同时
和英特图公司进行合作,其中TOM和中华网已经在各自的WAP网站上提供了
3D相关内容的下载。同时在2006年中旬,该公司推出了基于互联网和WAP平
台的中国首家手机3D娱乐网站www.3Dviva.com及wap.3Dviva.eom,用户可以
通过互联网或手机访问这两个站点,浏览、下载各种3D内容,尽享3D技术给手
机带来的全新感受。英特图公司的引擎研发非常成功,这无疑将推动手机游戏向
jjb比赛/
电子科技大学硕士学位论文
3D发展。但它是一个国外的产品,不能代表我国的研发水平,并且他们收取较高
的授权费用,因此对国内的手机游戏制作公司来讲是可望而不可及。英特图把他
的3D引擎嵌入到手机硬件中去,这样一来给游戏开发商带来的是要根据手机的
具体型号开发游戏的困难性,而不像基于Java平台的引擎那样具有超越平台的便
利性,该引擎的推广有一定的困难。
日本的手机游戏业也处于比较领先的位置。日本m公司是移动设备的多媒
体中间件开发商和供应商。他的旗舰产品是在移动设备上的3D图形Mascot
Capsule引擎。Mascot Capsule引擎是实时3D图形软件,它能够完全显示3D影
像,包括背景。同时还引进了z轴的概念。该公司在日本占有100%的市场份额,
最近也在冲击韩国和中国市场。不过它们采用的方式是与手机生产厂家联手,把
引擎嵌入到手机中去,游戏开发商需要针对相应的手机进行开发。这样会增加开
发的成本,不利于游戏的移植。由于手机的厂家和种类较多,用这种引擎开发游
戏会受到限制。
国内外3D手机游戏引擎的开发已经逐步展开,随着手机硬件的发展特别是
手机显示芯片的推出,3D手机游戏引擎的开发会越来越多,竞争也会越来越激烈。
同时著名的网络游戏引擎公司也会加入到3D手机游戏引擎的开发队伍里来,这
必将引起引擎开发领域中的竞争,不过正是因为这样的竞争相信手机游戏引擎的
开发会有一个质的飞跃。
1.3本文的贡献和论文的结构及内容安排
1.3.1论文的贡献和结构
本文较全面的介绍了3D游戏引擎的结构、功能和关键技术,并且着重研发了
游戏引擎中的粒子系统模块和多媒体系统模块。其研究的途径一是借鉴台式机3D
游戏引擎实现,二是研究基于手机设备3D图形库的国际标准M3G。在导师的悉心
指导下,作者在研究生的后两年中阅读并分析了大量有关3D游戏引擎技术的资料
及相关学术论文,对3D游戏引擎技术的概念、特点进行了的讨论和分析;总结归
纳了若干开源的基于J2ME的手机3D游戏引擎项目,基于对(3D手机网络游戏引
擎研究与设计》的要求,设计并实现了一个简单的手机3D游戏场景模拟粒子系统
及相应的多媒体系统。
本文的创新之处在于基于JAVA技术实现手机应用程序的开发方式来实现一
jjb比赛/
第一章绪论
个简单的手机3D游戏场景模拟粒子系统及相应的多媒体系统。图形引擎底层采
用基于JAVA的嵌入式3D图形库标准M3G,使得基于该游戏引擎开发的3D游
戏真正地实现了灵活性和与硬件设备的无关性。
1.3.2论文的内容安排
本文在第一章主要介绍课题的背景和研究意义以及国内外的研究情况等,指
出了论文内容和章节安排。
第二章主要对3D手机游戏中所要涉及的相关技术进行了简单的介绍。
第三章对3D游戏引擎概貌做了一个简单的介绍,对其中的关键技术做了初
步的研究。
第四章主要阐述了粒子系统模块的设计与实现,包括了粒子特性的介绍和在
J2ME平台上的实现的一个具体的例子。
第五章主要阐述了多媒体系统的的设计与实现,给出了一个相应的范例。
第六章是对全文的总结和未来工作的展望。
jjb比赛/
电子科技大学硕士学位论文
第二章相关知识简述
在众多增殖业务中,嵌入式游戏(主要为手机游戏)因方便携带、不受时
间、地域的限制,被众多玩家推崇,各种手机游戏层出不穷。目前手机游戏己经
成为整个游戏领域发展速度最快的部分。另外,手机游戏的兴起也改变了传统的
行业结果,将来自传统商业公司(如SunMierosystems)、设备生产厂(如Nokia,
Motorola)和网络经营者那些原本不可能在一起的商家结合到了一起,产生出新的
行业结构和价值链。
2.1嵌入式游戏特点
普通游戏和嵌入式游戏是以开发所依赖的设备来进行区分的。普通游戏是
基于PC或者家用游戏机等设备所开发的游戏,而嵌入式游戏则是基于手机设备
来进行开发的游戏。由于设备特性的不同,导致了与普通游戏开发相比,嵌入式
游戏开发在开发团队的规模、预算的多少、开发周期的长短、目前业界的开放标
准以及后期的部署等方面具有以下不同之处。
(1)开发预算较少
传统游戏,如果是中型或者大型项目,则起开发预算会达到数百万元人民币,
这是一个相当庞大的数字。而手机游戏项目的开发预算则几乎不会达到百万元人
民币的数量级,甚至大部分中小型项目只需要数万元人民币。造成这种差异的主
要原因是嵌入式设备本身有限的运算速度和显示能力,以及其对应程序大小的限
制。因此,手机游戏的开发者不可能像对待传统游戏那样投入大量的财力、物力。
(2)开发周期较短
传统意义上的中型以及大型游戏项目一般要开发一至三年。而目前大部分手
机游戏项目仅仅在几个月之内就能够完成开发。因此,如果具有一个小型开发团
队和一个较小的预算,就完全有可能在比较短的时间内成功开发并且发布一个具
有相当水准的手机游戏。
(3)开发团队较小
传统的中型或者大型游戏项目的开发团队通常至少要由10至30人来组成。
而大部分手机游戏由于规模比传统游戏小,所以一般情况下只需要3至5人的团
jjb比赛/
第二章相关知识简述
队开发,有些规模特别小的项目甚至仅需要一个人来完成,即同一人完成游戏设
计和游戏开发。
(4)设备的网络支持能力不同
众所周知,支持传统游戏的设备,如PC、家用游戏机等,并不是天生就具有
网络支持能力的。尽管对FC来说,目前通过调制解调器较容易实现联网。但是
其较大范围的应用也仅仅是大概8年前才开始的。而其他传统游戏设备只不过是
最近一段时间内才能实现很小一部分能够联网。
而手机就完全不同了,它天生就具有支持网络的功能。这种能力使得手机游
戏与我们之前看到的任何游戏都不同:它虽然受设备因素的限制,但是都可以支
持网络并且实现多人游戏。即使手机设备的处理能力目前仍然非常有限,甚至会
使人想起古老的计算机技术,但这仍然无法掩盖其出色的网络性能。
(5)业界的开放标准不同
控制台游戏(家用游戏机和掌上游戏机)开发需要从控制台游戏厂商取得授
权和支持,需要制服给他们“平台使用费”。在无线应用程序世界(如同在PC游
戏开发中一样),你可以免费开发任何款式的游戏,而不需要支付诺基亚、Sun或
其他平台提供商任何费用。此外,目前的手机游戏开发平台标准可以向开发者发
布、开发并免费取得。
(6)游戏的部署方法不同
传统的游戏,尤其是单机版的游戏,主要是通过软件市场来发售。而手机游
戏的部署方法非常不同,可以通过OTA(Over The Air)方式下载并安装,或者
通过数据线、红外线接口、蓝牙等传送到手机设备中。
2.2 J2ME概述
J2ME,也就是Java 2 Platform Micro Edition,是在1999年6月的JavaOne
大会上正式被提出,是Sun公司专门为小型的、资源受限的消费性电子设备的应
用程序开发所提供的Java版本。目前,JZME平台被认为是主流的手机游戏平台
之一,它为开发者、设各制造商、网络通信公司和消费者广泛接受。
2.2.1选择J2ME平台的原因
随着移动通讯技术的发展和无线数据业务的进步,手机游戏市场日渐繁盛。
电子科技大学硕士学位论文
从纯粹的文本信息到语音、图像多媒体内容的加入,从2.5G网络的繁荣到3G呼
之欲出,手机游戏领域已经吸引了众多软件开发商的目光,使得游戏开发者和游
戏玩家在共同面对一个振奋人心的游戏新世纪。J2ME(Java2 MicroEdition)作为一
种以广泛的消费性产品为目标,高度优化的Java运行环境。随着中国移动、中国
联通把J2ME作为以后应用产品运行的基本平台,大部分运营商把支持J2ME作
为对手机供应商的一个基本要求,J2ME无疑将成为手机平台及相关移动通信设
备上软件开发应用的未来之星。而基于J2ME的游戏引擎框架则具有巨大的实用
意义。
到目前为止,手机上的应用软件开发几乎都是基于J2ME平台的。这是由于
无线Interact新应用的出现,手机软件的需求越来越大但是如果使用c语言和
专有的实时操作系统,不仅开发速度慢,而且没有动态加载应用程序的能力,导
致手机上的应用程序开发很困难。一方面,单纯依靠手机厂商自身的软件开发能
力难以满足市场的需求,另一方面广大的软件开发商却又无法参与进来,这无疑
极大地制约了新应用的推广与普及。其次,目前大部分手机访问Intemet只能通
过WAP(Wireless Application Protoc01)方式,而且只能访问WML(Wkeless
Markup Language)网页,而不是主流的HTML网页,也不能显示复杂的图形格
式,此外,WAP采用的Browcr/Server方式访问Interact,能提供的功能很有限,
并且,因为现有的wAP解决方案不够智能化,又不能访问本地存储区,如果进
行在线交易会增加服务器负荷,使服务器的反应速度变慢,使无线Interact的应
用受到了很大限制。
J2ME的出现则使上述问题迎刃而解。因为J2ME是基于Java语言的,所
以它天生就具有以下优点【1l:
1.动态内容传输。新的应用、服务和内容可以通过不同类型的网络动态下载。
2.安全。类文件校验、明确定义的应用程序编程接口和安全组件确保了第三
方应用程序的行为是可靠的,不会对设备或者网络造成损害。
3.交叉平台的兼容性。标准化语言组件和库意味着由于支持J2ME配置和描
述所带来的约束使应用和内容可以在不同设备之间灵活地传输。
4.离线获取。不用激活网络连接,应用就可以被使用。这种特点降低了传输
费用,减轻了可能的网络故障带来的影响。
5.一种功能强大的现代面向对象的编程语言。Java相对于当前用于无线软件
开发的编程语言和工具来说具有更加完善的抽象机制和更高级的程序构造,这使
得应用开发更加有效。
第二章相关知识简述
6.巨大的开发者团队。据估计,在全球有超过300万的Java软件开发者。
Java也正迅速地变为和c语言一样在学院和大学里被用于教学的流行的编程语
一日。
这些特性使第三方软件开发商可以很容易地介入应用程序的开发,并且可以
很方便地将应用程序安装到手机上,开发周期也大大缩短,而且还能支持应用程
序的动态下载和升级。J2ME提供了lr兀甲协议支持,使手机能以PC机使用
的Client/Server方式直接访问Internet的全部信息,此外还能访问本地存储区,
提供最高效率的在线交易。J2ME应用程序除了能够更好地完善手机上己有的应
用外,还进一步增加了字典、图书、游戏、遥控家电和定时提醒等新的应用,并
能访问电子邮件、即时消息、股票和电子地图等信息。将J2ME技术应用到手机
上绝不是强制的,最重要的一点是这种应用是通过补充现有的技术和标准循序渐
进地完成的,而不是同这些现有的技术和标准竞争。J2ME并没有为无线设备定
义一个新的操作系统或者一个完整的系统软件栈,它只是定义和标准化了一种可
移植的无线应用开发环境,主要是针对第三方应用开发商,将设备软件开发向第
三方开放,这个环境可以灵活地附加到设备制造商开发的已经存在的软件和硬件
之上,并且不会对已经存在的系统软件造成影响。
随着无线应用与嵌入式系统的愈来愈受到人们的重视,SUN公司推出了
J2ME来迎合这一趋势。J2ME来自于传统的计算机体系,主要针对消费性体系进
行了改进。SuN认为,未来的信息设备将比我们今天的更为customizable和
personal。这一点我们可以从手机和PDA的流行程度看出。所以为了开发面向这
些设备的应用软件,SUN推出了J2ME(Java2 Micro Edition)。
J2ME(Java 2 Micro Edition)技术在1999年的JavaOne Developer Conference
大会上正式推出,是Java2的一个组成部分,它与J2SE、J2EE并称。J2ME是一
种高度优化的Java运行环境,主要针对消费类电子设备,例如蜂窝电话、可视电
话、数字机顶盒、汽车导航系统等。其实Java语言原本是为嵌入式系统设计的,
但它随着Internet的发展占领了PC端和Server端,而J2ME也将Java语言与平
台无关的“编译一次,到处运行”特性移植到小型电子设备上,允许移动无线设
备之间共享应用程序。用Java编写的程序可以运行在不同的终端上,开发商无须
为不同的终端建立特殊的应用,制造商也只需要简单地使它们的操作平台支持
Java即可。
电子科技大学硕士学位论文
2.2.2 Java 2平台划分
Java 1.0发表之后,Java就被广泛地使用在桌上型应用程序以及Applet的
开发上。从Java I.1开始,Java又重回嵌入式系统的应用,基于此SunMicrosystems
发表了EmbeddedJava与Personal Java两项规格。其中EmbeddedJava是为了资源
有限无显示设备的嵌入式系统设计的,Personal Java则是为了拥有网际通讯且有
显示系统的消费性电子装置设计的。当Java的版本演进到Java2时,为了明显区
分各种Java的应用,Sun Microsystems将Jawa平台一分为三,分割为J2EE、J2SE
以及J2ME三种版本。J2SE(Java 2标准版本),是以台式机的典型应用为目标。
J2EE(Java 2 Enterprise Edition)扩展’J2SE开发包,目的在于服务器端开发。在数
据库访问、消息管理、进程间通信和事务处理等诸多方面增加了新的特性。J2ME
的目标是消费类电子设备上的Java运行环境。这样J2ME(Java 2 Micro Edition)
就出现了。
Java 2,Standard Edition(J2SE):为台式的开发提供完整的开发环境,对台式
机及服务器的应用程序部署提供环境,同时对要求严格的嵌入式和实时环境提供
支持。
Java 2,Enterprise Edition Q2EE):则是一个适合分布式的、多用户、企业级应
用系统运转的平台。是开发轻便、稳定、安全且具有高扩展性的服务器端应用的
工业标准。它以J2SE为基础,增加了web services、组件模型、管理和通讯的API。
Java 2,Micro Editmn(J2ME):它既算不上是一个软件,在一定意义上也不能
算是一种规范。Sun Microsystems将J2ME定义为“一种以广泛的消费性产品为
目标的的高度优化的Java运行时环境,包括寻呼机、移动电话、可视电话、数字
机顶盒和汽车导航系统。一J2ME是为了支持诸如PDA、手机等此类小型的嵌入
式系统、实时系统及移动设备而推出的一系列的技术和规范的总称。
他们之间的关系如[]t2j:
第二章相关知识简述
2.2.3 J2ME体系结构
图2-1java体系结构
由于移动设备厂商很多,而且功能和具体接口都不相同,J2ME在开发的通
用性方面是通过一个特殊的配置文件来实现的。J2ME将不同的设备进行分类,
形成了一定的规范,不同设备的开发需要遵循这些规范,又可以通过配置文件根
据自身的情况灵活地选取需要的开发环境进行开发。每个配置为一组通用设备提
供最小的Java运行平台,这些配置文件就是对具体的硬件类型进行配置,方便
J2ME辩认不同的设备。
到目前为止,在J2ME中有两种配置规范,一种是有限连接设备配置(cLDC,
Connected Limited Device Configuration),这种配置定义了主要使用电源、小型的
设备,例如手机、PDA等;一种是连接设备配置(CDC,Connected Device
Configuration),这种配置对应于那些有电源的,电力充裕的设备,如电视机、冰
箱等。
为了支持有限连接设备类别所要求的灵活性和可定制性,Sun公司将12ME
体系结构设计成模块化的和可伸缩的。J2ME技术在一个完整的应用程序运行时
模型中定义了这种模块性和可伸缩性,在该模型中的三个软件层都构建在设备的
主机操作系统上。J2MIE的三层体系结构如下图2.所示13],从图中可以看出J2ME
体系共分三层Java虚拟机层(JavaⅥnual Machine Layer)、配置层(Configuration
layer)、简表层(Pfofile Layer)。
电子科技大学硕士学位论文
金萤耋
邑 吾璺害
蓍亭

n 2

n 骘
吕蒌害
曲 蓍虿


CDCCore
CLDC
CORE
Classes Classes
JVMKVM
图2-2 J2ME体系结构图
●主机操作系统层(Host Operating System Layer)
该层为特定硬件设备的操作系统层。
?Java虚拟机层(Java&,,-utual Machine Layer)
这一层提供了具有小尺寸的、可移植的、易使用的Java运行环境,它运行于
设备的主机操作系统之上,而且支持一个特定设备的J2ME配置。其中KVM适
合于具有不超过几百KB内存的设备。这一层是针对设备本地操作系统定制的
Java虚拟机的实现,就像使用所有Java技术一样,J2ME的核心也在虚拟机中。
●配置层(Configuration Layer)
配置层定义Java虚拟机的功能和特定类别设备上可用的Java类库的最小
集。从某种程度上说,一个配置定义了Java平台的功能部件和库的共同性,开
发者可以假设这些功能部件和库在属于某一特定类别的所有设备上都是可用的。
这一层对用户是透明的,但它对描述的实现者非常重要。
●简表层(Profile Layer)
简表层规定了具体的设备或特别的应用程序编程接口(API)的最小集,描
第二章相关知识简述
述在一个特定的配置上面实现。应用程序是针对特定的描述编写的,因此可以移
植到支持该描述的任何设备上,一个设备可以支持多个描述。用户和应用程序开
发者看到最多的就是这一层。Java虚拟机层、配置层和描述层一起为J2ME应
用程序提供了一个标准的运行时环境,这个环境允许新的应用程序和服务动态地
被安装到各种终端用户设备上。在手机上,KVM,CLDC,MIDP分别实现了J2ME
体系结构中的Java虚拟机层、配置层和描述层。在下面部分,笔者分别对KVM,
CLDC,MIDP作一个简单介绍。
J2ME同时把J2SE API和它的Java虚拟机进行了比较。虽然J2SE虚拟机通
常被称为一种JVM,但是J2ME虚拟机、KVM和CVM都是JVM的子集。KVM
和CVM均可看作是一种Java虚拟机,是J2SE JVM的压缩版。如图2.所示是
J2ME的总体架构14】。
Servers矗Servers&High?end PDAs Mobile Smart
enterprise personal TV set-top boxes phonQs毫cards
computers computers Embedded devices entry-|evil
POA●
Jm Pbdome,Mk∞EdMon Uj%U日
图2-3 J2ME总体架构
总体来说,J2ME使用配置和简表定制Java运行时的环境(JI也)。作为一个
完整的JRE,J2ME由配置和简表组成。配置决定了使用的JVM,它将基本运行
时的环境定义为一组核心类和一个运行在特定类型设备上的特定JVM。简表定义
应用程序,它向J2ME配置中添加特定域的类,定义设备的某种作用。Java虚拟
机是J2ME技术的核心,而配置和简表提供特殊环境的类应用程序接口。配置是
用于一组通用设备的最小的Java平台,简表则为具体的设备家族或特别的应用程
电子科技大学硕士学位论文
序提供更具体的功能。
2.2.3.1 Oonfiguration概述
支持J2ME的硬件是多种多样的,因此为了满足不同硬件的开发要求,J2ME
规定了Configuration的概念。Configuration就是支持一组通用设备的最小JAVA
平台,同一个Configuration里的硬件其数据处理能力,存储容量,网络连接能力
等这些最基础的特性是相同的,由此来保证不同设备见的平台相容性。
虽然支持J2ME的硬件平台之间存在着很大差异,但大体可以分为两大类,
一类是相对比较高端的设备,例如:电视机顶盒、网络电视等,其运算能力相对较
佳、并且具有独立电源,在电力供应上相对比较充足,另一类是相对比较低端的
设备,例如:移动电话、寻呼机、PDA等,其运算功能有限、由于是用电池做电
源,电力供应也有限。相应的,SUN把Configuration分为CLDC(Connected Limited
Device Configuration)和CDC&Connected Device Configuration)两大类,这两个
Configuration是针对设备软硬件环境严格定义的,比如CLDCl.0定义了内存大
小为64.512k,任何设备如果支持CLDCl.0,就必须严格满足定义,不能有可选
的或者含糊的功能。
CLDC(Connected Limited Device Configuration)
CLDC提供一个适合于小型的、资源受限的、连接的设备上使用的标准Java
平台。其设计目标是定义一个标准的,占用内存极少的平台来满足资源很少的那
些设备的要求。它可以确保动态,安全地将交互式Java应用部署到一些小的设备
上去。确保第三方的应用开发人员可以为别的设备发应用程序。
可以使用CLDC进行开发的目标设备具备以下几个特征嘲:
?160KB(1.1)内存用于运行虚拟机和基本类库
●32 KB内存用于运行时内存分配
●16位或者32位处理器
?有限的用户界面
●使用电池供电
?无线网络连接,低带宽
CLDC类包含了一套标准的函数集合,但是正如上面所显示的,CLDC工作
的设备性能收到很大的限制,因此相比J2SE}CLDC舍弃了许多重要的类和特
第二章相关知识简述
征,只保留了最核心的类,主要由三个包组成:
?Java.1ane C Java编程语言的基本类)
?Java.ut i1(集合、日期和时间支持、各式实用工具类)
●Java.io(基本输入输出)
即使这些从J2SE继承的的类,也大大缩了水。例如java.util的类与接口由J2SE
的47个缩减到10个。另外两个也有相应缩减。
除了上面的三个包外,CLDC增添了一个新的包iavax.microedition,该包包
含了一些管理Midlet程序生命周期的类,并且定义了一个通用连接框架((Generic
Connection Framework,GCn。通用连接框架把J2SE中的文件,sockets,HrrP请
求和其他输刀输出机制的概念抽象为更简单的一套类。可以说,它提供了Java.io
和Java.net的同样功能,却不需要设备的特殊能力。
总的说来,CLDC在内存严格限制的条件下实现了与JAVA虚拟机相当的兼
容性,
其不同点主要有下:
?不支持浮点数据类型(在最新的CLDCl.1版本中己经可以支持浮点数据
类型)
●不支持JIVI
?没有反射(reflection)特性
?不支持线程组(thread groups)或守护线程(daemon threads 1
?没有弱参考(weak references)
?有限的错误处理(error handling 1
CDC(Connected Device Configuration)
CDC则是针对内存量相对较大,处理器相对比较强的移动设备设计的,主要
包括机顶盒、数字电视、车载计算设备、网络电话等,其特点是有线连接、电源
稳定、设备资源比较受限。支持CDC的设备平台在硬件要求上需要最少256k的
运行时动态内存以及512k的内寸来运行,另外连接的网络具有连接性、持久性和
一定的带宽。
CDC基于CLDC基础上,包含了CLDC所有的类和接口,CLDC平台上的
软件都可以直接在CDC上运行。不过虽然CDC功能上要比CLDC强大许多,但
是其可以使用的Package仍然大大少于J2SE的包。J2SE,CLDC,CDC三者之间的
关系如下图所示嘲:
电子科技大学硕士学位论文
图“J2SE,CLDC,CDC关系图
2.2.3.2 Profi Ie概述
cDC和CLDC仅仅是对各类设备中最具共性的配置提供了基本的功能集合,
但是并没有提供给开发者与用户存储设备、网络等应用工具,同时在实际应用中,
不同的设备之前存在着很大的差异。因此,在Configuration的基础上,又提出了
Profile(简表1的概念
Profile在本质上是应用程序和各种设备之间的协议。同一类设备中的的所有
设备都必须实现Profile所定义的特征,并且设备上的程序只使用这个特定Profile
所提供的功能。这样通过这个Profile就可以方便的在同一类设备之间进行移植。
新的设备只要支持这个Profile就可以直接使用基于这个Profile之上的所有应用。
Profile虽然定义了JavaAPI接口,但是底层如何实现是由各厂商自己决定的,
如M3G定义了3D接口,但是底层实现既可以使用硬件加速,也可以由c程序模
拟,或者部分由硬件实现,部分由软件实现。
目前使用最广泛的Profile是MIDP(Micro Information Device Profile)}MIDP
定义了能在Java手机上运行的Java程序的规范,包括应用程序生命周期,各种
uI界面组件,支持Record存储和Http连接等等,符合MIDP规范的Java程序被
称为MIDlet,可以直接通过无线网络下载到手机并运行。
硬件需求
MIDP对硬件的的要求很简单:
?在内存上,要求移动设备具有128kb非易失存储器f当用户在关闭设
备和打开设备期间,仍能保持其内容不丢失。通常认为对非易失性存
储器的操作是都只读模式的,进行写操作需要特殊步骤)用于用装载
M工DP的组件,8kb易失存储器(在用户关闭设备后不保存它的内容,
第二章相关知识简述
通常认为对它的操作包括读模式和写模式,对它的访问不需要特殊步
骤)用于装载应用程序产生的固定数据以及32kb易失存储器用于在
Java程序运行时使用。
?对屏幕的要求是大小至少为96 x 54,1位的显示深度以及1:1的纵
横比
-输入方式可以是单手键盘,双手键盘,触摸屏中的一种或几种
_设备要能够进行双向、无线、可间断、带宽有限的网络连接
软件需求
因为能够支持上面所要求的硬件设备其软件能力是不同的,有的具有功能
完善的操作系统,有的甚至连文件系统都没有,所以MIDP对设备的软件功能只
能做最少的要求:
◆用于控制底层硬件的最小内核(例如中断,异常,最小时序的处理)。
这个内核必须提供至少一个可运行的实体去运行Java虚拟机(J})。此
内核不需支持独立的地址空间(或进程),也不需要保证任何实时功能。
◆对非易失存储器进行读和写的机制,以支持“永久存储”的API。对
无线网络的读写访问,以支持连网操作。
◆定时机制,即用来提供永久保存记录时的时间戳,以支持定时器操作。
◆最基本的显示位图能力。
◆提供从三个输入机制中捕获一个(或几个)用户输入的机制。
◆能控制应用程序生命周期的机制。
MIDP包含的功能
为了便于移植,MIDP并没有定义所有的功能,而是只定义了通用的最小功
能集合,以获得更强的移植特性。它包括【刀.
◆用户界面:MIDP提供了对手机设备的屏幕和硬件键的细粒度控制。
在游戏图形方面最新的MIDP 2.0为游戏应用程序定义了一个完整的
API,而在3D图形方面,JSR-184试图标准化手机上的Java 3D API。
◆端到端传输协议:H,r11P协议支持在MIDP中是强制性的,MmP2.0 在哪的基础上提供了端到端的SHTIP侣CCUl'e Hyper
TextTransmission Protocol安全超文本传输协议1安全传输
◆网络连接:MIDP通过一般连接框架(GCr)来获得对网络连接的支持,
在MIDP 2.0中,程序可以通过PUSH机制进行注册,然后设备在特
定信息到达后就回自动调用指定的MIDleta
电子科技大学硕士学位论文




持续性存储:MIDP上的标准数据持久性设备是记录存储管理系统
(RMS)a RMS存储线性记录中的二进制数据(按字节排列)。它只提供
搜索存储和对搜索结果排序的功能,但是不允许随机存储也不支持任
何分层的数据结构。
定时器
应用的下载管理
应用的生命周期管理
2.2.3.3 Optional Packages概述
除了Configuration与Profile之外,在J2ME规范之中还定义了厂商选择性实
现(Optional Packages,选择性包)。所谓的厂商选择性实现,通常是一些本身具有
独立价值的API,厂商可以依照自己的需求,选择性地实现其中某些规范。
目前CDC之上的Optional Packages如表2.1所示。
表2.1 CDCOptional Packages
JSR66
RMI op曲nal Packages
http://jcp.org/jsr/detail/66.jsp
JSR80
USBAPI
http://jep.org/jsr/detail/80.jsp
JSRll3
SpeechAPI
http://jcp.org/jsr/detail/113.jsp
JSRl69
JDBC optional Package
hRp://jcp.org/jsr/detail/169.jsp
JSR209
Advanced Graphics and User Interface Opfional Package for the]2METM Platform
http://jcp.org/jsr/detail/209.jsp
表2.2显示了定义在CLDC之上的Optional Package
第二章相关知识简述
JSRl77
Security and Trust ServicesAPI for J2ME
hup://jcp.org/jsr/detail/177.jsp
JSRl79
LocationAPI
htto://icD.om/isr/detail/179.iso
JSRl80
S球API for J2ME
httD://icD.org/isr/detail/180.ian
JSRl84
Mobile 3D GraphicAPI
http://jcp.org/jsr/detafl/184.jsp
JSRl90
Event TrackingAPI for J2ME
hRp://jcp.org/jsr/detail/190.jsp
JSR205
Wireless MessagingAPI 2.0
http://jcp.org/jsr/detail/205.jsp
JSR211
Content HandlerAPI
http:/日cp.org/jsr/detail/211jsp
JSR226
Sealable 2D Vector Graphics API for J2ME
hnp://jcp.org/jsr/detail/226.jsp
JSR229
PaymentAPI
hHp:/日cp.org/jsr/detail/229.jsp
JSR230
Data SyncAPI
http.-//jcp.org/jsr/detail/230.jsp
至于各个包具体的作用,在这里就不做叙述了,下面只针对本文需要用到的
两个包做详细的分析和介绍。
2.2.4 MIDP手机程序开发流程
集成在手机中的J2ME通常采用CLDC/MIDP结构,这是J2ME层次结构的
实例之一。其中CLDC包括KVM以及J2ME核心API,MIDP包括用户接口(UI)
和H'ITP连接等J2ME的扩展API。CLDC提供了对基本Java语言的支持,总的
来说是与Java语言完全兼容的。在CLDCl.1版本中,提供了CLDCl.0中未提供
电子科技大学硕士学位论文
的功能,如开始支持浮点数据类型,类库java.1ang包中包含了Float类的定义。
在MIDP中,基本的执行单元是MIDLet类。MIDlct类是继承自
javax.microcdition.MIDlet的类。在MIDP应用中,系统只调用MIDlet类的一个公
共、无参的构造函数来实例化这个MIDlet类。
完整的MIDP手机程序开发流程如下表:
表2.3手机程序开发流程
流程工具输入输出
编译javac.exe编译源文件({.java) 未混淆的类文件
混淆第三方提供的工具未混淆的类文件混淆后的类文件
(}.class) (}.class)
预审preverify.exe预审混淆后的类文件经过预先审核的类文
核(}.class) 件(}.class)
包jar.exe打包经过预先审核的类文包文件($.jar)
件(}.class)
编写描述文件文本编辑工具描述文件($.jad)
安装运行传输工具(IR/BT/数包文件(}.jar)和描在仿真器或手机上正
据线/OTA) 述文件(}.jad) 式运行
编译就是将}.java文件编译成二进制的}.class文件(虚拟机只认识二进制字
节码文件)。由于class文件格式透明的缘故,java文件很容易被反汇编。因此,
如果不希望源代码外泄,就一定要进行混淆(obfuscate)。所谓混淆,就是利用工
具,将方法名、类名改成没有实际意义的特定的字符及代号,增加阅读的难度,
这样就充分的保护了开发者的知识产权,同时混淆还可以减少程序的大小。这是
由于混淆器将设定的方法名、类名变成没有意义的短字符或代码,无形中减少了
程序的大小。对于手机程序设计来尤为重要,每K的减少都意味着可以获得更多
的空间。混淆器都是第三方软件开发商提供的,许多都是开源的,可以免费使用。
常用的混淆器是Pr06uard和RetroGuard。
ProGuard是一个非常好的混淆器。它的特点是除了可以混淆保护开发的代码,
还可以自动检测和删除没有用到的类、方法和数据成员,还可以去掉包的层次关
系,最大限度的缩小jar包的大小。而RetroGuard则是WTK默认的混淆器,也是
移动百宝箱强制使用的混淆器,否则不能通过移动的测试伽。
在完成编译后,开发人员必须要对木.class文件进行预审核。因为class在传
第二章相关知识简述
输过程中容易损坏或是被篡改,传统的Jaya程序在运行前,都在本地机器上
对.class进行Byte Code的审核。而对于手机这样的资源有限设备而言,在手机
上进行大量的此类的审核是极为浪费资源的(如占用CPU时间、消耗电力等)。因
此,开发人员必须先在Pc机上使用preverify.exe进行一部份预选审核工作。
MIDP可执行文件后缀名为jar。利用jar file.class就能将通过预审核的
丰.class文件打包成MIDP认可的可执行文件。后缀名为jad的文件是jar文件的
描述文件。有了jar及jad文件后,开发人员就可以把它们放到仿真器或手机上
运行了。根据手机支持传输功能的不同,可通过数据线、红外线、蓝牙或OTA空
中下载(利用短信/WAP)。
2.2.5 J2ME手机游戏开发环境实现
Java手机游戏的真实运行环境是Java手机。一般来说,Java游戏的开发是
先在PC机上模拟,模拟成功后再打包下载到手机上。
本文的模拟环境是:
系统环境:Windows XP
Java平台:J2SDK-1.5
开发工具: Sun的J2ME WirelessTooLkit2.5(WTK)手机模拟器,采用WTK
自带的模拟器
集成开发环境:eclipse3.2,eclipseme 1.6.0
其中J2SDK 1.5和J2ME Wireless Toolkit 2.5可到Sun公司的官方网站上
下载(http://sun.java.com),eclipse3.2在eclipse的官方网站上下载
(ww.eclipse.org),eclipseme 1.6.0在http://eclipseme.org/上下载。
目前最流行的Java程序集成开发环境当属eclipse和netBeans,JBuilder由于
Borland公司不再提供Javal.5版本中的新特性而渐渐被开发人员抛弃了。
2.3 JSRl84概述
2.3.1 JSRJ84简介
JcP(Java Community Process,Java社区过程)在2003年11月发布了M3G
规范(Mobile 3D Graphics API,也称作JSRl84)州。M3G是J2ME的一个可选包,
电子科技大学硕士学位论文
是以OpenGL为基础的精简版,一共有30个类,运行在CLDCl.1及更高的版本之
上。目前,支持M3G的手机在市场上已经相当普遍。M3G只是一个Java接口,具
体的底层3D引擎由C代码实现,比如许多手机厂商的3D引擎采用的是SuperScape
或Hybrid公司的产品。
M3G使用统一的方法涵盖了两种不同的模式,分别是立即模式(immediate
mode)和保留模式(retained mode)。在立即模式下,开发人员必须手动渲染每
一帧,同时可以自己定义3D动画中比较底层的类似着色等方面的开发细节,所有
3D模型的显示都需要开发人员自己定义和编写代码,从而获得较快的速度,但代
码较繁琐;在保留模式下,开发者只需设置好关键帧,剩下的动画由M3G完成,
代码较简单,但速度较慢。M3G支持选择使用其中的一种或混合使用两种不同的
模式。
由于M3G是基于OpenGL的,所以它也采用的是右手坐标系,即四指弯曲的方
向就是x坐标轴(正方向)绕向y坐标轴(正方向)的方向,拇指所指的方向是
z坐标轴的正方向。
V Y
图2-5左手坐标系(左边)和右手坐标系(右边)
JSRl84与OpenGLF_$的层次结构如图2-6所裂loJ:
X
第二章相关知识简述
图2-5 JSRl84与OpenGLES的层次结构图
在M3G中实现3D图像的显示,首先需要建立或者载入3D模型,然后根据需
要设置场景中的环境、渲染方式等一系列的参数,然后生成并设置一架摄像机并
且调整好所需的位置和角度。一个3D物体必须要经过“世界矩阵一摄像机矩阵一
投影矩阵”的变换,三维顶点才能够变换为二维顶点。其中“顶点”指的是一个
网格(Mesh)、组(Group)等对象实例在局部坐标系内定义的坐标。这个过程,
就是一个完整的3D图形渲染管道(Rendering Pipeline)。如下图2―7所示,它
清楚地说明了从最初的局部坐标到最终坐标系的变换过程。
图2-7渲染管道示意图
M3G规范为场景图定义了一种文件格式木.m39,这种资源文件可以使用3D工
电子科技大学硕士学位论文
具如3DMax,Maya,Blender或LightWave生成。如在3DMax7以上版本中已经内
建了一个M3G的导出器,开发人员只需点击导出按钮,就能导出建立的场景、动
画、骨骼、材质等成为M3G文件。
2.3.2 JSRl84 API概述
M3G中共定义了30个3D API类。它们的继承关系如图2一所示。
M3G中定义的这些API中,Loader、Graphics3D、Objeet3D、RayIntersection、
Transform类直接派生自java语言中定义的基类Object。其中Graphics39类似
2D图像显示中提供的Graphics,通过该类,实现了3D世界的绘制。Graphics3D
是M3G中定义的一个单态实例,其中有四种不同的渲染方法,在不同的渲染程度
上进行工作。第一个方法是渲染整个世界(World类),这种方法就是前面提到的
保留模式;第二个方法是渲染场景节点,包括群组(Group)在内;第三和第四个
方法则是渲染单独的节点(node)或网格(submesh)。当对一个节点和网格进行
渲染时,这时API就被称为工作在立即模式下。在Graphics3D里有一个当前摄像
机和一个当前光线数组,这些只在立即模式中有用。保留模式渲染方法render
(World)使用World中指定的摄像机和光线。在渲染任何物体或清空屏幕前,应
用程序必须为Graphics3D对象绑定一个渲染目标(bindTarget),当结束了渲染
一帧之后,应用程序必须用releaseTarget 0方法释放渲染目标。
3D对象的具体存储和运算(如旋转、投影)都是矩阵运算和变换,在M3G中
定义了一个Transform类,其中保存的就是一个长为16的浮点型矩阵值,同时所
有的场景对象节点都继承自抽象类Transformable,来支持矩阵运算的能力。这
两个类提供了在3D空间物体能够完成的变换(缩放、旋转、移动)。
M3G中提供了Loader类,来方便开发人员载入M3G文件中的对象,一个可以
是字符串类型的URL,另一个方法是一个原始字节流中的偏移。
Node类是一个抽象类,派生自Transformable类,所以默认具有坐标矩阵变
换的能力,可以很方便的设置Node子类的3D坐标。Node类共有五个子类,Camera、
Light、Mesh、Group、Sprite3D。
在OpenGL ES 3D图形处理技术中,也有类似于人的眼睛的东西
xxgluLookAtMatrixFx(?)观察函数,如果这个观察点在OpenGL ES场景中的位
置发生变化,那么在屏幕上的图像就发生变化。假如在一个场景中漫游时,将会
看到前面的物景越来越近,两边的物体在向后退,这就是观察点在场景中的位置
第二章相关知识简述
改变的结果。像在0penGL中一样,M3G中提供了Camera类来在手机屏幕上渲染
3D场景。Camera类提供了两种投影矩阵方式:平行投影(setParallel(?))和透
视投影(setPerspective(?))。在3D游戏中,经常使用的是透视投影,而在3D
工业制图,如AutoCAD软件中,才使用平行投影方式。
在M3G中,定义了四种光源,以计算的复杂性来排序,为环境光源(ambient
light)、方向光源(directional light)、点光源(omnidirectional 1ight,又
可翻译作全方向光源)和锥形光源(spot light,又可翻译作聚光源)。其中环境
光源指的是在三维场景中的任何位置都充满了光线,它们的强度相同,故一个环
境光的方向和位置对图形的渲染效果是无关的。方向光源是模拟真实世界中的太
阳光,它从同一个方向照亮所有的物体,并具有恒定的强度,位置对图形的渲染
效果是无关的,光源的方向是最重要的影响因素。点光源是从光源位置向所有位
置发出光线的一种灯光类型。锥形光源形成一锥形的光线区域,方向是沿着它的
z轴负方向,光线的集成度可通过调整其参数来控制它,光线强度会根据距离衰
减。
Mesh类代表3D对象的场景节点,它有两个子类MorphingMesh和
SkinnedMeshⅡ11。Mesh类中保存有顶点缓冲、索引缓冲、外观等的引用。在场景
渲染中是将Mesh类对象代表的3D对象进行渲染。MorphingMesh,SkinnedMesh
分别为提供了变形动画和具有骨骼动画的网格类对象。
Group类代表一个保存其它节点为它孩子的场景节点。所有添加进Group类
对象的节点都是它的孩子,同时这些孩子只有一个父亲就是该Group。在Group
类中提供了碰撞检测的方便方法(pick())。
World代表整个3D场景,包括Camera(用于设置观察者视角)、Light(灯光)、
Background(背景)和树型结构的任意数量的3D物体。World类是一个特殊的Group
类,它是整个场景节点的根节点。一个完整的场景中,所有的节点都是通过一个
共同的根节点(World节点)相连的。
Sprite3D类提供了简单的方法实现Billboard技术。在3D场景中渲染的
Sprite3D类对象,在无论任何情况下都是朝向当前活动摄像机的,而且Sprite3D
类所引用的Image2D类对象的长、宽值没有特殊的限制,不像做为纹理的图片必
须是2的整数次方。
Appearance类中保存对Material、PolygonModel、CompositingMode、Fog
和Texture2D类对象的引用。Material中设置在不同光照模型下的反射光颜色,
PolygonModel中设置多边形剔除机制,CompositingMode中设置各个像素点Alpha
电子科技大学硕士学位论文
值混合、z值检测等参数,Fog中设置雾效的实现参数,Texture2D中设置的是纹
理对象的引用。
KeyframeSequence、AnimationTrack、AnimationController类提供了M3G
中默认的关键帧动画技术。其中KeyframeSequence用来设置关键帧,
AnimationTrack用保存KeyframeSequence和AnimationController类对象的引
用。一个Object3D类对象保存有AnimationTrack类对象的引用,由
AnimationControl ler类对象决定动作时间。
2.3.3性能优化
在开发3D游戏的过程中,进行针对ld3G的性能优化“那31是很重要的一个环节。
下面从几个方面介绍性能优化:
(1)限制多边形总数
例如在摩托罗拉E680/E680i/A780型号手机上,建议的3D场景内的多
边形总数不要超过1500个。
(2)混合使用2D、3D对象
在J2ME平台的3D游戏中,渲染2D对象比3D对象消耗更加少的资源,
如果显示效果没有什么区别时,可以使用2D平面对象。
(3)分解大型网格(Mesh)为几个部分
在3D图形渲染时,一个网格只有它的全部都不可见时才会被忽略。这
就是说,在场景中如果有一个物体并由一个Mesh类对象引用(比如一
条道路)的话,图形的渲染较果就不如分解为几个Mesh类对象的引用
效率高。因为只有在视见体之内的网格才会被计算并渲染。
(4)用哈希表代替数学公式
如除法,三角函数(sin、COS、),平方根运算会消耗很多的计算资源,
但在3D游戏中,有时对运算精度要求并不高。使用哈希表(公式变量
做为键码,函数运算结果做为值)代替实际公式运算会提高性能。
(5)立即模式下的代码优化
如指定外观Appearance类的PolygonModel对象时,加入背景剔除
(-p.setCulling(PolygorlMode.CULL_BACK))、进行平面着色
第二章相关知识简述
(_p.setShading(PolygonMode.SHADE_FLAT))、不使用两面光照运算
(-p.setTwoSidedLightingEnable(false))等设置,场景的渲染速率
会大量提升,其中PolygonMode.CULL_BACK一项尤其明显。
图2-8M3GAPI的类图
2.3.4选择JSRl84的原因
在M3G被提出前,已经有了如OpenGL(ES)、Java3D等技术,但OpenGL(ES)
电子科技大学硕士学位论文
是一种太底层的API,而Java3DAPI的定义却太多了,它的API是M3G的上百倍,
而且也不适合于MIDP编程学习。同时学习Java3DhPI的难度丝毫不亚于D3D和
0penGL。
M3G是基于Java语言的,在效率上它不如C/c++高,在手机这种移动设备上
也不例外。但由于Java语言与生俱来的跨平台特性,在牺牲部分效率的同时却给
了手机设备提供者和游戏开发者别的便利“”,如:
(1)Gives a concrete target which features to offer
(2)屏蔽硬件差异
(3)可方便的移植到新的硬件设备上
(4)可快速构造场景而不需要编程
(5)动画师可单独制作图形和行为
(6)把相关资源($.m39,png,midi)编译为BIN文件,进行资源保护
(7)M3G提供给开发者内建的场景图(scene graph)、关键帧动画功能
(keyframe animation)
2.4 JSRl35概述
JSRl35,即Mobile MediaAPI(MMAPI)是为图像、声音等多媒体的应用程序开
发所提供的API。
2.4.1多媒体系统简介
在MIDPI.0(JSR 37)并没有提供对声音和视频处理的支持,因此有些厂商就独
立开发了API来弥补这样的不足。在MIDP2.0中(JSR 118)中提供了对多媒体处理
的支持,但是它只是Mobile Media API(JSR 135)的一个子集。本文将主要对MMAPI
做整体介绍。
首先我们关注一下MMAPI的特性“”。
1.支持单音,重复播放和记录基于时间的多媒体文件
第二章相关知识简述
2.以CLDC为目标
3.设计小巧,目的为了节省资源
4.miAPI并非针对任何内容类型和协议
5.可以只实现MMAPI的子集,这就是为什么MIDP2.0中能够只实现其子集的
原因
6.扩展性强,协IAPI在不修改原来的功能的情况下可以添加新的功能
7.选择性实现实现者可以只实现部分功能
JSRl35的开发使得手机和PDA等小型移动设备上多媒体应用和服务的普及成
为可能。枞API(Mobile Media API)在JSRl35中被定义,为Java应用在移动设
备上运行使用多媒体提供了一套简洁、规范及可扩充的API。它依据小型移动终端
的各种特性来设计,满足了处理能力低、内存容量小、屏幕小、无线连接带宽窄
和连接速度慢等小尺寸要求,允许一些简单的基于时域多媒体的访问和控制,主
要支持的媒体格式为Way、Tone、Midi、Mp3和Mpe94等,可用的服务主要有图像
音频视频的交换、交互式的在线游戏、拍照、流媒体播放、音频视频会议以及各
种新型应用与服务。
2.4.2性能优化
由于移动设备的能力有限,我们能做的事情应尽可能的ikNative完成以提高
代码效率。有些时候,如我们的JSRl35的数据流设计,不同于我们的实现:我们
可以在JAVA部分进行数据块的引用传递,而实质性的数据流动则全部在Native
中实现。但由于其他部分的设计和实现是独立进行的,这样做无疑增加了开发的
耦合性,不利于程序的维护和重用。在作了权衡以后我们使用JAVA的标准接口进
行数据流的交互。虽然效率略微有所降低,但整个设计却能有更好的松耦合性和
适应性,且更符合JSRl35规范。
2.5常见的开发平台简介
在业界也有其他很多手机游戏引擎开发平台,在下面作者将一一进行分析和对
比,比较其优劣。
电子科技大学硕士学位论文
2.5.1 BREW
高通的BREW平台是一种为无线设备提供开放式标准平台的瘦应用程序执
行环境,是无线应用程序开发、设备配置、应用程序发布以及计费和支付的完整
的端到端解决方案的一部分。完整的BREW解决方案包括面向开发者的BREW
SDK(软件开发包)、面向设备制造商的BREW应用程序平台和移植工具以及由
运营商控制和管理的BREW分发系统(BSD)。利用该系统,他们可以轻松地将
开发者开发的应用程序投入市场并协调计费和支付过程。利用运营商基于BREW
的服务,用户可以通过从运营商的应用程序下载服务器上无线下载应用程序来自
定义手持设备。
优势:该平台基于c/c++平台,且其SDK下载是免费的,开放的端到端解决
方案成功解决了开发、购买等一系列问题。
劣势:开发工具不是很成熟,需要数字签名限制了众多电信运营商,应用范
围小。
2.5.2 Symbian
Symbian操作系统在智能移动终端上拥有强大的应用程序以及通信能力,这
都要归功于它有一个非常健全的核心.强大的对象导向系统、企业用标准通信传输
协议以及完美的sun java语言。Symbian认为无线通讯装置除了要提供声音沟通
的功能外,同时也应具有其它种沟通方式,如触笔、键盘等。在软件功能上可以
容纳许多功能,包括和他人互相分享信息、浏览网页、传输、接收电子信件、传
真以及个人生活行程管理等。而在硬件设计上,它可以提供许多不同风格的外型,
像使用真实或虚拟的键盘。
Symbian目前主要分为两个智能平台,一个是适于单手操作的$60,代表产
品是诺基亚;另一个是双手操作的$80,代表产品是诺基亚的9210,
主要针对商务用户。此外Symbian上还有另一个平台UIQ,以笔操作为主,代表
产品是索尼爱立信的P802。
优势:NOKIA目前是Symbian最大的控股公司,有市场配置和销售的绝对
优势,同时与无线软件开发公司密切合作,针对其平台开发出一系列的工具,同
时Symbian是OMA(开放移动联盟,Open Mobile Alliance)的拥护者,OMA
旨在消除不同国家,运营商,手机制造商之间互操作性对垒。
第二章相关知识简述
劣势:由于Symbian是专门针对电话设计的,因此扩充性和编程方面存在一
些不便。
2.5.3 Wi ndows Mob.|e
Windows Mobile是微软进军移动设备领域的重大品牌调整,它包括
Pocket PC、Smartphone以及Media Centers三大平台体系,面向个人移动电子消
费市场。凭借微软在PC机操作系统领域的垄断地位,Windows Mobile从一诞生
起就占据了很多优势,众多的Windows开发者可以在熟悉的环境下进行各种应用
的开发。
优势:拥有无法替代的品牌优势,大量的开发人员及熟悉的开发工具及技术
支持,自身拥有强大的技术能力和营销能力。
劣势:系统不稳定,开发出来的应用程序较其他平台要消耗更多的资源。
2.5.4 Linux
Linux正在嵌入式开发领域稳步发展。因为Linux使用GP,所以任何对将
Linux定制于PDA、掌上机或者可佩带设备感兴趣的人都可以从因特网免费下载
其内核和应用程序,并开始移植或开发。许多Linux改良品种迎合了嵌入多/实时
市场。它们包括RTLInll】【(实时I.inux)、UCLinux(用于非MMU设备的LimLx)、
Montavista lAnux(用于ARM、MIPS、PPC的Linux分发版)、ARM.Linux(ARM
上的]_inux)和其它Liinux系统。
优势:内存要求低,Linux开发团体能更快的支持新的网络协议,微内核结
构简单,为构造可嵌入系统提供了可高度模块化的构件方法。
劣势:Linux体系的实时应用弱,可靠性不强。
电子科技大学硕士学位论文
第三章嵌入式3D游戏引擎概观
3.1嵌入式3D游戏引擎的总体功能和架构
引擎,是借用机器工业的同名术语,表明在整个系统中的核心地位。3D游戏
引擎就是3D游戏中的核心代码。简单地说,游戏引擎就是用于控制所有游戏功
能的主程序,从计算碰撞、物理系统和物体的相对位置,到接受玩家的输入,以
及按照正确的音量输出声音、提供各种工具和插件等等。使用游戏引擎,游戏开
发人员不用花太多的精力去处理系统架构、内存管理、图像绘制等一些底层技术,
还可以直接使用引擎提供的API来进行游戏开发,从而大大的缩短了游戏开发的
时间,因此游戏引擎可以看着是处理游戏底层技术的平台。
游戏引擎技术的诞生与其他很多新技术的诞生一样,是在实践过程中逐步积
累形成和提炼出来的。曾经一段时间,游戏开发者关心的只是如何尽量多地开发
出新的游戏并把他们推销给玩家。尽管那时候游戏大多简单粗糙,但每款游戏的
平均开发周期也要达到8个月以上,这一方面是由于技术的原因,另一方面则是
因为几乎每款游戏都要从头编写代码,造成大量的重复劳动。渐渐地,一些有经
验的开发者摸索出一些可以偷懒的办法。他们用上一款类似题材游戏中的部分代
码作为新游戏的基本框架,以节省开发时间和开发费用。这种基本框架的代码就
是游戏引擎的最早雏形。
无论是角色扮演游戏、即时战略游戏、冒险解谜游戏或是动作射击游戏,哪
怕是一个只有1M大小的小游戏,都有一段起控制作用的代码。经过不断的优化,
如今的游戏引擎已经发展为一套由多个子系统共同构成的复杂系统,从建模、动
画、粒子特效,从物理系统、碰撞检测到文件管理、网络特性,还有专业的编辑
工具和插件,几乎涵盖了开发过程中的所有重要环节。
图3-1是一个完整的3D游戏引擎的功能结构斟16】【17】。
第三章嵌入式3D游戏引擎概观
图3-1一个3D游戏引擎结构图
如图3-1所示,一个完整的3D游戏引擎具有如此众多的子系统,每一个子
系统都有一套庞大的理论基础,可以毫不夸张地说,一套完整的、功能强大的3D
游戏引擎可以覆盖整个计算机科学知识的应用领域。
电子科技大学硕士学位论文
手机3D游戏
游戏引擎
场景编辑器
地形引擎物理引擎
游戏特效
图形渲染引擎
封装
网络引擎
(M3G)
基本数学
I/O管理音效引擎游戏伽引擎

图3-2手机3D游戏引军整体架构
而一个完整的手机3D游戏引擎的整体架构如上图3.2所示。引擎中主要包
含场景管理引擎、用户接口、网络引擎、音效引擎、物理引擎、游戏m引擎、
基本数学库、封装在游戏引擎中的各种游戏特效和基于这些功能引擎之上的场景
编辑器。
本章下面对手机3D游戏引擎中所需具有的功能引擎进行探讨。
3.2嵌入式3D游戏引擎中的主要模块概述
一个完整的引擎有着强大的功能,根据支撑引擎的基础和不同的功能,我们
分为3个大类,11个模块来进行分别讨论。
3.2.1基础模块
任何引擎都脱离不了物理,数学,图形这些基础的模块,这里分别进行简单
第三章嵌入式3D游戏引擎概观
的分析介绍。
3.2.1.1数学模块
J2ME已经提供了对数学计算的基本支持,但对于3D游戏来说是远远不够的。
一个完整的3D数学库“”包括:矢量、3X3和4X4矩阵、四元数、三角函数、对数
等,引擎将对涉及到3D计算的功能提供支持,此外,为增加游戏的精度,引擎将
实现对四元数的处理以及构造积分器。
在此引擎中,为主要针对3D视图,所以主要数学基础为以下几部分:
a1三维坐标系
坊矩阵变换
n三维转换
d)投影变换
3.2.1.2物理模块
模拟物体在受力情况下的运动变化。在目前游戏中,刚体动力学和软体动力
学【19】应用都比较广泛。相对来说刚体动力学比较简单,不考虑物体在受力情况下
的形变,计算公式包括物体运动速度、加速度和距离之间关系。以及转动力矩与
转动加速度的关系等。物理引擎是游戏引擎中一个非常重要的部分,它可以使物
体的运动遵循固定的规律,例如,当角色跳起的时候,系统内定的重力值将决定
他能跳多高,以及下落的速度。子弹的飞行轨迹、车辆的颠簸方式等都是由物理
引擎决定的。
3.2.1.3图形渲染模块
图形渲染引擎是3D游戏引擎中最关键的部分。超过50%的CPU处理时
间花费在渲染引擎上面。如果没有它,游戏玩家将什么也看不到。它让游戏场景
可视化,让玩家可以看见3D场景,从而让玩家能够根据屏幕上所看到的东西做
出适当的决断。该手机3D游戏引擎的图形渲染功能是基于M3GAPI的。
图形渲染引擎支持光照效果和纹理映射技术【加1来展示尽量真实的3D场景。
电子科技大学硕士学位论文
光照效果即场景中的光源对处于其中的3D物体的影响方式。纹理映射指的是使
用图像、函数或其他数据源来改变物体表面的外观。各厂商手机所支持的光源数
和纹理的大小限制可通过M3GAPI中的Graphics3D.getProperties0方法来查询。
目前游戏引擎中所采用的动画技术分为三种:一是骨骼动画系统,一是模型
动画系统,一是简单动画系统。骨骼动画系统用内置的骨骼带动物体产生运动;
模型动画系统则是在模型的基础上直接进行变形,而简单动画系统则是由游戏中
3D物体的基本平移和旋转产生。图形渲染引擎把前两种动画系统预先植入游戏,
方便动画师为游戏角色设计丰富的动作造型。
3.2.1.4资源管理模块
资源管理模块主要负责图片,音频等资源的载入与管理。因为手机内存的限制,
一般手机游戏大小都在几十到几百K之间,而一张手机应用中常用的PNG图片
虽然相比其他格式图片,所占内存已经减少了许多,但是也经常一张图片达到几
K到几十K的大小,而游戏又是资源密集型软件,质量稍微好一些的商业游戏所
用图片都在数十张,如果是3D游戏的话还要加上一些3d模型文件,所以如果不
进行压缩处理的话游戏所占内存的数量将是不可接受的。实际上,目前世面上几
乎所有的商业游戏都采取了一些方法来减少图片资源所占用的空间。在本游戏引
擎中主要采用合并小图片和删除非必要数据的方式来减小png图片。另外,资源
管理模块还实现了多国语言版本的管理,在游戏中能选择游戏语言,目前己有英
语,西班牙,德语等语言版本,并且要加入新的语言也很方便,简化游戏的本地
化工作。
3.2.2功能模块
一个完整的引擎在有了上面那些基础模块以后,正是以下我们讲要介绍的功能
模块使整个引擎更加有血有肉,使得做出来的游戏也更加精彩。
3.2.2.1粒子系统模块
粒子系统用以模拟自然现象,生活场景,供场景编辑器调用。
在粒子系统中,不同的算法按照基本框架已经建立好的方式,以脚本管理的方
式,提供给场景编辑器调度使用。为方便游戏开发,粒子系统提供粒子基本属性
第三章嵌入式3D游戏引擎概观
的修改,包括,速度,位置,颜色,衰老,角度等。其主要作用为给游戏增添生
动的光影效果,丰富游戏界面,提高游戏的观赏性。
本文中讲在第四章对此模块进行详细的分析说明。
3.2.2.2多媒体系统模块
多媒体的主要功能为给游戏增添多样的配乐,给玩家增添听觉上的感受,以实
现最大程度上的现实场景的模拟,增加游戏的娱乐性。
本文讲在第五章对此模块进行详细的分析说明。
3.2.2.3碰撞检测模块
一个较完善的物理引擎模块是非常复杂的,它的执行会大大重游戏的负担。
而碰撞检测在该引擎模块中又是一个很重要的部分。当两个3D物体撞在一起的时
候,碰撞检测技术可以防止它们相互穿过,这部分的原理比较复杂,涉及到了大
量数学和物理学知识。在M3GAPI中提供了非常方便的基于光线交叉的碰撞检测方
法,该方法定义了Group类的pick()。基于光线交叉方法的碰撞检测的工作原理
是:希望检测碰撞的对象从它的中心(或者身体的其它位置)在一个给定的方向
上(通常是对象的速率向量)放射出光线乜11。光线在3D世界中传播,直到它实际
撞到某些物体。当它撞上某些物体时,就报告碰撞,并且报告在它撞上一个物体
前还有多远可以移动。根据这个距离,程序将决定这个碰撞是否实际发生。
事实上,碰撞检测一开始的时候是运用在模拟和机器人技术上的。这些工业
上的碰撞检测要求非常高,而碰撞以后的响应也是需要符合现实生活的,是需要
符合人类常规认识的。游戏中的碰撞有些许的不一样,只需要在一定程度上模拟
真实情况就可以,不需要接触到纷繁复杂的数学公式,最多只是一些基本的物理
公式而己。
3.2.2.4地形模块
地形是游戏世界的一个主要组成部分,引擎跟据地形引擎生成的地形处理物
体的移动和地形跟踪啪1;确定如何使游戏世界中物体的脚、轮胎等紧贴地面;对
大型多边形地形的跟踪:使用空间划分方案,将任何时候可见的活动多边形地形
数量减少到合理的程度;采用纹理索引帖图技术解决大型地形表面的纹理帖图问
电子科技大学硕士学位论文
题:采用一个用于进行纹理索引的帖图覆盖在地形表面,然后根据索引帖图中的
值运用具体的细节帖图,产生不同纹理之间的平滑过渡。
3.2.2.5人工智能模块
游戏的乐趣就在休闲之余更具有挑战性,而这一切就与人工智能分不开,
在目前已经上市的计算机游戏中,已经应用了很多人工智能技术吲,包括有限状
态机、脚本方法、模糊逻辑、智能体技术、群体行为的模拟、决策树、神经元网
络和遗传算法等。其中有些技术已经在游戏业界使用了很多年,在游戏技术中正
在流行,也有些是游戏开发人员正在积极尝试利用的新方法。
有限状态机是目前大部分的游戏所采用的模型,用于控制NPC的行为,以及
部分人控制角色的自动反应行为。有限状态机有四个主要的概念:状态、状态转
移、规则和条件、输入事件。一个有效状态机包含有限个状态,用于定义个体行
为或者用于产生个体行为。输入的事件作为一个触发器,通过规则判断,从而控
制个体状态的变化。它的优点是简单,通用,可以和其他技术混合使用,计算开
销小,求解能力相对较强,缺点是问题求解结构可能会很差,大规模的问题求解
可能会产生组合爆炸;需要预见所有的可能性;问题求解结果过于确定性,缺少
应有的变通。
而为了解决寻径问题,常用的方法有暴力搜索、A木算法以及极大极小算法等。
其中暴力搜索需要大量的状态查询,对存储量要求比较大,效率非常低;极大极
小算法基于博弈中的最优策略来实现路径的选择;相对来说A宰算法是目前在效率
和效果上比较成熟的一种。
AI系统提供一个模拟人工智能的工具包,主要以最基础的追踪,逃避,躲开
障碍物等行为为基本库,根据这些基本类,游戏开发者可以编写更为复杂的模拟
行为。
此系统抽象出一个3D物体,所有的行为模拟【川,都以其为基础,加以实现,
可以观测,可以通过键盘控制实现场景中模拟智能行为的物体进行选择(视角切
换),模拟模式切换,并能通过场景编辑器对其进行属性编辑(包围盒设置,材质
设计,物理属性,智能脚本等)。提供越系统是为了为游戏增添现实世界中的默
认规则,以及实现游戏中电脑玩家的人工智能,提高可玩性。
第三章嵌入式3D游戏gl擎概观
3.2.3网络引擎模块
目前手机游戏的发展趋势是网络化,一方面PC上的游戏目前玩众最多的就是
网络游戏,毕竟与电脑对战只能重复有限的过程,而如果对手是人的话那么结果
的可能性是无限的,游戏的娱乐性会大大提高。
所以一个好的游戏引擎,网络引擎模块是决不可少。
3.2.3.1广域网通讯
从最上层来看,网络RPG游戏的客户端与服务端的交互如图3.3所示。
图3-3网络游戏中客户端与服务端的交互
为了方便游戏中的网络通信,J2ME平台提供了通用联通框架GCF。由于移动
信息设备的资源受限特性,所以Java.net不适合在这里使用。GenericConnecfion
Framework(以下简称Gc聊是在CLDC中定义的。它的引入成功的解决了联网的
复杂类型。
有了GcF的支持,实现网络模块就要方便很多了。在网络模块中主要有两个
类,一个类是NetOperation,另一个是NctListencr。在J2ME中,联网的时候必
须要在另一个线程内进行联网操作,而不能在主线程进行。这样的目的是为了避
电子科技大学硕士学位论文
免用户界面的堵塞。NctOperation这个类实现了Runnable接口,创建了一个线程,
负责网络操作,发送数据和接受数据。而NetListener类负责将接受的数据解包。
3.2.3.2基于蓝牙的局域网通讯
蓝牙通讯模块则由JABWT规范提通讯保障。通讯模块都需要通用联接框架
(GCF,Gemieal Connection Framework)的支持【矧,来进行具体的数据通信。
第四章粒子系统模块的设计和实现
第四章粒子系统模块的设计和实现
从目前的游戏开发来看,手机游戏中,无论二维,三维图形游戏开发,任何游
戏的华丽光影效果都是建立在程序员设定的一个基本粒子系统之上的,因此程序
员建立的基本粒子系统也就确定了游戏最终的光影效果框架,粒子系统的建立是
游戏软件开发中的一项核心技术,本文将就笔者对此项技术的运用心得与大家共
同讨论。
4.1粒子系统概述
应用粒子系统制作的PC游戏也以其优美的画面、逼真的效果受到越来越多的
人们的喜爱。随着粒子系统在PC游戏等高性能的平台上的日益广泛的应用,其在
游戏开发中的地位也日益重要,游戏玩家们已经可以在这个虚拟的世界体验到真
实世界的景象,如:狂风、暴雨:燃烧的火焰、涓涓的流水、宏伟的瀑布、震撼的
爆破等等。这些效果实现的基础是建立一个数学或者是物理模型,进行大量的计
算,而且这些运算多数是浮点运算。由于实现基于粒子系统的效果模拟需要较高
的机器性能,包括较高的CPU运行速度和较大的内存,所以这些可以轻而易举在
Pc上实现的美妙的效果。
虽然对于手机游戏的开发平台来说,无论是CPU的运行速度还是内存大小,
都是不能与台式机相提并论的。但是,在手机游戏中,越来越多的人已经不满足
于单调的游戏画面,而是也期待着在手机游戏中也能实现优美的画面,能逼真的
感受手机带来的虚拟世界,也希望能真是的感受诸如狂风、暴雨之类震撼效果。
因此将Pc机上基于粒子系统的特效模拟移植到手机平台上己是势不可挡的趋势。
4.1.1粒子系统简介
粒子系统(ParticleSystem)是有Reeves在80年代初提出的一种方法D阳,主
要用来解决有大量按一定规则运动(变化)的微小物质组成的大物质在计算机上
的生成与显示的问题。Particle System的应用相当广泛,大的可以模拟原子弹
爆炸,星云演化,小的则可以模拟水波、火焰、烟火、云雾等等,而这些自然现
象用常规的图象算法(如调色板动画、动画贴图、基于多边形的渲染、光线跟踪渲
电子科技大学硕士学位论文
染)是很难逼真再现的。
粒子系统(particle System)是一种物理模型,Particle System的核心不在
于如何显示图形,而是在于对某个物理模型的理解和分析。只有基于物理模型的
方法,才能模拟出随机而逼真的自然景象。
粒子的运动(变化)规律可以很简单也可以很复杂,这取决于你模拟的物理模
型的复杂程度。对于每一个粒子,它应具有以下属性:坐标,速度,加速度,生命
值和衰减。实现粒子模拟,就是要对客观对象建立一个模型。迄今为止,在粒子
系统方面的主要研究有:
1.综合可变形表面模型和交互粒子模型的的方法,并给粒子加上3个旋转
自由度,提出的一种同时适用于可变形物体和固体的表面建模方法一方
向粒子系统。
2.用固定粒子数的粒子系统结合分布式行为模型模拟了鸟群的飞行,每一
个粒子对应一只鸟,该粒子有方向,考虑粒子间的相互影响,遵从复杂
的群体行为规则。
3.用结构化粒子系统模拟树林和树林中草丛覆盖的地面,并用近似概率性
算法来解决关于粒子系统渲染时的明暗和可见面问题。
与此同时,粒子系统的绘制算法也经历了一些发展和变化,主要的有:
1. 1990年Sims首先研究了在cM一2超级并行计算机上实现粒子动画
和绘制的技术,用粒子行为语言描述粒子动画,提出了粒子系统的并行绘制算法,
完成了影片Particle Dream,其中包括火焰、爆炸、瀑布等效果。这是比较早的
粒子系统的绘制方法。
2. 1992年Loke等人提出了节日焰火的粒子系统绘制算法,采用链表数
据结构存储粒子信息,设计了粒子系统绘制引擎(particle systemrendering
engine),用粒子衍生的方法表现焰火粒子的轨迹并实现了多种焰火的特殊效果,
拉开了粒子系统的绘制引擎开发的帷幕,为粒子系统的广泛应用奠定了基础。
3. 1998年MatthiasUnbescheiden和Andrzej Trembi Iski运用粒子系
统,从云的物理原理出发,结合纹理映射技术∞1建立了云的模型。纹理映射技术
是现在经常采用的绘制技术之一。
4.1.2粒子系统的结构分析
粒子系统方法的基本思想是将许多简单形状的微小粒子作为基本元素聚集起
第四章粒子系统模块的设计和实现
来,形成一个不规则的模糊物体,从而构成一个封闭的系统――粒子系统。
粒子系统并不是一个简单的静态系统,随着时间的推移,系统中已有的粒子
不仅不断改变形状,不断运动,而且不断有新的粒子加入,并有旧的粒子消失。
为模拟生长和死亡过程,每个粒子被赋予一定的生命周期,它将经历生长,成长,
衰老和死亡的过程。
生成粒子系统的步骤如下:
(1)生成新的粒子并将其加入系统中。
(2)赋予每一新粒子以一定的属性。
(3)删除那些已经超过其生命周期的粒子。
(4)根据粒子的动态属性对粒子进行移动和变换。
(5)绘制并显示由有生命的粒子组成的图形。
基本的粒子系统应为图4-1的结构。
图4-1粒子系统基本结构.
4.1.3 J2ME中的粒子系统
为了加强游戏界面的渲染效果,经常要用到诸如爆炸、燃烧等情况的渲染。
在没有引入粒子特效以前,采用的是动画方式来达到这种效果,就是连续的显示
几帧图片。这种方式虽然容易理解,而且在J2ME平台上可以Sprite接口很方便
的达到这种模拟效果,但是这种方法有个主要的缺点:使用这种方法需要较多的图
片资源,而图片资源是引起手机游戏性能瓶颈的主要因素,而实现一种效果至少
需要两帧图片。如果一个游戏中多种特效需要渲染,那么将会需要很多图片,这
对手机游戏来说是不可接受的。同时用这种方法进行特效的渲染,其效果的好坏
电子科技大学硕士学位论文
很大程度上取决于游戏美工的图片。然而由于特效的范围通常来说都很小

我要回帖

更多关于 linux input子系统 的文章

 

随机推荐