网络游戏的状态同步设计策略

光速:3×10^8m/s,300000km/s

中国东西约5200公里,南北约5500公里(玩家最大相距按5000km计算)

16 ms 只够光信号在 2500 km 的距离上跑一个来回

状态同步(Server同步)

服务器负责计算全部的游戏逻辑,并且广播这些计算的结果,客户端仅仅负责发送玩家的操作,以及表现收到的游戏结果。一般来说,玩家发送一个操作到服务器上,服务器根据玩家操作去修改内存中的游戏世界模型,同时运算游戏世界对这个操作的反应,然后把这些反应都广播给相关的多个客户端,每个客户端负责把这些数据表现出来给玩家看。

当然这种模式只适合一些若交互的游戏,比如rpg,卡牌,slg类型的游戏,这些游戏共有的特点就是和服务器交互的频率不高,服务器手机所有玩家的操作信息,进行演算之后把演算结果转发给其他玩家,其他玩家做相应的模拟和显示。

帧同步

锁定步进算法(lockstep )

就是让网络上所有的机器都同时执行一样的操作,得到一样的结果。执行 lockstep 同步时,其实和时间是无关的,只和动作一致性有关。

lockstep 的核心其实是按回合锁定游戏进程,逐步推演。时钟周期对游戏规则其实并不重要,超时机制的存在是客户端用来解决如何确定当前回合要提交的多少操作而设定的;而模拟层的心跳周期则影响了表现层如何把离散状态拟合成连续状态。

War3/星际等采用,基于指令驱动各个客户端自计算逻辑。服务端只管分发指令,每个客户端根据完整的规则运算整个战场。

每个客户端播放效果就像是看视频。

对视觉同步要求较高。

优点

因为只需要同步指令,所以流量消耗非常小

缺点

断线需要补帧,即一旦你的战场状态没有了,必须从头开始,从第一个指令运算到连回去的战场状态。

适用于一般moba,rts等大型多人在线游戏。

lockstep 网络游戏同步方案

网络游戏同步基础

网络游戏网络同步方案的选择

游戏中的网络同步机制——Lockstep

猜你喜欢

转载自www.cnblogs.com/losophy/p/10580518.html