游戏中的帧同步和状态同步2020-03-30(未经允许禁止转载)
帧同步和状态同步是网络游戏中最常用的两种同步方式。
客户端同步是网络游戏的基本要求。比如在王者荣耀中,一个游戏中的10个英雄,在10个玩家的客户端中,他们的职位、技能、属性值都必须保持一致。
帧同步和状态同步最大的区别在于作战逻辑运算的位置:帧同步下的作战逻辑运算在客户端,状态同步下的作战逻辑运算在服务器端。
顾名思义,帧同步就是保证所有客户端的每一帧都有相同的序列。
帧同步是这样一种模式:
服务器只是作为收集和转发帧的中继站,没有任何逻辑操作。
每个客户端把自己的动作数据发送给服务器,然后服务器按照严格的时间线把每个客户端的动作按顺序组织起来,形成一个全局动作队列,然后把这个动作队列推送给所有客户端,让客户端都执行相同的动作序列,在本地执行战斗逻辑操作,推广游戏。注意动作指令不能丢失,丢失后客户端会得到错误的结果(比如A对B开了一枪,B又对A开了一枪,因为A先开了一枪又活了下来,但是如果A开了枪的指令丢失了,A就挂断了),所以网络传输一定要可靠,比如tcp/kcp。
帧同步的优势:
帧同步的缺点:
顾名思义,状态同步就是保证所有客户端的状态一致,但是帧序列可以不一致。
状态同步是这样一种模式:
服务器承担所有的战斗逻辑运算,每个客户端相当于服务器战斗逻辑运算后的状态显示。客户端将操作上传到服务器,服务器收到后计算游戏行为的结果,获取当前游戏的各种状态,然后广播给客户端,收到状态后根据状态显示内容。如你所见,客户端不能改变游戏的状态,只能显示来自服务器的状态。
状态同步的优点:
状态同步的缺点:
帧同步比状态同步更严格。一般来说,如果是大型游戏,还是需要服务器进行计算,也就是状态同步,因为帧同步依赖于客户端,而客户端的计算能力是有限的。
帧同步:王者荣耀,荒野行动。