前言
本文会详细说明说明帧同步与状态同步、细说实现原理、分析他们的优缺点。提及注意点、保证同步的方法、验证同步、防作弊防攻击等。
帧同步
简单来说,就是相同的状态+相同的指令+ 按帧顺序执行=相同的结果。
状态:所有客户端确保逻辑一致,接收一样的随机种子(randomseed),一样的房间信息;
指令:服务器只负责收集接收每个客户端操作指令(cmd),转发指令,服务器以恒定帧率(30帧1秒)派发指令,没有指令或指令没有变化也需要派发;
执行:真正游戏逻辑由各个客户端单独计算 ,客户端需要收到服务器派发的指令才能推进逻辑,没有收到指令时不能推进逻辑(LockStep)
顺序执行
帧同步会必定按到从第一帧开始一帧一帧的执行,才能保证运行结果一样,跳帧会导致逻辑不一样,如果玩家网络不好,则会在当前帧等待至下一帧的接受,如果丢包超时,则会再次发出需要帧的请求。
追帧
什么是追帧:当前玩家播放到帧比服务器的帧落后时,服务器下发多个帧,玩家便要开始快进到服务器当前帧
为什么要追帧:如果网络波动,服务器会有最晚的接受帧时间,
做法:超过则下次发送多个帧,然后快进播放(多次DoAction),快进期间,不播放特效音效等不影响运行结果的逻辑
重连
做法:接受从0开始所有帧重新快速播放到当前帧,如果帧列表count大于规定速度则按照最大速度播放,否则按照剩余的count播放相应次数的帧。
优点
第一,它的开发效率比较高。如果你开发思路的整体框架是验证可行的,如果你把它的缺点解决了,那么你的开发思路完全就跟写单机一样,你只需要遵从这样的思路,尽量保证性能,程序该怎么写就怎么写,服务端逻辑简单,只需要负责转发指令,压力也小。
比如我们以前要在状态同步下面做一个复杂的技能,有很多段位的技能,可能要开发好几天,才能有一个稍微过得去的结果,而在帧同步下面,英雄做多段位技能很可能半天就搞定了。
第二,它能实现更强的打击感,打击感强除了我们说

本文深入探讨帧同步与状态同步在游戏开发中的应用,分析两者实现原理、优缺点及适用场景。帧同步能提高开发效率,实现更强打击感,但网络要求高,反外挂能力弱;状态同步安全性高,适应网络波动,但打击感较差,流量随游戏复杂度增加。
2724

被折叠的 条评论
为什么被折叠?



