我用Creator 做游戏这段时间的游戏优化心得

我也是没用Creator多久以下都是个人总结,欢迎补充和拍砖

我优化游戏大概有以下几个方面:
1.减少资源内存占用
2.减少计算
3.降低draw call
4.使用对象池
5.动态调整游戏帧率

一.内存中的资源占用:
1.使用适当的设计分辨率不要将设计分辨率定的太大 1136 x 640 足矣
2.不使用的资源及时释放

二.减少计算量
这个只能根据游戏来处理了,减少一些不必要的运算,使用更好的算法,一般的小游戏计算量其实都还好

三.降低draw call
1.将小图合成大图使用打图集的工具
2.Label使用BMFont
3.减少Mask使用
4.不要使用jpg图片
5.减少粒子使用

有些人可能会说明明这些都做了为什么Draw Call还那么高?

1.不同图集之间渲染被打断
合并draw call就是同一张图片渲染中间不能出现不同的纹理,如果一个场景中只有一张大图,场景中只有Sprite,那么draw call 肯定为1 (如果是使用自动图集的必须要发布出来才能生效),如果场景中有两张大图,只有相同大图的node一起渲染,才不会打断draw call , 当图集A的所有Sprite 都在node 1 ,图集B的所有Sprite都在 node2就会只有两个 draw call,或者图集A的所有 Sprite 都在图集B所有 Sprite 的之前渲染也会只有两个draw call 。如果不同大图之间的Sprite对象交叉在一起渲染draw call就会变高。

2.相同层级中间穿插Label
如果多个Label使用的相同BMFont 字体并且在同一个node ,label与label之间没有其他的node,label的draw call也会合并,如果sprite之后有一个label,label之后又有一个sprite,这样两个sprite就不能合并draw call,label尽可能在sprite之后渲染或者放到单独的Node上。

3.使用Mask组件会打断draw call

四.使用对象池减少游戏过程中动态创建对象
游戏中多次出现的东西有加入对象池,比如一些游戏中出现的效果,游戏中的道具,游戏中浮现的加减分数,有必要就不用label,自己封装个对象,将0-9出成图片,打入大图中。

五.动态修改游戏帧率
我以前从来没有修改过游戏帧率,怕影响游戏效果,但是打出APP包,在一些手机上发热特别严重,玩一小会就感觉可以当暖手宝用,现在做的是一个休闲的小游戏,感觉对帧率要求不是很高,就把游戏中不显示动画的时候帧率设为45帧,有动画的时候把帧率设为60帧,使用的接口就是cc.game.setFrameRate();

六.动态移除游戏中的部分效果
我在游戏过程中启动了一个update,将游戏卡顿划分等级,我这边是,当连续6帧内,帧率低于50帧为一级卡顿,连续低于45帧为二级卡顿,我这个游戏背景上有很多的特效,将可以移除的特效放到数组中,检测到当前是几级卡顿就停掉对象的效果,还有就是如果有些效果可以用图片代替也可以在较为卡顿的时候给替换为图片,如果有些重动态修改了帧率,不要忘了将设置的卡顿帧率乘以缩小的系数。

我这边用三星Note3 测试时H5 版本展示动画时 draw call上升了 100 多也不会出现卡顿,native就会有明显的卡顿效果。

我们这边是要出H5版本和APP版本,相同的手机h5版本总是比APP版本性能优秀,希望引擎组各位大大native方面也能优化到H5那么优秀。

28赞

我这边用的是Creator1.9.3版本,使用node.active时效率会比较低,所以我这边都是用的把透明度设为0

1赞

mark

mark

感谢分享~
###“相同的手机h5版本总是比APP版本性能优秀””
APP 反而没 h5 性能好?这块是楼主是验证过的吗,大概低多少?

是的,我这边要出h5版和APP版,如果不播放动画和粒子感觉都还好,播放效果时,APP版明显就会掉帧

1赞

补充下如何优化BMFont类型 Label 的DrawCall:
又翻了下文档发现引擎组已经做了Label和UI合并渲染的功能,将BMFont文件和用到的UI放一起建一个自动图集就可以优化Label这部分的Draw Call,还是自己看文档没有 注意到这点,导致多做了很多无用功,附上官方文档地址:
https://docs.cocos.com/creator/manual/zh/advanced-topics/ui-auto-batch.html

mark

mark

mark

mark

mark

mark

mark

mark

不要使用jpg图片?使用适当的设计分辨率不要将设计分辨率定的太大 1136 x 640 足矣?减少粒子使用?这也不用那也不用 ? 这些影响都不大好伐。

mark

收藏下

mark

你自己写来测就知道了, 我用Cocos Creator写过游戏的经验跟楼主是一样的.
不過不用jpg圖片這點不太明白.