状态同步

优点:

  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字节以上,

[游戏开发]网络同步方式相关推荐

  1. 游戏之网络同步【转载】

    囚徒模式的帧同步,有一个致命的缺陷就是,若联网的玩家有一个网速慢了,势必会影响其他玩家的体验,因为服务器要等待所有输入达到之后再同步到所有的c端.另外如果中途有人掉线了,游戏就会无法继续或者掉线玩家无 ...

  2. D3D游戏编程系列(四):自己动手编写即时战略游戏之网络同步

    说到网络同步,这真是一个网络游戏的重中之重,一个好的网络同步机制,可以让玩家的用户体验感飙升,至少,我玩过的魔兽争霸在网络同步方面做得非常好,即便是网络状况很不稳定,依然可以保证用户数据不会出现意想不 ...

  3. D3D游戏编程系列自己动手编写即时战略游戏之网络同步

    说到网络同步,这真是一个网络游戏的重中之重,一个好的网络同步机制,可以让玩家的用户体验感飙升,至少,我玩过的魔兽争霸在网络同步方面做得非常好,即便是网络状况很不稳定,依然可以保证用户数据不会出现意想不 ...

  4. Unity游戏开发 帧同步战斗框架 框架篇

    本篇主要是提供帧同步主体框架的实现方法以及源码.还有一些坑点的分析.如果对帧同步理论感兴趣的话可以看看这里<帧同步理论篇>. ps:我的同步框架是在lua里面写的,已经经过了测试没有什么问 ...

  5. 游戏中的网络同步机制——Lockstep(转载)

    原文转自http://bindog.github.io/blog/2015/03/10/synchronization-in-multiplayer-networked-game-lockstep 0 ...

  6. 游戏中的网络同步机制(一)帧同步Lockstep

    转载自:https://www.jianshu.com/p/64b3f162dcf4 参考游戏中的网络同步机制--Lockstep 一.前言 每个人或多或少都接触过网游,那个虚拟的世界给予了我们无穷的 ...

  7. 游戏中的网络同步机制——Lockstep(帧同步)

    本文来自: https://bindog.github.io/blog/2015/03/10/synchronization-in-multiplayer-networked-game-lockste ...

  8. mtk 帧同步_【小松教你手游开发】【面试必读(编程基础)】网络游戏同步方式(帧同步和状态同步)...

    在做网络游戏的时候首先要做的是选择一种同步方式来使用,网上的文章都是说帧同步与状态同步的选择,但是又经常讲的模糊不清,我大概整理了一下,并且有一种我们现在项目用的网络同步方式 状态同步 状态同步就有好 ...

  9. Unite 2017 | 从《闹闹天宫》看MOBA游戏里的网络同步技术

    http://mp.weixin.qq.com/s/0v0EU79Q6rFafrh8ptlmhw 在Unite 2017 Shanghai案例分享专场,来自蓝港互动<闹闹天宫>项目组的主程 ...

  10. 区块链游戏开发颠覆传统游戏开发的 5 种方式

    区块链技术已在许多行业中使用,但它尤其扰乱了游戏行业.区块链游戏开发并不是一个新概念,但还是比较新的.公司现在正在寻找在他们的游戏中使用区块链技术的方法. 区块链游戏开发颠覆传统游戏开发的一些方式 包 ...

最新文章

  1. 处理器解决物联网和人工智能的融合
  2. OpenStack Neutron浅析(四)
  3. MongoDB Windows环境安装及配置
  4. 成功解决ImportError: Matplotlib qt-based backends require an external PyQt4, PyQt5,问题
  5. 深入了解Token认证的来龙去脉
  6. 打开 谷歌浏览器exe_python使用selenium调用谷歌浏览器打开指定网页
  7. 悲观锁和乐观锁的区别和应用场景
  8. 3风扇声音怎么调小_美的风扇价格表
  9. c++ gdb 绑定源码_gdb调试g++ -g生成文件,list后不能看到源代码
  10. 算法竞赛入门经典(第2版)—索引
  11. Win7加密访问共享文件夹
  12. WordPress系列教程(二)----WordPress基本使用和常用设置
  13. matlab sub2ind函数
  14. [Unity] 状态机事件流程框架 (二) 设计游戏状态的保存框架,存档功能 ScriptableObject、EasySave
  15. 非三星手机无法登录三星账号_如何解决所有三星手机的烦恼
  16. 问卷调查的数据如何分析?
  17. 企业上市需要哪些条件
  18. 阿里sentinel监控客户端配置
  19. 币泳金:理安全的储存数字货币,冷钱包与热钱包的管理
  20. 论文解读:Semantic Neural Machine Translation using AMR

热门文章

  1. gdc服务器维修员登录密码,gdc服务器密码
  2. 计算机用户名改成英文,win10如何把用户名改成英文
  3. [CSCCTF 2019 Qual]FlaskLight
  4. mysql根据身份证得到年龄_MySQL根据身份证获取省份 年龄 性别
  5. 数学建模计算机部分知识,数学建模中计算机知识的运用
  6. 自然语言处理NLP知识结构
  7. Pix4D航测成图完整教程(空三,点云编辑DSM,正射,质量报告分析...)
  8. js数据的编码和解码
  9. ee er_61对词根相同后缀分别是er和ee的单词要这样区别记忆它们
  10. 【软件工程】软件工程系统设计——详细设计(过程设计)