Skip to content

英雄联盟是状态同步

首先状态同步的特点是:服务器端承担计算逻辑,计算完成后将状态分发给每个客户端

  1. 英雄联盟的断线重连:在网速一定的情况下,不管是掉线10秒还是掉线十分钟,重连的速度是一致的,如果是帧同步,需要“追帧”,显然是掉线越长重连时间越长,所以是状态同步的
  2. 对于开挂:英雄联盟没有全图挂,全图挂的产生是因为在帧同步的游戏下(如王者荣耀),客户端是拥有游戏的所有数据的,通过对数据进行分析,可以获得游戏的所有信息,自然就可以“透视”,但由于英雄联盟没有全图挂(英雄联盟主要是换肤挂和自动走位脚本),所以可知lol是状态同步
  3. 关于回放:不管是状态同步还是帧同步本质上都是根据已有的命令去重现战斗过程,那么王者荣耀(帧同步)和lol的区别在哪呢?我认为wzry在对局中用户的无效输入更少,英雄联盟玩家喜欢一刻不停的点地板,然而这样频繁的点地板对于存储输入命令来说是一件很费的事情,但是如果存放的是服务器端的一系列状态的话,就很容易的可以实现回放。
  4. 关于回放的第二点:状态同步下为了保证客户端的体验是丝滑的,需要提前预测行为,而且渲染帧和服务器的逻辑帧的帧率是不同的,渲染帧会更快一些,所以在实际玩的时候你会感觉操作的反应是及时的,如果网络卡顿可能会瞬间卡帧突变以向服务器端妥协,因此在回放时经常出现比如闪现显示错误的问题,因为服务器的帧数少,可能并没有保存到闪现的那一刻的信息,而是闪现后再移动一小段距离之后才会被服务器记录下来,然而自己的客户端因为有所谓预测,所以不会显得卡顿。
  5. 根据第四点的原理,在网络卡顿时,英雄联盟中玩家在队友的视角里不是卡了就不动了,而是反复执行最后一次输入,帧同步的话会停止运动