新客网
首页 | 新闻 | 系统·网络·服务器·安全 | 工具·办公 | 编程·数据库 | 图象·网页·运营 | 硬件·存储 | 专题教程 | 旧版
 → 当前位置:首页 > 教程 > 编程开发 > JAVA > 正文

J2ME游戏开发的高级优化技巧

XKER.COM   2006-5-16 10:28:39  来源:天极  点击:

  本文将讲述代码优化对于编写高效的手机游戏的重要性。我将使用例子来为大家讲述何时使用何种方法来优化你的代码,使得我们的程序尽可能的挖掘MIDP在手机中所剩无几的表现力。我们将会看到如何使用J2ME Wireless Toolkit的Profiler功能来找出优化代码的位置,最后我会给出编写J2ME程序的忠告。相关文章:J2ME手机游戏引擎程序结构简述

  为什么要优化?

  游戏能够被划分为两种较广泛的类型:实时型和按键驱动型。按键驱动类型的游戏一般在屏幕上显示游戏目前所处的状态,并且等待玩家输入某些按键来驱动游戏继续运行。棋牌类游戏,大部分的解谜类游戏以及策略类和文字类游戏都属于这类游戏。而实时游戏,特别是动作游戏不会等待玩家的输入,他们一直运行直到游戏的结束。

  动作类游戏一个重要的特征就是将大量的运算花在屏幕显示上,而且刷新率(FPS)必须保持在10以上。这类游戏还必须要有大量的动作来使得游戏具有更高的挑战性。这类游戏需要玩家有快速的反应和很好的手眼协调能力,所以这类游戏对键盘输入的反应也有极高的要求。为使得程序在高速运行时能对键盘做出及时的反应,图像能以高速的FPS来运行,我们就必须优化我们的代码,以使得我们的程序能以最快的速度运行。

  J2ME是一个精简的Java版本,适合只有有限容量的小型设备,例如手机和PDA,J2ME设备有:

  ·有限的输入能力

  ·屏幕尺寸很小

  ·受限的内存及堆大小

  ·很慢的CPU


  这些特点使得在J2ME平台上编写快速的游戏并不是件易事。相对于电脑游戏来说,编写J2ME平台上的游戏会对程序有更高的要求和更进一步的挑战。

  何时不用优化?

  如果你编写的游戏不时动作游戏,有可能不必去优化。假如玩家需要几秒钟甚至几分钟去思考他下一步怎样走,那他将不会注意到你的游戏的按键响应超过几百毫秒。不过一个例外是如果你的程序需要大量的运算去决定它下一步怎样走,例如棋类游戏需要在几百万种组合中去寻找。假如这样的话,你有可能想要优化你的代码以使得电脑仅需要几秒钟而不是几分钟去决定他下一步的动向。

  即使你正在编写这类游戏,优化也是相当危险的。这些技术将伴随着高昂的代价,他将使你的代码不易读。这就需要开发者自己去平衡。增大了JAR文件的大小来换取程序少量性能的提高是否是值得的。下面给出不要去优化的更多的理由。

  ·优化将很容易引入bug

  ·有些优化技术将使得移植变得困难

  ·有可能你付出了巨大的努力却收效甚微

  ·统一的优化一般比较困难


  我需要对最后一点做一些解释:由于优化的是一个不定的目标及平台,有些方法可能在Java平台上运行快一点,而有些可能在J2ME平台上运行快一点。由于执行环境存在着巨大的差异,你的代码可能在模拟器上跑得很快,但是在真机上却很慢。反之也有可能。你对一种机型的优化可能会造成在另一种平台上性能的下降。

  但这些并不代表我们没有了希望。你可以通过两种方法来进行优化,高级优化和低级优化。高级优化可以在任意的平台上来提高程序的性能,甚至全面的提高代码的质量。而低级优化则是相对于某种特定机型的优化技术。高级优化即算法上的优化,低级优化即程序层面对于单个函数执行效率的优化。Michael Abrash, Quake的开发者之一,曾经写到:"the best optimizer is between your ears". (最好的优化者在你的两耳之间).使用优良的算法所能提高的效率比在一个普通算法的程序上使用低级优化所能提高的效率要高得多。

  我们将使用J2ME Wireless Toolkit的Profiler去剖析你的代码的运行效率,它也将帮助你更精确的测量出这些技术对于提高性能的有效性。

  在哪里优化?

  在动作类游戏中,90%的程序执行时间被花费在了10%的代码段中。这10%的代码段是我们需要集中全力去优化的部分。我们将使用profiler去找到这10%代码的位置。照下图我们打开J2ME Wireless Toolkit的Profiler功能。

  我们必须要在模拟器中运行程序并退出后才会弹出Profiler窗口,如下图:







  注意在左窗口中该函数所占用cpu百分比,这个百分比是总执行时间花在每个特定函数上的百分比,接下来我们只要找到占用百分比最多的那个函数来优化就可以了。

本新闻共3页,当前在第1页  1  2  3  

上一篇教程:在Eclipse中集成Ant编程之配置祥解篇
下一篇教程:在Java应用程序中访问USB设备
收藏本文】 【我要投稿】 【打印本文】 【论坛讨论】 【关闭窗口

相关文章
·J2ME程序开发新手入门九大要点·J2ME内存占用详解及优化方法
·J2ME手机游戏引擎程序结构简述

学院文章搜索
  
推荐文章
·编程过把瘾:自己动手写操
·数据恢复指南 专题
·硬盘“逻辑锁”解决办法
·DOS使用中的常见问题解答
·DOS下常用的相关网络命令
·Win2000优化技巧篇之:硬件
·惊心8小时:破译Windows运行
·菜鸟必备:超实用低级格式
·硬件有价数据无价 硬盘开盘
·国内数据恢复市场内幕揭秘
阅读排行
·免费代理IP(每日更新)
·DB2 9数据库专题
·关于 Apache 的几种常见应
·QQ千人好友浮出水面 会员抢
·佳能活动 免费得QQ秀
·站长手册:WIN2003下Web服
·网站投资你和我的20个自身
·140天,从做站起步到日赚1
·Fdisk分区详解
·超强公式编辑器MathType使
专题教程
·数据恢复指南 专题
·Web服务器专题
·DB2 9数据库专题
·ghost教程 专题
·局域网技术专题
·虚拟机专题
·CDN加速技术专题
·注册表教程专题
·电脑技巧 专题
·Linux与虚拟化技术
最新文章
·Firefox出现新高危0Day漏洞
·QQ千人好友浮出水面 会员抢
·DOS下对系统重新进行分区
·Fdisk分区详解
·DOS常用命令
·dos如何进行系统配置
·dos慎用命令
·Ver、Vol、Ctty命令使用说
·Tree、Unformat、Vsafe命令
·Setver、Share、Subst命令
设为首页 - 加入收藏 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyright © 2003 - 2006 XKER Inc. All Rights Reserved
新客网 版权所有