这是个吐槽贴,表达一下2.2版本给我带来的痛苦经历,说是吐槽,实际是对2.2的实际反馈,相信引擎团队也不想CCC都是拿来做小游戏。
因为我的游戏是场面元素较多的类型,所以对加载性能要求比较高。先上个图片表达一下意思。
在这个场景中,需要加载的图片大约有3000-3500个图片需要加载,大约有100-200个动画。
这是高级别玩家的普通情况,还不说战斗中需要额外添加大约1000个左右的额外sprite,另外战斗开始后还需持续的位置刷新、战斗特效、各种算法等等的开销。
切换场景的意思是:当前页面元素全部去除,加载新的场景元素,并没有Canvas的切换
版本A:2.1.2
版本B:2.2.0
版本C:2.2.1
测试机型,安卓系统 660CPU(基本代表市面上的实际中端配置)
视频演示
视频A版 https://v.qq.com/x/page/t3017pjdzvl.html
视频B版 https://v.qq.com/x/page/n3017trhxk0.html
视频C版 https://v.qq.com/x/page/y3017ymcuba.html
先说切换场景的速度
A:4秒
B:7-8秒
C:7秒
在优化上,因为考虑到玩家内存,A版的时候并没有做缓存池,只做了一些IO优化, 页面切换时,新页面的内容全部是重新创建,而这切换场景需要4秒,记住,是4秒,没有缓存池的情况仅需4秒
缓存池的原理是场景卸载时,将场景中的sprite全部push在map中(key:name,value:array),sprite不做释放,透明度设0;
再次加载场景时,sprite创建先查询有没有缓存,有的话在map中取,(array pop),透明度设255,以达到复用的目的。(这样会显著增加内存占用,好吧,为了优化不择手段了)
至于说nodepool类型的优化,就歇会吧,每个玩家都有不同的布局和建筑级别,不同级别又有不同图片。sprite的创建无论你是instantiate还是new,都免不了开销,这是考验引擎性能的时候,再优化也破不了这一关。
而B版和C版有对象缓存池,7-8秒加载出第一次后,再次加载速度将提高,速度将提高到5秒,注意,这可是sprite复用的情况,很确定sprite未重新创建,而是透明度恢复255,这样仍需5秒,这样仍需5秒,这样仍需5秒。
我之前也反馈过2.2性能低下的问题,但这次的2.2.1,并未改善多少。
安卓在2.2之后,堪称灾难,帧数多不了几帧,而场景的切换从4秒变8秒,8秒什么概念我想各位开发者都能体会到
玩家会认为游戏卡了,玩家会来说:为什么我的手机能玩吃鸡,能玩王者荣耀,却玩不了你一个2d游戏,我那个尴尬啊。
2.2在安卓的问题是,本来是为了提高渲染性能,提高渲染性能的前提是场景元素很多对吧?结果元素一多,渲染多不了几帧,而加载速度大幅下降,这个交换值得么?
就页面上三瓜俩枣几个几十个元素的情况,提高了什么渲染性能啊提高???很明显没意义,渲染提升的最基本原则是建立在场景元素较多的情况。本身2.1.2和早版本的性能表现在安卓就已经合格了
如果说2.2对IOS来说是春天,多那几秒还算值得,毕竟渲染性能天翻地覆。对安卓来说就是捡了芝麻丢了西瓜,不堪直视。