有兴趣试用的朋友请先打开离线地图操作 https://github.com/genxium/DelayNoMore/blob/main/frontend/assets/scenes/offline_map.fire
自从我觉得cocos不行已经有快10年了,之前一直都没有机会做web版本的输入同步,因为觉得cocos不可能行。然而最近因为做了DelayNoMore,从第一版开始到现在陆续加了不少小细节,逐渐感觉不是引擎不行可能是以前的我不行,于是大胆尝试了一下 – 无奈我策划能力实在是不行,只好开源出来看看有没有看得上又有能力的团队可以拿去做点有意思的东西吧
以下是在公网其中一个房间的录屏
(Android 4G之间对战,实测可以线下看着对方屏幕操作,原视频见此)
(功能介绍,原视频见此)
自 v0.9.25起,native版本增加UDP打洞及在打洞失败时后端作为UDP中继的能力
- 当使用所谓的
native apps
(目前仅支持Android
和Windows
), 前端将优先尝试使用UDP p2p打洞及传输指令,实测如果打洞成功,rollback的帧数总是低于"角色转向硬直"从而对局比仅使用websocket时流畅度有极大提升 - 如果UDP p2p打洞不成功,e.g. for Symmetric NAT like in 4G/5G cellular network, 前端也会把后端当作一个UDP中继用,效果会稍差但依然比仅用websocket好,见Phone-4G v.s. PC-Wifi (PC侧录屏)
- Browser vs
native app
依然可用,但这种情况下只会都用websocket,效果见前面的录屏
更新了v0.9.28,修复了前端libuv在Android/Windows分别使用时的兼容性问题及线程安全(集中在udp_session.cpp,事实上如果不手动断点等待是不会触发的,但因为碍眼还是修复了)。自v0.9.25起各更新都不会让网络好的时候有什么体验提升,都是针对弱网的优化。
更新了v0.9.31,改善了贴墙跳和惯性起停的体验。
更新了v0.9.34,UDP包接收流程中定制了无锁的RingBuff,目前公网Windows Wifi v.s. Android 4G帧率也相当稳定,效果可参考此视频。