删帖删帖

删帖删帖删帖

1赞

千万别点我的地址放错了,直接到了自己的个人中心,并没有到你的博客

这根本就不叫帧同步,你的项目原理就是,摇杆移动时,自己直接执行移动,同时在update里把自己角色的位置更新给其它各个客户端,update是60帧每秒,就1秒钟转发60次数据,而且数据居然转发的是字符串 “p:” + this.num + “,” + this.joy.player.x + “,” + this.joy.player.y;这种格式。x,y坐标转换成字符串后应该都有9位数吧,整个字符串的长度24个字节,1秒钟就发了60 * 24byte,超过1k的数据,4个玩家就有4k,网络根本承受不住,而这才仅仅包括玩家的位置同步,再同步多几个别的状态无法想象。就算网络通信正常,你这demo也写不了同步逻辑啊,因为没有逻辑帧的概念,虽然画面位置看起来是位置同步了,但是每个客户端的角色位置不是在同一帧同步的。比如,玩家1在自己的端到达(100,100)的位置在update的第10帧,而在玩家2的画面,可能看到玩家1到达整个位置时是在第9,11,或12帧。如果一个玩家在不同客户端碰到子弹的所在帧都不一样,就会发生在一边是被击中了,在另一边是被躲过去了

2赞

帧同步最基本的原理是 “相同的输入” + “相同的时机” = “相同的结果”。你这个demo,一个条件都不具备。你要做帧同步游戏,应该是做操作同步,而不是去同步玩家的位置。如果你是用摇杆玩,你应该同步的是摇杆的“摇杆方向”和“按键”,而且不能立即执行操作响应,直到服务端返回你的操作你才可以执行响应,其它客户端也是一样

1赞

demo玩了一下,自己控制自己的角色看是很流畅,但是另一个客户端看到这个角色一直在跳帧。(角色直接响应摇杆,在把移动后的位置同步给别人的原因)

1赞

谢谢大佬指点,尴尬了,我的一个朋友告诉我这么写算帧同步的。。

最好查阅一下相关资料吧,网上很多资料。必须懂前后端,我搞了1年时间,才写出前后端的帧同步技术的。