帧同步和状态同步

帧同步

​ 服务器负责转化客户端的操作,每个客户端在固定的逻辑帧执行该帧所有客户端的操作命令,通过在严格一致的时间轴上执行同样的命令序列得到同样的结果。

服务器按帧转发客户端的操作,客户端进行确定性运算和一致性模拟

状态同步

​ 服务器承载所有计算,客户端只做表现。主流的大型MMO游戏都采用状态同步。

帧同步状态同步
一致性逻辑上绝对一致,天然要求一致性也可以做到绝对一致。但一般来说增量式预表现的状态同步会有一些拉扯不同步现象。
响应性操作需要发送到服务器再等服务器返回按帧执行,可以做预表现但很受限,响应性较差状态同步可以更好的进行预表现,响应性较好。
带宽人数较少时带宽极低,但随着人数增长,带宽几何程度的增加。帧同步无法做 MMO 类的游戏可以通过各种方式优化带宽,可以开发千人万人战斗游戏。
延迟对延迟要求高,高延迟体验很差可以通过延迟补偿,智能预测等优化方式在高延迟下降低延迟感受。
开发效率开发简单,几乎不需要联调,但排查 Bug 很难。任何一个错误都有可能导致不同步的严重后果(硬件、随机数、未初始化变量、使用浮点数、渲染帧计算逻辑等等)。开发会复杂很多,需要大量联调
玩家数量少量玩家少量和海量都可以
跨平台较难(不同的硬件不同的编译器等原因导致一些计算不一致,设备不一致,特别是浮点数,可以通过定点数来解决,但是要求非常严格,测试难度很高)较容易
外挂在服务器也跑战斗逻辑的情况下,天然就容易反作弊。但如果服务器不跑逻辑,多人竞技也可以通过投票机制等反作弊。但是都反不了全图挂防外挂难度依赖服务器跑逻辑的比例和开发时是否考虑反作弊,可以一定程度上避免全图挂。状态同步可以在反作弊上做的更极致
优化服务器可以做到极低的开销。客户端负载较高,需要整个战斗的所有运行(要求逻辑和渲染分离)支持更多的优化手段

​ 对于大部分游戏来说,两种同步方式都可以使用。但相比之下状态同步适用型更广,特别适合复杂度高,延迟要求高,玩家多的游戏,例如FPS,MMO等等。帧同步相对适合小兵很多,玩家少且固定,单局时间短,对打击感公平性要求高,追求一致性的游戏,例如格斗,运动,RTS,卡牌,MOBA等。

​ https://zhuanlan.zhihu.com/p/38468615

​ https://zhuanlan.zhihu.com/p/104932624

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值