UE4网络同步

什么是网络同步

多人游戏里面需要把某个玩家操作的结果通知给其玩家,这个通知的过程就是同步,再放到局域网或者广域网中进行,就是网络同步了。

中介转发

中介转发就是客户端/服务器模式(C/S),添加一个服务器作为中介节点,每台客户端只与服务器建立连接,客户端与客户端彼此独立,服务器负责转发消息。这种架构的复杂度仅为O(N),维护起来也方便。

帧同步与状态同步

帧同步是服务器将某个玩家的输入直接转发给其他玩家,自己不做处理。理论上所有客户端都以相同的初始状态开始,只要收到的输入相同,那么每时每刻的状态都会是相同的。

状态同步是服务器只同步影响游戏功能的某些重要状态变量,并且这些重要变量是在服务器运算出来的或者至少校验过的,客户端拿到这些状态变量后自行做本地的表现。

一般来说帧同步实时性节省流量方面比较好,状态同步则在安全性角度来说更胜一筹。具体选用哪种方案由具体游戏类型来决定,UE是在射击游戏基础上发展而来的,它默认的网络同步方案是状态同步,把决策权放在服务器上做,可以有效减少外挂,对于中途加入/断线重连也能天然支持。

使用UDP还是TCP

在UDP的基础上融合了TCP的优点,例如加入了乱序处理,以及对reliable的包丢失重传。可谓是各取所优,既保证了连接速度,也保证了可靠性。

Reliable,可靠性

  1. Reliable,不会丢失,立刻发出,适合重要的事件
  2. Unreliable,可能会丢失,适合表现相关的和不重要的事件
  3. 全部的远程调用都使用Reliable,可能会造成网络拥堵
  4. 尽量避免在循环里面进行远程调用和勾选Reliable选项
  • 丢失重传:reliable的包在发端会保存一个备份,只有收到收端返回的Ack包确认后才会清掉,若收到的Ack包跳序则会触发重传。
  • Packet乱序整理:因网络链路复杂性ÿ

你可能感兴趣的:(游戏引擎,ue4)