现在的位置: 首页 > 综合 > 正文

智能手机三维游戏开发性能优化的技术要点

2013年10月13日 ⁄ 综合 ⁄ 共 2998字 ⁄ 字号 评论关闭

摘 要:智能手机的性能提升使在手机上开发类似PC环境下的三维游戏成为手机游戏开发的一种趋势[1]。但智能手机的软硬件环境与PC存在较大的差异。本文论述以游戏引擎unity3d为平台在iphone中开发三维游戏,论述在智能手机中开发三维游戏,应该如何进行游戏性能优化,并使游戏流畅运行的技术要点。

  关键词:智能手机;三维游戏;开发;性能优化
  中图分类号:G898 文献标识码:A 文章编号:1005-5312(2012)08-0272-01
  
   在智能手机中开发出具有PC体验的三维游戏是现在游戏开发公司的一个大的业务方向。手机与平板电脑的出现使得三维游戏的软硬件载体与操作方式发生了较大的变化,而且这种趋势越来越明显。如果游戏公司不能适应这种变化,将会使自己的用户群变小,业务范围变窄。智能手机与PC在硬件构架、操作系统、用户界面、操作方式都有较大的区别,因此在智能手机上开发三维游戏与在PC平台上开发游戏具有不同的技术要点。

  智能手机(SmartPhone)是指具有iOS、Android、Windows Phone、Symbian等主流操作系统,能够在手机上安装应用软件、游戏等三方程序或应用的,并且能够通过移动网络进行无线接入的手机。智能手机的主要操作系统有Symbian(主要由诺基亚公司支持)、Android(由google公司开发)、iOS(由苹果公司开发)、window Phone(由微软公司开发)、Backberry Os(由RIM公司开发)、WebOS(由Hp公司收购得来)、MeeGo(由英特尔主导)。根据至2011年底的发展趋势与观察,智能手机的操作系统将由Android、iOS、与windows
phone占据大部份市场额度,而其他的操作系统则将式微或失败。
  一、智能手机终端及游戏引擎平台介绍
  iPhone是苹果公司2007年发布的一款多媒体无线互联手机,至今已经发布了第四代,iPhone4(s)采用了3.5英寸960*640 Retina显示屏,分辨率为326dpi。iPhone的游戏控制主要是通过在显示屏上多点触摸(Multi-touch)实现,另外辅以加速计和三轴陀螺仪来感应手机的速度与方向,这是与PC这样的硬件游戏平台不同的。

  Unity3d是芬兰unity公司开的一款跨平台的游戏开发引擎,这款游戏引擎集成了代码编辑器、地形编辑器、着色器、脚本集成、网络功能、物理引擎,采用所见即所得的开发方式。Unity3d提供了一系列的可以与多点触摸屏幕、加速仪、三轴陀螺仪与GPS等通信与控制的APIs(应用程序接口)。

  二、影响unity平台iPhoner三维游戏运行性能的主要因素
   现阶段智能手机由于其硬件性能的限制,运行2D游戏较流畅,但是对于三维游戏,很多因素例如较多的多边形数量及复杂的粒子特效都会使游戏运行的桢率下降。一般游戏运行画面刷新率应该超过30桢每秒,小于这个桢率就会出现游戏迟滞感觉,从而被人眼识别出来,感觉游戏运行不流畅。经过测试,在unity平台上开发出的iPhone三维游戏有如下影响游戏运行性能的因素。

  (一)场景中的多边形数量
   经过测试,在iPhone4中,当只有一盏点光时,而当游戏场景中需要被渲染的可见多边形顶点数超过8000个时,游戏的性能就会下降到小于30桢每秒,这样就会明显的观察到有迟滞现象。

   (二)游戏中的物理学计算
   在游戏中需要采用物理学引擎来计算物体之间的碰撞以获得更生动的更真实的游戏体验。例如小球碰撞到墙壁弹回的真实模拟,通过一个简单的小球碰撞游戏测试,发现当小球数量小于20个时,桢率可以维持在30以上,但小球的数量上升到50个时,游戏几乎不能运行,这说明复杂物理学计算对游戏性能影响较大。

   (三)灯光数量
   为了取得更好的游戏画面质量,场景中往往要加入灯光,但如果场景中加入较多的灯光并开启实时的阴影与照明,则会使游戏的流畅性大大降低。
  (四)粒子系统
   在游戏中,为了现实云雾烟尘等自然现象,需要采用粒子系统来进行模拟。Unity中粒子系统的主要原理是由发射器发射粒子,然后由粒子播放器(particle Animator)控制粒子随时间运动。并且粒子渲染器将粒子渲染显示在屏幕上,如果粒子要进行碰撞计算还要添加粒子碰撞器进行交互控制与计算。粒子系统是极其耗费系统资源的,当增大粒子发射器数量或粒子数量时,游戏会被严重地拖慢。

   (五)角色动画的复杂程度
   Unity中角色动画系统支持由3dsMax或Maya导入的fbx格式的角色动画文件,支持骨骼动画。整个场景中的动画角色的数量,骨骼的数量,及角色动画的复杂程度都将影响游戏的性能。

  三、提高unity平台开发的智能手机三维游戏性能的技术要点
   Unity生成游戏画面的过程是由CPU将各游戏物体的位置、光源、纹理、渲染方式等进行计算并传递给GPU在屏幕上显示。每次游戏通过CPU准备并通知GPU的过程称为一次DrawCall(绘制调用)。优化游戏的性能主要是要减少CPU端的消耗,也就是要减少DrawCalls的数量,由于DrawCall是逐个物体进行的,特别是每次设置物体的材质/shader是非常耗时的操作,因此减少DrawCalls是提高游戏性能的主要方法。

   (一)对场景中模型及材质的优化
   场景中的模型应该尽可能采用较少的面数,并且由于DrawCall是针对每个物体逐个进行的,物体能够合并的就应该合并,以减少物体的数量。对于材质优化是要尽可能减少材质数量,即要尽可能材质共享,对于纹理不同的材质应当组合到一张更大的纹理中。在测试中,我们将一个简单的范例游戏中的模型进行了合并,并将4个纹理合并成一个,通过优化软件测试,发现一桢的Drawcalls由1920次下降到346次,GPU占用时间也从21ms下降为3ms,性能提升非常明显。

  (二)灯光与特效的优化
   游戏场景中应尽可能使用更少的灯光数量,或者采用lighterMapping来代替灯光效果。对于特效,一定要关闭其阴影计算,特效的DrawCalls数量多,优化的办法是减少粒子的数量,在不过大影响画面质量的情况下进行纹理合并。

   (三)角色动画与物理学计算优化
   减少角色模型面数,合并贴图,减少骨骼系统数量将使游戏性能得到提高。而对于物理学计算而言,是要尽可能减少场景中的刚体或柔体的数量及模型复杂度。
   当然游戏性能优化并不能简单地减少场景资源,而是在游戏画面质量与硬件性能取得平衡的一个过程。特别是合并物体、合并贴图、共享材质、恰当减少模型复杂度、使用灯光贴图等技术并不会使画面质量下降但可以大幅提高游戏性能,是非常好的游戏优化策略。

  
  参考文献:
  [1]Chehimi,F.;Coulton,P.;Edwards,R.;Evolution of 3D games on mobile phones,2005.

  [2]赵朋飞,智能手机操作系统Google Android 分析,2011.
   [3]Unity.Unity3D参考手册.Unity 2010.
   [4]Ben Britten Smith,Game Development with Unity,2010.

转载请注明来源。原文地址:http://www.xzbu.com/7/view-1694476.htm

抱歉!评论已关闭.