游戏后台状态同步与帧同步

本文探讨了游戏后台中的状态同步和帧同步技术。状态同步适用于回合制游戏,通过服务器计算并广播游戏状态,客户端进行局部运算。而帧同步常用于RTS游戏,仅同步操作而非状态,确保所有玩家操作一致。文章详细讲解了帧率、Lockstep帧同步、乐观锁和断线重连策略,并介绍了王者荣耀的网络同步方案,强调帧同步对网络延迟的敏感性以及确保逻辑一致性的技术挑战。
摘要由CSDN通过智能技术生成

最近开始学习一下游戏后台的一些知识,一直很好奇多个玩家之间的数据是如何同步的,查了一下,目前使用的比较多的是状态同步和帧同步。

状态同步

同步的是游戏中的各种状态。

一般的流程是客户端上传操作到服务器,服务器收到后计算游戏行为的结果,即技能逻辑,战斗计算都由服务器运算,然后以广播的方式下发游戏中各种状态,客户端收到状态后,更新自己本地的动作状态、Buff状态,位置等就可以了,但是为了给玩家好的体验,减少同步的数据量,客户端也会做很多的本地运算,减少服务器同步的频率以及数据量,该方式多用于回合制的游戏。

状态同步其实是一种不严谨的同步。它的思想中,不同玩家屏幕上的表现的一致性并不是重要指标, 只要每次操作的结果相同即可。所以状态同步对网络延迟的要求并不高。像玩RPG游戏,200-300ms的延迟也可以接受。 但是在RTS游戏中,50ms的延迟却会很受伤。

举个移动的例子,在状态同步中, 客户端甲上操作要求从A点移动到B点,但在客户端乙上, 甲对象从A移动到C,然后从C点移动到了B。这是因为, 客户端乙收到A的移动状态时, 已经经过了一个延迟。这个过程中,需要客户端乙本地做一些平滑的处理,最终达到移动到B点的结果。(可通过增加动作前后摇来减少延迟——多播一点动画,给服务器多争取一些时间!)

帧同步

RTS(即时战略游戏)游戏常采用的一种同步技术 ,上一种状态同步方式数据量会随着需要同步的单位数量增长,对于RTS游戏来讲动不动就是几百个的单位可以被操作,如果这些都需要同步的话,数据量是不能被接受的,所以帧同步不同步状态,只同步操作。

1、帧率

大家小时候应该看过这样的小人书:快速翻看就可以看到漫画上的人物会动起来。

由于人类眼睛的特殊生理结构,如果所看画面之帧率高于每秒约10-12帧的时候,就会认为是连贯的, 此现象称之为视觉暂留。

游戏中的所有动画也是采用这种方式来渲染,只不过帧率是由GPU来控制,你所看到的画面都是由GPU一帧帧渲染的,比如30帧/s,你所看到的画面就比较流畅了,帧率越高你所看到的越流畅。

2、Lockstep——帧同步

帧同步可以说是通过帧率延伸过来的,你可以把一个游戏看成一个巨大的状态机,所有的参与者都采用同一个逻辑帧率来不断的向前推进。

  • 我们把游戏的前进分为一帧帧,这里的帧和游戏的渲染帧率并不是一个,只是借鉴了帧的概念,自定义的帧,我

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值