有多人联机游戏经验的大佬帮忙解决下疑惑,多谢!!!

英雄联盟和守望先锋都是状态同步

我最近也了解下,帧同步,感觉那个实现起来有点麻烦。所以打算用状态同步,但是状态同步有个缺点就是服务器计算量大,并且同步得数据会很多。帧同步只传输操作命令。但是我用得那个框架colyseus,他的状态同步是只同步变化得数据,所以感觉这样得话,同步得数据好像也不多。但是计算性能不知道会差多少。类似球球大作战得话,这种服务器得计算量应该没啥问题吧

球球这种状态同步应该问题不大的

不麻烦啊,帧同步和状态同步唯一的区别就是逻辑在哪,把逻辑分离出来,放在本地就是帧同步,放在服务端就是状态同步。帧同步的好处就是只发送操作,根据逻辑帧更新本地逻辑状态。不过网络不好,得断线重连和追帧,状态同步不需要。

好的,经过各位大佬得帮忙。我最终决定采用状态同步,后端同步频率50毫秒,前端鼠标移动也是固定50毫秒发送鼠标位置。移动采用预测实现。其他操作不进行预测。

商城里有一个demo就是服务端和客户端跑同一个逻辑,状态同步和帧同步共用,好处就是不用追帧,中途加入就行。

哈哈,大佬一般都不嫌麻烦得,我这懒,向你说的,几十毫秒得延迟,感觉没必要,你说的那个demo我看过tsrpc的。

如果涉及手机端一定要加预判,在一些公园、商场、户外、火车上等信号很差。我的rpg游戏就有预判移动,商店界面有在线体验。Cocos Store

如果想要各端绝对同步,就用帧同步。
如果用状态同步,就只需要服务端正确,其他各端尽量通过预测等方式修正延迟带来的差异,不必追求绝对一致。
可以看看我写的球球大乱斗的位置同步机制。

感谢大佬的回答,我现在用的是状态帧同步,状态服务器每隔50毫秒,同步到客户端变化的部分。玩家自己的操作做了预测。
但是我想知道,其他玩家在我的客户端需要预测吗?尽管做了插值能够平滑,但是因为延迟,他们的行为也是有些滞后的。

不需要定时发,可以做一个脏标记,有变动的时候才同步。
对于状态同步的游戏来说, 300ms 的延迟也还好。
你需要确保的是执行效果没问题就行。

1赞

这种一般是服务器和客户端各算各的,加的道具以服务器的通知为准,前端的动画是客户端自己展示的。