应用J2ME实现手机游戏优化技术的研究与实现.docx
《应用J2ME实现手机游戏优化技术的研究与实现.docx》由会员分享,可在线阅读,更多相关《应用J2ME实现手机游戏优化技术的研究与实现.docx(30页珍藏版)》请在冰豆网上搜索。
![应用J2ME实现手机游戏优化技术的研究与实现.docx](https://file1.bdocx.com/fileroot1/2023-1/2/6ebceebd-a4e5-4152-b1a5-91690fb0aacb/6ebceebd-a4e5-4152-b1a5-91690fb0aacb1.gif)
应用J2ME实现手机游戏优化技术的研究与实现
学号__200532580143__
密级________________
(黑体5号)
武汉大学本科毕业论文
J2MEmobilegamingapplicationstoachieveoptimizationoftheResearchandImplementation
应用J2ME实现手机游戏优化技术的研究与实现
院(系)名称:
国际软件学院
专业名称:
软件工程
学生姓名:
安虎
指导教师:
边馥苓教授
二○○九年五月
BACHELOR'SDEGREETHESIS
OFWUHANUNIVERSITY
J2MEmobilegamingapplicationstoachieveoptimizationoftheResearchandImplementation
College:
WuhanUniversity
Subject:
SoftwareEngineering
Name:
HuAn
Directedby:
FuLingBianProfessor
May2009
郑重声明
本人呈交的学位论文,是在导师的指导下,独立进行研究工作所取得的成果,所有数据、图片资料真实可靠。
尽我所知,除文中已经注明引用的内容外,本学位论文的研究成果不包含他人享有著作权的内容。
对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确的方式标明。
本学位论文的知识产权归属于培养单位。
本人签名:
日期:
摘要
J2ME平台是一个移植性高、安全性好的手机软件应用开发平台。
现在大部分的手机游戏都运行在J2ME的平台上。
随着中国移动,联通,电信先后获得3G牌照,手机联网软件的开发必然会越来越热,手机游戏必将迎来新的一轮游戏热潮!
伴随着手机游戏的兴起,相应的应用J2ME技术对手机游戏的优化技术也将高速发展。
本文的主要目的是研究与实现当前主流的手机优化技术。
本文的主要内容是实现当前主流的手机优化技术并对他们的性能做出一个简要的分析。
优化主要是从时间和空间两个方面进行考虑,时间方面具体来讲就是以缩短运行时间和响应时间为优化目的;从空间来讲主要是从内存的占用方面进行考虑,以降低内从使用,提高内存使用效率为目的。
论文成果:
从理论分析优化后的效率和实验所获得的效率分析并预期优化的前景。
关键词:
代码优化,图形优化,内存优化,研究与实现。
ABSTRACT
J2MEplatformisahighportability,security,goodmobilesoftwareapplicationdevelopmentplatform.MostofthemobilegamenowarerunningontheJ2MEplatform.WithChinaMobile,Unicom,Telecomhasaccessto3Glicenses,thedevelopmentofmobileInternetsoftwareisboundtobecomeincreasinglyhot,mobilegameswillusherinanewroundofgamingcraze!
Alongwiththeriseofmobilegames,J2MEapplicationofappropriatetechnologytooptimizethemobilephonegamewillbetherapiddevelopmentoftechnology.
Themainpurposeofthispaperistostudyandimplementationofthecurrentmainstreammobileoptimizationtechniques.Optimizationmainlyfromtwoaspectsoftimeandspacetoconsiderthespecifictermsoftimeistoshortentherunningtimeandthepurposetooptimizetheresponsetime;fromspaceismainlyoccupiedbyaspectsofmemory,inordertoreducefromtheuseofimprovetheefficiencyofmemoryusageforthepurpose.
Themaincontentsofthispaperistoachieveoptimizationofthecurrentmainstreamtechnologyofmobilephonesandtheirperformancetomakeabriefanalysis.
Papersresults:
Fromthetheoreticalanalysisoftheefficiencyoftheoptimizedandexperimentalanalysisofacquiredandisexpectedtooptimizetheefficiencyofthefuture.
Keywords:
codeoptimization;graphoptimization;memoryoptimization;ResearchandImplementation
目录
第一章绪论1
1.1研究背景1
1.2.研究意义3
1.3.手机游戏优化4
1.3.1手机游戏优化的意义4
1.3.2优化的风险5
第二章J2ME技术简介6
2.1J2ME的制定6
2.2J2ME平台体系结构6
2.3J2ME的配置7
2.3.1CDC简介:
7
2.3.2CLDC的简介7
第三章优化技术的实现以及性能分析9
3.1代码优化10
3.1.1优化for循环10
3.1.2对于多条件判断的优化14
3.2内存优化17
3.3图形优化22
3.3.1图片压缩:
22
3.3.2图片整合:
22
第四章手机游戏优化技术的未来和展望30
结论31
致谢32
参考文献34
第一章绪论
1.1研究背景
游戏作为人们日常生活的一个重要的娱乐项目,也带动了巨大的游戏相关产业市场的发展。
游戏平台从游戏机、电视游戏,到pc游戏,到手机游戏,中间经历了很多的技术的变革。
随着新技术的发展和人们生活水平的提高,手机开始逐渐普及,手机以其小巧便捷,方便的特性成为人们的必备通讯工具。
而基于手机平台的手机游戏也就拥有了巨大的市场空间,随着3g的开通和应用,手机游戏必将迎来新的一轮游戏热潮!
伴随着手机游戏的兴起,相应的应用J2ME技术对手机游戏的优化技术也将高速发展。
随着国家3G牌照发放的临近,手机游戏市场再度成为业界关注的焦点。
上周,业界相关人士表示,中国手机游戏市场经过几年的市场培育,市场开发已渐成熟,3G时代的到来将使我国手机游戏市场规模将大幅度增长,一场手机游戏盛宴有望上演。
3G时代的到来,网络带宽的速度将大幅提升,那么手机游戏带给用户的将又是一种全新的体验,大家体验越来越好的时候,这个经济一定会越来越热。
因此可以预见3G时代到来的时候,手机游戏一定会成为主流之一。
从手机游戏的几年发展不难看出,从简单内置的手机游戏到下载类游戏,再到联网游戏、多人联网游戏,最后发展到跨平台联网游戏,手机游戏产业正不断升级,随着3g时代的到来,对于手机游戏来说,意味着更强的终端表现力、更快的传输速度,全新的体验将使它吸引更多的用户加入进来。
J2ME是目前呼声最高的于机软件平台技术。
有消息称,中国移动将在力推MMS之后,推出J2ME业务来进一步加速GPRS的发展。
J2ME(Java2MicroEdition)是Java2的一个组成部分,它与J2SE、J2EE并称。
根据Sun的定义:
J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话和可视电话、数字机顶盒、汽车导航系统等等。
J2ME技术在1999年的JavaOneDeveloperConference大会上正式推出,它将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。
J2ME在设计其规格的时候,遵循着“对于各种不同的装置而造出一个单一的开发系统是没有意义的事”这个基本原则。
于是J2ME先将所有的嵌入式装置大体上区分为两种:
一种是运算功能有限、电力供应也有限的嵌入式装置(比方说PDA、手机);另外一种则是运算能力相对较佳、并且在电力供应上相对比较充足的嵌入式装置(比方说冷气机、电冰箱、电视机上盒(set-topbox))。
因为这两种型态的嵌入式装置,所以Java引入了一个叫做Configuration的概念,然后把上述运算功能有限、电力有限的嵌入式装置定义在ConnectedLimitedDeviceConfiguration(CLDC)规格之中;而另外一种装置则规范为ConnectedDeviceConfiguration(CDC)规格。
也就是说,J2ME先把所有的嵌入式装置利用Configuration的概念区隔成两种抽象的型态。
我们的项目是以CLDC规格为标准来实现的一个手机小游戏项目。
其实在这里大家可以把Configuration当作是J2ME对于两种类型嵌入式装置的规格,而这些规格之中定义了这些装置至少要符合的运算能力、供电能力、记忆体大小等规范,同时也定了一组在这些装置上执行的Java程序所能使用的类别函式库、这些规范之中所定义的类别函式库为Java标准核心类别函式库的子集合以及与该型态装置特性相符的扩充类别函式库。
比方就CLDC的规范来说,可以支援的核心类别函式库为java.lang.*、java.io.*、java.util.*,而支援的扩充类别函式库为java.microedition.io.*。
区分出两种主要的Configuration之後,J2ME接著在定义出Profile的概念。
Profile是架构在Configuration之上的规格。
之所以有Profile的概念,是为了要更明确地区分出各种嵌入式装置上Java程序该如何开发以及它们应该具有哪些功能。
因此Profile之中定义了与特定嵌入式装置非常相关的扩充类别函式库,而Java程序在各种嵌入式装置上的使用者介面该如何呈现就是定义在Profile里头。
Profile之中所定义的扩充类别函式库是根据底层Configuration内所定义的核心类别函式库所建立。
J2ME是一个精简的Java版本,适合只有有限容量的小型设备,例如手机和PDA,J2ME设备特点有:
◆有限的输入能力
◆屏幕尺寸很小
◆受限的内存及堆大小
◆很慢的CPU
这些特点使得在J2ME平台上编写快速的游戏并不是件易事。
相对于电脑游戏来说,编写J2ME平台上的游戏会对程序有更高的要求和更进一步的挑战。
1.2.研究意义
J2ME在设计其规格的时候,遵循着“对于各种不同的装置而造出一个单一的开发系统是没有意义的事”这个基本原则。
于是J2ME先将所有的嵌入式装置大体上区分为两种:
一种是运算功能有限、电力供应也有限的嵌入式装置(比方说PDA、手机);另外一种则是运算能力相对较佳、并且在电力供应上相对比较充足的嵌入式装置(比方说冷气机、电冰箱、电视机上盒(set-topbox))。
因为这两种型态的嵌入式装置,所以Java引入了一个叫做Configuration的概念,然后把上述运算功能有限、电力有限的嵌入式装置定义在ConnectedLimitedDeviceConfiguration(CLDC)规格之中;而另外一种装置则规范为ConnectedDeviceConfiguration(CDC)规格。
也就是说,J2ME先把所有的嵌入式装置利用Configuration的概念区隔成两种抽象的型态。
我们的手机游戏项目是以CLDC规格为标准来实现的一个手机小游戏项目。
其实在这里大家可以把Configuration当作是J2ME对于两种类型嵌入式装置的规格,而这些规格之中定义了这些装置至少要符合的运算能力、供电能力、记忆体大小等规范,同时也定了一组在这些装置上执行的Java程序所能使用的类别函式库、这些规范之中所定义的类别函式库为Java标准核心类别函式库的子集合以及与该型态装置特性相符的扩充类别函式库。
比方就CLDC的规范来说,可以支援的核心类别函式库为java.lang.*、java.io.*、java.util.*,而支援的扩充类别函式库为java.microedition.io.*。
区分出两种主要的Configuration之後,J2ME接著在定义出Profile的概念。
Profile是架构在Configuration之上的规格。
之所以有Profile的概念,是为了要更明确地区分出各种嵌入式装置上Java程序该如何开发以及它们应该具有哪些功能。
因此Profile之中定义了与特定嵌入式装置非常相关的扩充类别函式库,而Java程序在各种嵌入式装置上的使用者介面该如何呈现就是定义在Profile里头。
Profile之中所定义的扩充类别函式库是根据底层Configuration内所定义的核心类别函式库所建立。
J2ME是一个精简的Java版本,适合只有有限容量的小型设备,例如手机和PDA,J2ME设备有:
◆有限的输入能力
◆屏幕尺寸很小
◆受限的内存及堆大小
◆很慢的CPU
这些特点使得在J2ME平台上编写快速的游戏并不是件易事。
相对于电脑游戏来说,编写J2ME平台上的游戏会对程序有更高的要求和更进一步的挑战。
J2ME最吸引人的地方,就在于其针对的平台计算能力有限。
这并不是受虐。
运算速度、可用内存、以及最终生成字节码尺寸的限制使得J2ME应用通常比较小巧玲珑。
以早期支持J2ME的设备为例(比如Jordan手里的那部手机,zengke的就算了),可用的Heap不过200k,最终生成的代码(包含各种资源文件,如图片)不得超过64k,这就使得面向这种平台开发的J2ME应用规模基本上不会超过一个人的能力范围。
这样可以有效避免协作、过程等等令人不胜其烦的软件工程概念的引入,从而使开发人员重新回归到编写代码的乐趣中去。
目前我们的项目还运行在Sun公司提供的模拟机上,当然可用的内存也高于以前的水准,我们所使用的是256KB内存的环境。
1.3.手机游戏优化
1.3.1手机游戏优化的意义
现在的移动电话是小型的计算机,它的处理能力与台式机的标准处理能力相比很有限,但是足够运行一个小型的游戏,尽管如此,我们仍需要进行必要的优化以使有限的资源得到最充分的利用,使手机可以运行功能更为强大的游戏。
JAVA正是在C++的优秀品质中继承下来的产物,拥有垃圾回收机制是JAVA虚拟机在C++继承过程中进化的一个重要地方,垃圾回收机制能在对象没被使用之后的某个时间将对象进行回收,从而能使无用对象占据的内存得到释放。
但是,这仅仅对有足够内存的Server主机跟PC机上的虚拟机有用,对于内存极其珍贵的手机移动设备来说垃圾回收机制却显得有点无能为力,英雄无用武之地。
虽然随着手机硬件的不断升级,智能手机中的手机内存以及CPU资源大大得到提升,但是目前用户手中的手机并无法普遍达到这种水平,因此在J2ME设计开发过程中我们需要很好的考虑到每一寸内存土地的利用。
尽可能的优化我们的代码,提高我们游戏的性能。
1.3.2优化的风险
游戏能够被划分为两种较广泛的类型:
实时型和按键驱动型。
按键驱动类型的游戏一般在屏幕上显示游戏目前所处的状态,并且等待玩家输入某些按键来驱动游戏继续运行。
棋牌类游戏,大部分的解谜类游戏以及策略类和文字类游戏都属于这类游戏。
而实时游戏,特别是动作游戏不会等待玩家的输入,他们一直运行直到游戏的结束。
我们做的手机RPG游戏“笑傲江湖”是一个按键驱动类型的游戏。
虽然优化可以使我们的游戏可以做的更丰富一些,也运行的更快一些,但是不可否认的是,有时候优化也会给我们带来一些新的问题:
◆优化将很容易引入bug
◆有些优化技术将使得移植变得困难
◆有可能你付出了巨大的努力却收效甚微
◆统一的优化一般比较困难
我需要对最后一点做一些解释:
由于优化的是一个不定的目标及平台,有些方法可能在Java平台上运行快一点,而有些可能在J2ME平台上运行快一点。
由于执行环境存在着巨大的差异,我们的代码可能在模拟器上跑得很快,但是在真机上却很慢。
反之也有可能。
我们对一种机型的优化可能会造成在另一种平台上性能的下降。
由于我们的代码都只在WirelessToolkit2.5上运行,所以本文相关的结论都是建立在WirelessToolkit2.5上运行的所获取的结果上。
另外,当存在着第3种情况既付出巨大的努力仍收效甚微的情况下的时候,我们就需要考虑放弃该种优化方式。
第二章J2ME技术简介
随着移动通信的突飞猛进,移动开发这个新鲜的字眼慢慢成为开发者关注的热点。
在网上进行的最近一份调查显示,有24.34%的受访者涉足嵌入式/移动设备应用开发,这个数字可能略高于实际的比例,但也足可说明嵌入式/移动设备应用开发是一块诱人的新鲜奶酪。
J2ME(Java2MicroEdition)是嵌入式/移动应用平台的王者,Linux和WinCE分列二、三位。
Nokia等厂商力推的Symbian平台目前开发者占有率尚未达到满意水平,考虑到调查项合并了嵌入式设备(例如PDA)和移动设备(例如智能手机),Symbian、WinCE系列在移动平台上会是竞争的主要两方。
如果厂商能在标准实现上做得更加规范,则J2ME的跨平台特性会发挥得更加淋漓尽致,继续保有王者地位。
本章将从J2ME的体系结构和MIDlet应用程序模型。
2.1J2ME的制定
J2ME是SUN公司针对嵌入式、消费类电子产品推出的开发平台,与J2SE和J2EE共同组成Java技术的三个重要的分支。
J2ME实际上是一系列规范的集合,由JCP组织制定相关的JavaSpecificationRequest(JSR)并发布,各个厂商会按照规范在自己的产品上进行实现,但是必须要通过TCK测试,这样确保兼容性。
比如MIDP2.0规范就是在JSR118中制定的。
可能接触过J2ME的开发者会觉得说J2ME是一系列的规范不准确吧。
因为我们在开发中用到了很多例如CLDC(ConnectedLimitedDevicesConfiguration)和MIDP(MobileInformationDevicesProfile)等内容。
其实这并不矛盾,因为这些就是在相关规范中制定的。
2.2J2ME平台体系结构
J2ME平台是由配置(Configuration)和简表(Profile)构成的。
配置是提供给最大范围设备使用的最小类库集合,在配置中同时包含Java虚拟机。
简表是针对一系列设备提供的开发包集合。
在J2ME中还有一个重要的概念是可选包(OptionalPackage),它是针对特定设备提供的类库,比如某些设备是支持蓝牙的,针对此功能J2ME中制定了JSR82(BluetoothAPI)提供了对蓝牙的支持。
2.3J2ME的配置
目前,J2ME中有两个最主要的配置,分别是ConnectedLimitedDevicesConfiguration(CLDC)和ConnectedDevicesConfiguration(CDC)。
他们是根据设备的硬件性能进行区分的,例如处理器、内存容量等。
由于这个标准是在2001年的时候指定的,而现在移动终端的处理能力和内存容量发展很快,如果还按照这个标准来评判可能就不准确了。
2.3.1CDC简介:
CDC提供了一种虚拟机,以及支持像灵敏发报机、寻呼机、个人数字助理(PDA)和电视机顶盒这样的设备上的Java应用的基类库。
这些设备的典型特征是具有一个32位的处理器和用来支持虚拟机和类库的超过2MB存储容量。
CVM虚拟机正好满足了它们对于Java2虚拟机特征集的功能需求。
这是在小型平台上全特征的虚拟机。
依照SunMicrosystems,CDC的目标设备通常具有以下特征:
1.使用32位处理器;
2.2兆字节或更多可供Java平台使用的总内存;
3.设备要求的Java2“蓝皮书”虚拟机的全部功能;
4.网络连通性,常常是无线的、不一致的连接并且带宽有限;
5.用户接口混乱,程度参差不齐;有时根本就没有接口;
6.一些CDC支持的设备,包括常驻网关、智能电话和通讯器、PDA、管理器、家用电器、销售网点终端以及汽车导航系统。
2.3.2CLDC的简介
CLDC(ConnectedLimitedDeviceConfiguration,联网的受限设备配置)是用来开发在无线设备上运行的应用程序所要用到的一组最小的API。
CLDC描述了所有无线移动设备所需的一个最小级别的功能集合。
对于JavaME平台,CLDC为移动电话、双向寻呼机以及类似设备定义了基本配置(Java语言、虚拟机功能和基本类库)。
这些设备具有以下特性:
·总内存量为128KB到512KB。
·具有有限电源,如电池。
·可以连接到网络。
·具有相对有限的用户界面,通常只限文本。
CLDC1.1是CLDC1.0规范的修订版本,包含很多新增功能(例如浮点和弱引用支持)以及其他增强功能。
Java规范请求(JavaSpecificationRequest,JSR)30中详细指定了CLDC1.0的要求。
JSR139中详细指定了CLDC1.1的要求。
上面的说法都是从硬件划分的角度来说明CLDC的,下面从程序员的角度来理解一下CLDC的概念。
其实对于程序员来说,CLDC主要包含三个部分:
1、Java虚拟机(又称JVM)
这个是所有Java程序运行的基础。
对于手机来说,在手机出厂以前,已经固化在手机中了,出厂了以后就不能进行修改了。
2、一套标准的API实现
该标准的API主要包含java.io、java.lang、java.util包以及javax.microedition.io包中的部分。
这个是规范要求必须实现的API,也固化在手机中,不能修改。
3本地方法实现
在标准的API中,很多都是接口,这些就要求厂商在手机中提供真实的实现,而且很多本地方法也要求手机厂商进行实现。
我们的项目是在CLDC的配置基础上设计实现的
第三章优化技术的实现以及性能分析
游戏引擎的结构很多,不过基本上都是在一个游戏主循环内实现。
程序里面的主循环包含了程序框架的最主要的结构体。
J2ME的程序一般都包含两个class文件,一个是MIDlet,一个是Canvas。
我们是把游戏的主要代码放在Canvas这个类里面。
这个类是基于事件驱动的程序,