[游戏开发]网络同步方式

状态同步

优点:

  1. 数据在服务器运算,客户端接收到的数据一定准确
  2. 防止数据作弊,角色数据在服务器,客户端只上传操作,想作弊没门
  3. 网络波动不敏感
  4. 多端表现可以不一致,重视数值准确。

缺点:

  1. 前后端数据包体大,
  2. 服务器压力比较重(计算量、传输量)

研发特点:战斗逻辑全部在服务器,客户端等着服务器数据刷表现。

适合使用状态同步的游戏类型:魔兽世界、传奇等MMORPG游戏

帧同步

 优点:

  1. 只转发用户操作,网络带宽压力小
  2. 适合回放、直播(省流量)

缺点:

  1. 网络波动及其敏感
  2. 由于只同步用户操作,多端要保证根据相同的输入获得相同的输出
  3. 随机数确保一致
  4. 浮点数精度不同
  5. 物理引擎不可靠
  6. 需要特殊处理数据作弊

研发特点: 服务器只负责转发用户操作,可以外加操作校验防作弊,主要的战斗逻辑代码都在客户端。

总结:

通过上述分析,

帧同步的分支:

我个人认为帧同步主要分为三个研发方向:第一种FPS类游戏例如:CS/CF/守望先锋,第二种是MOBA类如王者荣耀,另三种是卡牌类(阴阳师),主要区别我列个表格

网络方式 物理引擎 随机数 行为预测 快照与回滚 数据表现分离 定点数 表现裁剪
FPS UDP或TCP 自己写物理 不经常 需要 需要 需要 需要 需要
MOBA UDP或TCP 自己写物理 经常用 需要 需要 需要 需要 需要
卡牌类 TCP 不需要物理 经常用 不需要 不需要 需要 需要 不允许

为何同样是帧同步缺差异如此之大,主要还是因为游戏类型不同、设计需求不同导致的,FPS和MOBA的设计方案几乎一模一样,但有一个细节的地方处理不同就是快照与回滚。

下面是 

UDP为什么比TCP快

  1. TCP为了可靠性保证,增加了3次握手4次挥手,复杂的拥塞控制,以及流量控制,让网络传输的延迟进一步增加。
  2. 采用TCP基于滑动窗口,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,有包就发,能够把丢包产生的延迟降到最低,尽量减少网络延迟。
  3. UDP报头8字节,TCP报头20字节以上,

你可能感兴趣的:(网络专栏,游戏开发,unity)