使用Unity开发安卓游戏怎么进行性能优化

核心提示一、遇到麻烦时要调用“垃圾回收器”(Garbage Collector,无用单元收集程序,以下简称GC)由于具有C/C++游戏编程背景,我们并不习惯无用单元收集程序的特定行为。确保自动清理你不用的内存,这种做法在刚开始时很好,但很快你就公发

一、遇到麻烦时要调用“垃圾回收器”(Garbage Collector,无用单元收集程序,以下简称GC)

由于具有C/C++游戏编程背景,我们并不习惯无用单元收集程序的特定行为。确保自动清理你不用的内存,这种做法在刚开始时很好,但很快你就公发现自己的分析器经常显示CPU负荷过大,原因是垃圾回收器正在收集垃圾内存。这对移动设备来说尤其是个大问题。要跟进内存分配,并尽量避免它们成为优先数,以下是我们应该采取的主要操作:

移除代码中的任何字符串连接,因为这会给GC留下大量垃圾。

2.用简单的“for”循环代替“foreach”循环。由于某些原因,每个“foreach”循环的每次迭代会生成24字节的垃圾内存。一个简单的循环迭代10次就可以留下240字节的垃圾内存。

3.更改我们检查游戏对象标签的方法。用“if (gopareTag (“Enemy”)”来代替“if (go.tag == “Enemy”)” 。在一个内部循环调用对象分配的标签属性以及拷贝额外内存,这是一个非常糟糕的做法。

4.对象库很棒,我们为所有动态游戏对象制作和使用库,这样在游戏运行时间内不会动态分配任何东西,不需要的时候所有东西反向循环到库中。

5.不使用LINQ命令,因为它们一般会分配中间缓器,而这很容易生成垃圾内存。

二、谨慎处理高级脚本和本地引擎C++代码之间的通信开销。

所有使用Unity3D编写的游戏玩法代码都是脚本代码,在我们的项目中是使用Mono执行时间处理的C#代码。任何与引擎数据的通信需求都要有一个进入高级脚本语言的本地引擎代码的调用。这当然会产生它自己的开销,而尽量减少游戏代码中的这些调用则要排在第二位。

1.在这一情景中四处移动对象要求来自脚本代码的调用进入引擎代码,这样我们就会在游戏玩法代码的一个帧中缓存某一对象的转换需求,并一次仅向引擎发送一个请求,以便减少调用开销。这种模式也适用于其他相似的地方,而不仅局限于移动和旋转对象。

2.将引用本地缓存到元件中会减少每次在一个游戏对象中使用 “GetComponent” 获取一个元件引用的需求,这是调用本地引擎代码的另一个例子。

三、物理效果

1.将物理模拟时间步设置到最小化状态。在我们的项目中就不可以将让它低于16毫秒。

2.减少角色控制器移动命令的调用。移动角色控制器会同步发生,每次调用都会耗损极大的性能。我们的做法是缓存每帧的移动请求,并且仅运用一次。

3.修改代码以免依赖“ControllerColliderHit” 回调函数。这证明这些回调函数处理得并不十分迅速。

4.面对性能更弱的设备,要用skinned mesh代替physics cloth。cloth参数在运行表现中发挥重要作用,如果你肯花些时间找到美学与运行表现之间的平衡点,就可以获得理想的结果。

5.在物理模拟过程中不要使用ragdolls,只有在必要时才让它生效。

6.要谨慎评估触发器的“onInside”回调函数,在我们的项目中,我们尽量在不依赖它们的情况下模拟逻辑。

7.使用层次而不是标签。我们可以轻松为对象分配层次和标签,并查询特定对象,但是涉及碰撞逻辑时,层次至少在运行表现上会更有明显优势。更快的物理计算和更少的无用分配内存是使用层次的基本原因。

8.千万不要使用Mesh对撞机。

9.最小化碰撞检测请求(例如ray casts和sphere checks),尽量从每次检查中获得更多信息。

四、让AI代码更迅速

我们使用AI敌人来阻拦忍者英雄,并同其过招。以下是与AI性能问题有关的一些建议:

1.AI逻辑(例如能见度检查等)会生成大量物理查询。可以让AI更新循环设置低于图像更新循环,以减少CPU负荷。

五、最佳性能表现根本就不是来自代码!

没有发生什么情况的时候,就说明性能良好。这是我们关闭一切不必要之物的基本原则。我们的项目是一个侧边横向卷轴动作游戏,所以如果不具有可视性时,就可以关闭许多动态关卡物体。

1.使用细节层次的定制关卡将远处的敌人AI关闭。

2.移动和障碍,当它们远去时其物理碰撞机也会关闭。

3.Unity内置的“动画挑选”系统可以用来关闭未被渲染对象的动画。

4.所有关卡内的粒子系统也可以使用同样的禁用机制。

《使命召唤手游》11月新增雪山地图 游戏优化全一览

举例来说,一个游戏开发完成以后只是最原始的状态,此时的游戏占用系统资源巨大,对硬件驱动兼容性不很良好,游戏优化就是指在最大程度保留游戏原有风味的前提下,通过优化降低游戏程式对系统资源的消耗(比如降低内存需求,显存需求,CPU占用率),提高对不同硬件厂商驱动的支持.

说起游戏的优化,在游戏开发中经常分为这几步:首先要确定游戏中经常会出现哪些问题-Profile然后确定在哪些方向进行性能优化-Analyze最后再尽可能将问题逐个解决-Solve游戏开发中一定是先做工具,进行Profile,再进行优化。

所以,说优化就不得不再扯一下Profile常见的工具有一些是引擎和IDE自带的,比如Unity自带的Profiler,就包含了CPU,GPU,Memory等等各式各样的性能分析工具,其他的比如GPA,XcodeInstrument和VisualStudio。

Intel自带的内存管理工具在必要的时候也使需要去学习和使用的。另外一些工具,就需要根据游戏的需求去编写了;

比如一键关闭所有特效,一键更改分辨率等等,一键设置场上NPC数量,简单的游戏如啪啪三国是做成快捷键开启Profile功能的,更为复杂的游戏如神秘海域则是通过游戏内控制台来进行更为细致的Profie。

游戏优化方法

全面性能检测:结合电脑硬件配置,智能分析影响游戏运行流畅度的系统问题

一键开启游戏模式:一键操作,全面优化本机系统,提供用户游戏时可享受的最佳资源分配;随时恢复,安全可靠。

个性化优化方案:丰富的自定义优化项,轻松打造最佳游戏优化方案,并与迅游合作提供单机网络双优化的360度优化方案。

防打扰游戏桌面:游戏时切换到防打扰游戏桌面,屏蔽Win键弹窗、系统升级通知、防火墙通知等一切打扰,给用户最纯净的游戏环境。

实时保护游戏资源:智能提升游戏优先级,获得更多CPU和内存,无需手动管理。

精彩游戏必备:第一时间为您呈献最劲爆的游戏活动和最给力的游戏辅助工具。

支持网络优化:与迅游强强合作推出的游戏优化大师迅游专版中,最专业的解决用户因网络环境问题引起的掉线、卡顿、异常退出等情况

百度百科-游戏优化大师

使命召唤手游 官方已公布了11月的游戏进度分享,经典的雪山地图将加入游戏,各种操作优化以及枪械平衡调整,可见11月版本又是一次大改,玩家又能辞旧迎新,感受不一样的游戏新环境。下面我带来了《使命召唤手游》11月新增雪山地图,游戏优化全一览,想要了解的玩家快来看看吧!

★MP模式相关调整

一、地图新增

新加入了一张经典地图——雪山之巅,来自使命召唤黑色行动系列。

我们会持续加入高人气的经典地图,敬请期待。

二、重点操作优化

1、 新增开镜/落镜过程中可以进行开火

这个问题存在很久了,现在我们终于解决了,战士们可以尽情享受丝滑柔顺的 射击 体验了、、、

2、 新增固定虚拟摇杆的功能

前面的测试中,有战士反馈由于摇杆不能固定,经常导致断触或操作失误,因此我们进行了优化,以提升战斗体验。

3、 新增右开火转向屏蔽功能

三、其他操作优化

1、优化武器腰射,以及举镜射击的后坐力动画表现

2、优化换弹 动作 ,使动画和换弹整体时长匹配

3、优化枪械命中判定,使角色的命中判定更加精准

4、优化近战命中判定,使近战武器的判定更为准确

5、优化武器的准心显示

6、优化武器的开火和操作模式

7、优化所有武器的音效

8、优化投掷动作和投掷线,优化一键快速投掷功能(可在设置面板开启)

9、新增击杀确认反馈音效

四、枪械平衡性调整

士兵技能调整

1、 削弱麻雀弓的充能间隔。

很多战士说麻雀弓太强了。我们通过数据分析发现,麻雀弓主要在CD上要更有优势一些,从KD数据上看则是平衡的。因此我们削弱了它的充能间隔,但仍会比普通大招要稍快一些,我们会持续观察它的表现;

2、 略微加大暴风的闪电链条的传播距离。

部分枪械加强

1、 提高LK24的枪械射速;

2、 提高Chicom的子弹伤害,大幅降低伤害距离衰减;

3、 降低HG40的距离伤害衰减,强化HG40射程;

4、 提高W1200和M1887两种霰弹枪的子弹伤害;

部分枪械削弱

1、 略微提高UL736和M4LMG的后坐力;

2、 削弱AKS74U的中远距离作战能力,略微提高枪械后坐力;

3、 略微提高AK117的水平后坐力;

狙击枪调整

1、 提高Arcitc、50的垂直后坐力,稍微延长落镜时间;

2、 削弱DLQ33的致死面积;

★其他综合优化

一、游戏性能优化

1、优化了耗电和发热情况;

2、持续优化低端机性能,提升低端机的表现;

二、地图优化

1、优化部分地图的空气墙和穿射点以及地图通过性;

2、优化部分地图的攀爬和翻越位置;

3、优化地图中的光照问题,使整体光照变得更自然;

三、视角优化

增加1P握把动作

前面有战士反馈说装备了前握把之后,实际的持枪动作并没有变化,这个反馈我们认真听取了,现在当你装备了前握把之后,1P的持枪动作将会握住前握把。

 
友情链接
鄂ICP备19019357号-22