认真看完截图,感觉不合理难道ccc在iOS用了什么有已知bug的websocket lib?如果该lib独自跑这个流速不会有发热问题的话,那是jsb和C++通讯高频时耗电咯?
这么说来CCC其实不适合做帧同步, 不是技术的问题, 而是引擎在网络通讯上消耗太高
为啥不可以?用个充电宝不就好了吗?
你不如建议玩家搬到离水电站近的地方
本来ccc就只适合做h5 要真做原生 根本没理由用ccc来做。选择问题吧
3.3 不是修复了吗?
应该不是同一个问题,我们会跟进处理一下
但我实际测试是
中间一段是主动关闭websocket。
关闭后cpu占用5-6%,打开websocket17-18%(打开后,没发送,接收啥消息,就只有心跳包)
直接3倍开销。
测试版本3.3.2
看了官方用的libwebsocket.h是2.4.2版本。
当前最新都到4.3版本了。
是不是c库有什么bug
因为android平台上兼容性问题我们没有做版本升级, 实际上有过尝试.
你测试是只测native库(完全无js调用)还是依然从js调用及接收回调?
我从JS调用和接收引擎的
这有什么不一样
安卓已经修复了,将在 3.5 发布 https://github.com/cocos/cocos-engine/pull/10384
iOS 仍在跟进中,目前单独测试 SocketRocket 和 libwebsocket,跑 FB 的官方 demo 都有这个问题。我们会持续跟进。
反正就不是你们问题呗
感谢 Unity 用户的关心。
我只是披露一下现在的进展,让大家知道这帖没沉。
嗯嗯
我们进行了一系列的调研,比较了我们调用第三方库SocketRocket和其自身的demo的耗电量,以及其他websocket的实现。确认我们在调用SocketRocket时没有额外的电量损耗。CPU计算也是正常的。
cocos2.4.8
SocketRocket official demo
此外我们还对比了Unity和Unreal在Websocket功能上的ios耗电量,发现实际上ios本身网络通讯就是巨额电量开销。这一点可以参考 苹果官方文档https://developer.apple.com/library/archive/documentation/Performance/Conceptual/EnergyGuide-iOS/EnergyandNetworking.html
Unity:
Unreal:
具体的调研可以在engine仓库issue里阅读。
鉴于目前的电量损耗是难以避免的,
- 我们推荐开发者降低网络通讯的频率,联机游戏的逻辑同步通常不需要 30fps,可以降低至 10fps。尽可能合并发送数据,将多个数据合并到一个包里发送。
- 优化数据包,因为实测数据包大小与网络硬件模块所消耗的电量是正比上升的,也推荐使用压缩数据来降低电量损耗。
感谢引擎组严谨的对比,已知晓。