基于J2ME游戏性能优化研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于J2ME游戏性能优化研究

基于J2ME游戏性能优化研究   摘要:为减少J2ME游戏运行平台的硬件环境对游戏的性能限制,在开发阶段必须对游戏的程序进行改良化设计和采用优化算法。文章从游戏运行性能的角度出发,分析了各种常用方案的不足,并给出了对象池技术、基本数据类型替换法、屏蔽函数计算三种能够节省资源开销和处理器时间以提高游戏运行性能的优化策略。实验对比表明,采用优化算法后性能得到了提高。   关键词:手机游戏;J2ME;MIDP;性能;优化      0 引言      传统手机软件是由手机开发厂商固化在手机中的。在SUN公司推出J2ME后,各大手机厂商很快就推出了支持J2ME的手机。支持J2ME的手机可运行由第三方提供的基于J2ME开发的软件,使手机的扩展功能得到极大增强。   在J2ME规范之中,J2ME定义了基于Java类库的CDC(Connected Device Configuration)和CLDC(Connected LimitedDevice Configuration),在CDC和CLDC之上J2ME又定义了Profile层,称之为MIDP(Mobile Information Device Profile)。MIDP对CDC/CLDC进行和一定程度的封装,并定义了一套整应用程序接口和用户接口。MIDP为J2ME应用提供了两类UI(User Interface),分别称做高级用户界面和低级用户界面。高级用户界面是被适配到设备上由手机操作系统定义外观的通用图形组件;低级用户界面则允许开发者根据需要在界面上任意绘制图形,是由开发者完全控制显示内容的图形界面。由于手机游戏界面绝大多数由自定义的图形元素构成,所以不可避免地要采用低级用户界面。   低级用户界面开发具有高度的自由性,不同的游戏架构和不同的编码风格将对最终产品的性能产生极大影响。目前对于J2ME手机游戏开发而言,最大的问题在于J2ME运行平台有限的资源。如何有效地利用现有资源以提高游戏的运行性能,将成为开发者面临的首要问题。本文将以一款飞行射击游戏为例,探讨其中三种优化方案对手机游戏带来的性能改善。      1 J2ME游戏运行性能优化准则      目前被普遍采用的优化方案有:   (1)优化循环,通过将重复的子表达式重新组织来提高循环体的运行性能;   (2)减少使用对象的数量来提高运行性能;   (3)缩减网络传输数据来缩短等待时间等等。   本文给出了三种性能优化的策略:   (1)采用对象池技术,提高对象的利用率;   (2)局部使用基本数据类型代替对象,节省资源开销;   (3)用简单的数值计算代替复杂的函数计算,节省处理器时间。      1.1采用对象池技术,提高对象的利用效率   Java是面向对象的编程语言,创建和释放对象会占用相当大的资源,而在Java里不用对象在很多情况下又无法实现。本文提出一种对象池技术,将有效解决创建和释放对象带来的性能损失问题。   例如游戏中敌机的处理方式:一种解决方案是游戏在载入关卡的时候,为每架敌机创建一个对象,随着游戏的行进,按照游戏进程显示不同的敌机。这种方案中创建对象的资源开销巨大,因此严重影响手机游戏的运行性能。虽然在敌机被击毁的时候可以将对应的对象设置为null并由System.gc()回收,但在下一关卡载入的时候还要重新创建相关的对象,增加了用户的等待时间。另一种方案是在游戏的进程中,根据需要动态创建敌机对象,被击毁后将对象设置为null并由System.gc()回收。这种方案虽然能减少游戏载入时间,但是频繁地创建和释放对象的资源开销使游戏变得不流畅,对于射击游戏这类对实时性要求很高的游戏而言,这一点是不可接受的。   从研究数据来看,游戏性能损耗主要源之于创建和释放对象,而不创建对象又无法实现逻辑功能,因此要尽量避免对象的创建和释放。问题的重点就转到怎样有效利用已有的对象上。本文提出的对象池技术,就是根据需求先创建一定量的对象,在需要创建对象的时候从池中申请空闲对象,释放对象时把对象释放回池中,以有效避免由创建和释放对象带来的性能损失。   分析游戏需求发现同时显示的敌机数量最多不过5架,采用对象池技术可以先定义一个对象池,容量为同时显示的敌机的最大数量:   Enemy[5]enemy=new Enemy[5];   for(int i=0;i5:i++){   enemy[i]=new Enemy();   }   在类Enemy里增加标志属性used和带参数的reset方法使对象可重置到初始状态,在载入游戏关卡的时候初始化对象池,在需要创建对象的时候从对象池获取一个未被使用的对象并使用reset方法初始化,需要释放对象的时候只需将标志位修改以供下

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档