向各位大神,请教Cocos Creator性能优化经验。

最近我们做了一个很简单的两人对战小游戏,第一次用Creator . 这个小游戏战斗起来(特效+各类资源)DrawCall会达到60~80. 普通手机玩起来也会发烫和掉帧。想请教一下大家优化的时候会看哪些数据?怎么样的数据才能达到现在H5小游戏的标准。

还有一些手机浏览器兼容问题,兼容到什么程度才算是OK?打成图集、压缩图片、脏矩形优化啥的我们也尝试了。但效果并没有想象明显。还是说目前小游戏普遍都比较卡?

举个简单的例子,我们播放一个倒计时音效,播放总是不能与数字跳动合拍。播放总比数字跳动要慢0.2秒左右(不同手机效果还不一样),除非我们提前去播放这个倒计时音效。

我希望通过这次优化这个小游戏顺带将这些知识点大家一起梳理一下,望大家多多赐教。

播放倒计时那个,先看看你的音效前面是不是有留白(一段很短的无声内容),然后再看你的数字跳动动画是帧动画还是时间动画,帧动画做不到声音和动画吻合

音频前面没有留白,跳动其实就是切换321的文字,没有动画。即便这样也能看到延迟,尤其是安卓手机,延迟很明显。

  1. ui布局的时候要注意分层,把在一个图集里的sprite节点尽量放在一起。
  2. 不用系统字,用bmfont,否则label会打断合批。
  3. 有时候模块化的思想对优化不利,不要把各种东西都往prefab里面放。

举个例子,比如一般来说角色Avatar会做一个prefab,假如一个Avatar1个drawcall,然后把实例化以后的角色都放在一个叫做avatars的节点里面,这样即使有10个角色,那也是1个drawcall。但是如果把昵称放在这个prefab里面的话,就会中断合批,那么每个
Avatar2个drawcall且不同Avatar不能合批,总共就变成20个drawcall。一个简单的解决方案就是昵称不要放在prefab里面,统一放在一个ui节点里面,然后avatar更新位置的时候把nickname更新到对应的新位置。这样可以把drawcall降为1+10=11。

10赞

是一个方法,有时候需要舍弃

1赞

上游戏链接,才好帮你看

Thanks~

我希望系统整理一下CocosCreator的优化方式,不是某个游戏的特殊优化。

例如以前用U3D,我们会关注CPU、内存、渲染等各方面参数,每个参数都要对应的原理解析,可以通过观察profiler来知道每个项在什么情况下什么样的表现,是由什么引起的。

但做creator的时候没有profiler,或者能得到的信息不多,很难去调试优化。

我看creator项目打包出来的用的是原始图,不能与原生一样安卓使用etc ios使用pvrt之类的?

还有各个浏览器也会有支持差异,那这些差异我怎么能找到呢?

Thanks,huww13~

渲染管线和其他引擎应该是一致原理的我能理解,系统字与bmfont这个我不能理解,系统字不应该也是一种字体吗?如果全部用系统字,这个label也会被打断合并?

bmfont的话,大家是用到什么字就将这些字取出来做一个字体吗?不用的就不放进去。那有无办法整个游戏用到的字有什么方便工具只打包这些字吗?

根据我的理解,系统字每一个label都要拷贝系统生成的字符串图像数据生成纹理,因此不能合批。而bmfont是使用同一张贴图,当这张贴图跟其他贴图合到一个图集以后,这个bmfont跟一个sprite就没啥区别,可以正常合批了。

具体到项目里面来说,我们的做法是,常规的系统提示类文字,文字范围都是确定的,那么我们就为这些用到的字制作bmfont。对于像玩家昵称这种不确定文字范围的label,就只能用系统字了,但是会把这些系统字放到一个节点下,跟其他节点分开,尽量避免打断合批。制作bmfont可以用 Bitmap Font Generator

4赞

据说1.X的现在不优化了,我打算等2.0看看。1.x 我不管怎么优化都会掉帧。。。

大佬 能加下扣扣交流下技术不 性能优化想请教下

Cocos Creator性能优化经验总结

我想问的是H5游戏的标准是啥?想看看这个标准。我一直是拿FPS来标准的,只要保持在50以上就感觉可以了,第一次知道H5还有标准,求解惑:grin:

mark