- Creator 版本: 3.8.6
- 目标平台: 微信小游戏
起因是做的游戏测试在某些IOS机型上点击开始游戏必闪退,尝试砍掉很多预加载后出一个新的体验版,再用对应机型反复测试两个体验版,有预加载的体验版点击开始游戏必定闪退,不进行预加载的体验版点击开始游戏就不会闪退(游戏逻辑经过很多天的测试了,其他机型都没问题,不大可能是逻辑报错导致的),于是猜测是内存占用过高导致了闪退,开始进行内存优化。
根据抖音官方文档: 性能优化_小游戏_抖音开放平台,第一步:让美术同学对大尺寸的图片进行九宫格剪裁,能复用的则复用,尽量减少总体图片尺寸。
为了验证占用内存是否降低,借助了微信小游戏的云测试服务,优化图片尺寸前后分别打了体验版,提交云测试,前后数据对比如下:
可以看到,结果筛选了相同设备后,验证出内存占用下降明显,有高达17%的下降,对于某些闪退机型来说,这个百分比的下降很可能就是闪退和不闪退的天壤之别。
我让测试同学再次用闪退的机型去测试,发现点击开始游戏时确实也不闪退了。
到这一步其实已经初步解决因为内存而导致的闪退问题了,不过看到抖音官方文档: 优化普通小游戏内存_小游戏_抖音开放平台 提到对图片进行ASTC压缩,能让内存减少70%+,非常心动,想继续尝试一下。
于是将项目里所有自动图集和手动图集勾选了“压缩纹理”,最初使用的是ASTC8x8,打包出来后手机运行时发现图片太糊了,完全不能接受,于是分别尝试了8x8、6x6、5x5,对比了视觉效果、文件大小、内存占用,数据如下:
· 视觉效果:
· ASTC 8x8:很糊,完全不能接受;
· ASTC 6x6:比8x8好一点,但图片依然出现了毛刺,依然不能接受;
· ASTC 5x5:毛刺消失了,接近png的效果;
· 文件大小(bundle大部分勾选了zip压缩方式):
· png:构建后原始大小40MB,经过pngquant压缩后17MB
· ASTC 8x8:24.8MB
· ASTC 6x6:38MB
· ASTC 5x5:50MB
· 内存占用(依然使用微信云测试服务,使用的都是经过了图片尺寸优化的游戏版本,仅压缩纹理的格式的不同):
· png vs ASTC6x6:
· ASTC 6x6 vs ASTC 8x8:
可以看到,经过ASTC压缩后,内存占用的结果相对于png格式,并无明显变化,完全没有“70%”这样子夸张的变化。
疑问:为什么经过ASTC压缩后,内存并无明显下降呢?有大佬指点一下吗?