高手请进,微信小游戏 iOS 性能优化探讨

本人最近接触微信小游戏平台,对微信小游戏不太熟悉。

最近做项目遇到个问题:
安卓机运行起来FPS在正常范围波动50-60,而 iOS 则出现了各种情况。

cocos creator 3.8.0
测试环境:微信小游戏,iOS

朋友的 iPhone X 帧率很低,在20-30之间。Game Logic 和 Renderer 耗时很大,如下图:

我自己的 iPad 8 帧率在个8-20之间,Game Logic 和 Renderer 很大。如下图:

询问了一些高手后,得到建议是,开启微信高性能模式。
于是我在微信项目后台设置开启,CC打包时勾选“高性能模式”,再测试。
情况如下:

朋友的 iPhone X 帧率变得很不稳定。在20-60之间。
如果画面显示的是自己控制的3D角色在移动就稳定在60,如果画面显示了其他3D角色就会骤降到10-20。也就是说,看见了其他 NPC 就会巨卡,比之前没开高性能模式还卡。

询问另一个朋友,他的 iPhone 11。任何情况都 帧率正常。
问其,之前没有开高性能模式时,卡不卡。回答:不卡。这台iPhone11的运行截图如下:


这个 iPhone 11 之前没开高性能之前没截图,但是从他描述得知:不管开不开高性能,对于这个机器都是一样的。帧率都较高。

又询问一个朋友,iPhone 14 MAX。回答是,都不卡。

我自己的 IPad 8 情况则比较奇怪。变得不卡了,但FPS 30。
Game Logic 和 Renderer 很低,在个位数左右。打印 game.frameRate 的结果,显示为 60。运行起来感觉不卡,但是帧率不管怎么搞,在CC用代码控制或者用WX的API设置,都是打印显示为60,实际运行30。就像被锁定了帧数一样。折腾了一个晚上,无果,睡觉起来后,现在(早上7点)再运行,发现 ipad 8 帧率稳定在了60。微信开启高性能模式的部分效果不是立即生效而是还是有延迟的??

那么现在问题是:
iOS不同的设备,运行同样一份代码,得到的FPS,千奇百怪,各不相同。
iPhone X:不开高性能,很卡,开了后,时而正常,时而卡。
iPhone 11、iPhone 14 MAX:不管开不开都不卡。
iPad 8:不开高性能,很卡。开了后,感觉不到卡,只是最初FPS被锁定为30,一段时间后60。

对于 iOS 设备怎么做处理呢?
是什么特性导致iOS设备变卡的(通常是要么不卡,要么巨卡)?
微信的高性能模式是不是开启后有延迟?iPad 8 那种情况。(等那个iPhone X的主人起来后,我再问问他,现在还卡不卡)

原生性能上有没有测

没有。估计不卡。这个就是在微信小游戏 iOS上问题严重。

个人建议可以看下我这个帖子的这个地方, 应该可能大概会有点点参考价值, :smiley:
https://forum.cocos.org/t/topic/131318
1.4 分析运行时性能入门
1.4.1 模拟移动 CPU,可以用于模拟 IOS 的环境,非常方便测试(建议使用)

0acdcec1f7b695551d873eefbbc87ac

开了高性能模式,对游戏的内存要求比较高,如果开了高性能模式(在同等安卓机流畅的情况),大概率就是内存过高导致的卡顿,不是jit导致的算力问题了。个人建议可以用工具排查一下是不是游戏内存过高导致的卡顿。

高性能模式我也试过,结论就是该卡的还是卡,并且FPS的波动极大,同时比较卡的机器可能是iPhone X或更老的机型,内存也吃紧,高性能模式下极有可能因为内存占用过大而被kill退出

建议试下纹理压缩,我感觉挺有用的。然后就是程序内部优化,类似你这种大地图游戏,一定要做好可视区域外节点的隐藏和复用

之前遇到过一种情况,模型首次加载就会卡帧,add后销毁再次add就不卡,很神奇,最后处理就是提前把用到的模型add一次。。。