cocos creator 1.8.2 抖音小游戏优化
现在手头上的一个项目是 creator1.8.2开发的,目前在运营中,后天收到抖音的报警,提示性能有问题。所以优先对抖音渠道处理,过程需要借助抖音开发者工具。
1.启动太慢
-
分包
所有资源采用远程加载,但是代码太多了,足有8M,1.8.2的版本又没有分包的功能。看了下抖音的文档,支持js文件作为子包,于是尝试将整个代码的js文件作为子包,在子包加载完成后再执行 cc.game.run(); 这里会有一个问题:虽然分了子包,但是还是需要等待所有包加载完成才能进入游戏,结果就是并没有什么改善。换个思路,新建一个空场景,(中间加点文本/游戏logo),不带任何逻辑代码,仅依赖cocosEngine就能运行起来,这样首个场景会很快显示出来,等子包加载完成后再调用函数进入分包之前的首个场景。 -
压缩代码
- 裁切引擎代码,这个编辑器里可以设置
- 导出的 setting.js 也很大,里边就一个json对象,我这边压缩了一下size 减了一半
2.内存占用比较高
手头上的这个线上项目之前完全没有考虑内存问题,只加载不释放,apk的包体只有200M+, 抖音后台那边报警说达到2G了!
大概的思路是:
- 使用ASTC 压缩纹理,不过1.8版本不支持,需要对照高版本的自己实现,项目渠道接的比较多要仔细测试
- 代码中及时释放关闭的页面的资源,这个需要对整个项目进行梳理、调整
- 笔者之前在2dx上做过纹理闲置超过一定时长/内存告急时释放掉资源(挖个坑,有空了补一篇),下次需要时再重新加载,这里看看能不能实现
小游戏的内存分析比较难搞,翻了很多文档最后决定使用xcode 的 Instrunments > Activity Monitor来分析。借助这个工具大概的分析的内存占用,比如说抖音初始占用内存600M,运行小游戏后1G,那就认为小游戏占用内存400M。
当然开工前先在网上翻一翻,看看有没有前辈的优化教程,找到一篇优秀的帖子。文中提到图片双倍内存的情况,通过在Texture2d加载完成后设置this._image.src="";释放掉无用的一半。我这边按照这个方法处理后并没有降低内存,测试发现加载10张 2048x2048的png图片内存增长约220M,并不是预期的160Mx2,当然也有可能是抖音平台与微信平台的差异。那就只能按照之前的思路来搞了,前两条工作量比较大,所以先从我熟悉的第三条开始搞。避免不了要修改cocos-js的引擎,搞这个环境也费了一番功夫。基本方案是引擎改完后,导出miniJS,保存下来,每次抖音小游戏发布后通过脚本用这个miniJS替换掉构建出来的miniJS文件。
给纹理加上一个idleTicks,在不渲染时累计tick,渲染时清空tick,在主循环中清理tick>一定值的纹理,清理过的纹理需要标记再下次使用的时候重新载入。具体代码就不贴了,上线后后台监控显示是有改善的。
更多推荐
所有评论(0)