【求助】1.8.2安卓上游戏不流畅

  • Creator 版本:1.8.2

  • 目标平台:Android

  • 手机型号 :小米4

目标:希望保持在30帧以上

现状:正在做一个游戏,三国志10那样的,战斗场景无法保持在30帧以上,



测试使用了一场战斗的回放数据,不需要通过网络,
一般就只有20帧左右,当军队增援(一下子增加60几个军队,此时看到的只有10几个)和多个军队战斗(伤害飘字、战法使用、丢石头)时,帧数就只有几帧。

图片资源是用图集,头像是一个头像一张图的
战场的对象进行了分层,屏幕外的军队直接移除节点,进入屏幕看得见才添加节点;
添加节点(军队、伤害飘字等)时,添加时延迟添加,同一帧只添加一个;

去掉了原有的一些表现:
头像原素材是矩形要显示成圆形,本来用Mask,发现使用Mask帧数下降很多,所以先去掉了Mask,暂时就不显示成圆形了;
下方军队列表目标文字从右往左滚动本来用Mask,现在去掉了Mask;
军队小兵改成了只是用一个黑点表示;

发现
用Graphics画线掉帧很厉害,不知道是不是用的不对
var tNode = new cc.Node;
var tGraphics = tNode.addComponent(cc.Graphics);

增加了一个关闭一些战场表现的界面,选择关闭“去掉头像的线”后,感觉似乎好一些,帧数有十帧左右

PC上Google Chrome浏览器里能保持50帧以上,Draw call最高是290左右的

调试模式打包后,增援结束时Draw call是200左右,战斗时是260左右

游戏录像中是因为开了录屏大师,所以帧数才更低,不开录屏大师时,帧数一般在20帧以上,增援时会降到10几帧,战斗时才会降到只有几帧

测试过不表现,只跑逻辑,基本能保持有60帧,所以想到可能是表现导致的,去掉了一些表现后,表现已经算很少了,帧数有提高,不过还是比较低

参考了
【技术分享】2D MMO中角色动画的优化总结
http://forum.cocos.com/t/2d-mmo/46479


去掉了anim后,看起来没有变化,应该是我的游戏只是5个anim也就几k,和大神有30M的anim文件还是不同的

我的游戏战斗场景也只是用了一张图集,应该也没有必要去掉plist文件

好像好多游戏都是要针对自己项目去改底层,是否是应该去改改底层的渲染还是什么,修改底层的话应该从哪个代码开始入手,没有看过底层源码。

进行了各种尝试,还是无法保持在30帧以上,求助
.
.
.
2018年4月27日
PC上Google Chrome浏览器里能保持50帧以上,Draw call最高是290左右的

调试模式打包后,增援结束时Draw call是200左右,战斗时是260左右

游戏录像中是因为开了录屏大师,所以帧数才更低,不开录屏大师时,帧数一般在20帧以上,增援时会降到10几帧,战斗时才会降到只有几帧
.
.
.
2018年5月4日20:19:01
用了Adreno Profiler查了,合并了一些draw call
先隐藏了军队的头像和血量的数字,军队旗帜用了自动图集,去掉了战报后,
draw call降低了很多,从原来最高260降低到了100,
帧数没有提升不明显,最低还是只有几帧

增援后draw call只有60左右,24帧以上,
战斗时最高有100左右,10几帧

1赞

游戏录像.part1.rar (2.5 MB)

游戏录像.part2.rar (1.9 MB)

游戏录像2.part1.rar (2.5 MB)

游戏录像2.part2.rar (2.5 MB)

游戏录像2.part3.rar (1.5 MB)

帮顶!

棋牌专用引擎,你做这个估计性能瓶颈比较严重:joy:,等2.0看效果吧。。。

1.10说4月中旬要来,还没有看到,2.0就不知道要多久了。
好像好多游戏都是要针对自己项目去改底层,是否是应该去改改底层的渲染还是什么,修改底层的话应该从哪个代码开始入手,没有看过底层源码。

draw call 是不是太高了

PC上Google Chrome浏览器里能保持50帧以上,Draw call最高是290左右的

调试模式打包后,增援结束时Draw call是200左右,战斗时是260左右

游戏录像中是因为开了录屏大师,所以帧数才更低,不开录屏大师时,帧数一般在20帧以上,增援时会降到10几帧,战斗时才会降到只有几帧

人工置顶。。。

bangding

帮顶,同遇到性能问题,10人左右pvp游戏,dp不到100,但是在iphone6上已经卡到基本不能玩了。常规的合图分层啥的都有做。

底层就是cocos2dx,支持定制引擎,官方有定制引擎的教程。cocos2dx的底层是opengl,能否达到需求就要看大神的功底了。

分析一下看一下瓶颈在哪儿?
卡在哪里 渲染 还是 逻辑

不懂opengl,渲染这块完全不懂,不知道从哪里下手,
cocos2dx的底层的话,那就不是去看engine\cocos2d\render-texture目录下的
CCRenderTexture.js,CCRenderTextureCanvasRenderCmd.js,CCRenderTextureWebGLRenderCmd.js
这三个文件的是吧。

是要看cocos2d-x\cocos\renderer下面的吗

测试过不表现,只跑逻辑,基本能保持有60帧,所以想到可能是表现导致的,去掉了一些表现后,表现已经算很少了,帧数有提高,不过还是比较低。