[游戏开发]网络同步方式
状态同步
优点:
- 数据在服务器运算,客户端接收到的数据一定准确
- 防止数据作弊,角色数据在服务器,客户端只上传操作,想作弊没门
- 网络波动不敏感
- 多端表现可以不一致,重视数值准确。
缺点:
- 前后端数据包体大,
- 服务器压力比较重(计算量、传输量)
研发特点:战斗逻辑全部在服务器,客户端等着服务器数据刷表现。
适合使用状态同步的游戏类型:魔兽世界、传奇等MMORPG游戏
帧同步
优点:
- 只转发用户操作,网络带宽压力小
- 适合回放、直播(省流量)
缺点:
- 网络波动及其敏感
- 由于只同步用户操作,多端要保证根据相同的输入获得相同的输出
- 随机数确保一致
- 浮点数精度不同
- 物理引擎不可靠
- 需要特殊处理数据作弊
研发特点: 服务器只负责转发用户操作,可以外加操作校验防作弊,主要的战斗逻辑代码都在客户端。
总结:
通过上述分析,
帧同步的分支:
我个人认为帧同步主要分为三个研发方向:第一种FPS类游戏例如:CS/CF/守望先锋,第二种是MOBA类如王者荣耀,另三种是卡牌类(阴阳师),主要区别我列个表格
网络方式 | 物理引擎 | 随机数 | 行为预测 | 快照与回滚 | 数据表现分离 | 定点数 | 表现裁剪 | |
FPS | UDP或TCP | 自己写物理 | 不经常 | 需要 | 需要 | 需要 | 需要 | 需要 |
MOBA | UDP或TCP | 自己写物理 | 经常用 | 需要 | 需要 | 需要 | 需要 | 需要 |
卡牌类 | TCP | 不需要物理 | 经常用 | 不需要 | 不需要 | 需要 | 需要 | 不允许 |
为何同样是帧同步缺差异如此之大,主要还是因为游戏类型不同、设计需求不同导致的,FPS和MOBA的设计方案几乎一模一样,但有一个细节的地方处理不同就是快照与回滚。
下面是
UDP为什么比TCP快
- TCP为了可靠性保证,增加了3次握手4次挥手,复杂的拥塞控制,以及流量控制,让网络传输的延迟进一步增加。
- 采用TCP基于滑动窗口,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,有包就发,能够把丢包产生的延迟降到最低,尽量减少网络延迟。
- UDP报头8字节,TCP报头20字节以上,
[游戏开发]网络同步方式相关推荐
- 游戏之网络同步【转载】
囚徒模式的帧同步,有一个致命的缺陷就是,若联网的玩家有一个网速慢了,势必会影响其他玩家的体验,因为服务器要等待所有输入达到之后再同步到所有的c端.另外如果中途有人掉线了,游戏就会无法继续或者掉线玩家无 ...
- D3D游戏编程系列(四):自己动手编写即时战略游戏之网络同步
说到网络同步,这真是一个网络游戏的重中之重,一个好的网络同步机制,可以让玩家的用户体验感飙升,至少,我玩过的魔兽争霸在网络同步方面做得非常好,即便是网络状况很不稳定,依然可以保证用户数据不会出现意想不 ...
- D3D游戏编程系列自己动手编写即时战略游戏之网络同步
说到网络同步,这真是一个网络游戏的重中之重,一个好的网络同步机制,可以让玩家的用户体验感飙升,至少,我玩过的魔兽争霸在网络同步方面做得非常好,即便是网络状况很不稳定,依然可以保证用户数据不会出现意想不 ...
- Unity游戏开发 帧同步战斗框架 框架篇
本篇主要是提供帧同步主体框架的实现方法以及源码.还有一些坑点的分析.如果对帧同步理论感兴趣的话可以看看这里<帧同步理论篇>. ps:我的同步框架是在lua里面写的,已经经过了测试没有什么问 ...
- 游戏中的网络同步机制——Lockstep(转载)
原文转自http://bindog.github.io/blog/2015/03/10/synchronization-in-multiplayer-networked-game-lockstep 0 ...
- 游戏中的网络同步机制(一)帧同步Lockstep
转载自:https://www.jianshu.com/p/64b3f162dcf4 参考游戏中的网络同步机制--Lockstep 一.前言 每个人或多或少都接触过网游,那个虚拟的世界给予了我们无穷的 ...
- 游戏中的网络同步机制——Lockstep(帧同步)
本文来自: https://bindog.github.io/blog/2015/03/10/synchronization-in-multiplayer-networked-game-lockste ...
- mtk 帧同步_【小松教你手游开发】【面试必读(编程基础)】网络游戏同步方式(帧同步和状态同步)...
在做网络游戏的时候首先要做的是选择一种同步方式来使用,网上的文章都是说帧同步与状态同步的选择,但是又经常讲的模糊不清,我大概整理了一下,并且有一种我们现在项目用的网络同步方式 状态同步 状态同步就有好 ...
- Unite 2017 | 从《闹闹天宫》看MOBA游戏里的网络同步技术
http://mp.weixin.qq.com/s/0v0EU79Q6rFafrh8ptlmhw 在Unite 2017 Shanghai案例分享专场,来自蓝港互动<闹闹天宫>项目组的主程 ...
- 区块链游戏开发颠覆传统游戏开发的 5 种方式
区块链技术已在许多行业中使用,但它尤其扰乱了游戏行业.区块链游戏开发并不是一个新概念,但还是比较新的.公司现在正在寻找在他们的游戏中使用区块链技术的方法. 区块链游戏开发颠覆传统游戏开发的一些方式 包 ...
最新文章
- 处理器解决物联网和人工智能的融合
- OpenStack Neutron浅析(四)
- MongoDB Windows环境安装及配置
- 成功解决ImportError: Matplotlib qt-based backends require an external PyQt4, PyQt5,问题
- 深入了解Token认证的来龙去脉
- 打开 谷歌浏览器exe_python使用selenium调用谷歌浏览器打开指定网页
- 悲观锁和乐观锁的区别和应用场景
- 3风扇声音怎么调小_美的风扇价格表
- c++ gdb 绑定源码_gdb调试g++ -g生成文件,list后不能看到源代码
- 算法竞赛入门经典(第2版)—索引
- Win7加密访问共享文件夹
- WordPress系列教程(二)----WordPress基本使用和常用设置
- matlab sub2ind函数
- [Unity] 状态机事件流程框架 (二) 设计游戏状态的保存框架,存档功能 ScriptableObject、EasySave
- 非三星手机无法登录三星账号_如何解决所有三星手机的烦恼
- 问卷调查的数据如何分析?
- 企业上市需要哪些条件
- 阿里sentinel监控客户端配置
- 币泳金:理安全的储存数字货币,冷钱包与热钱包的管理
- 论文解读:Semantic Neural Machine Translation using AMR
热门文章
- gdc服务器维修员登录密码,gdc服务器密码
- 计算机用户名改成英文,win10如何把用户名改成英文
- [CSCCTF 2019 Qual]FlaskLight
- mysql根据身份证得到年龄_MySQL根据身份证获取省份 年龄 性别
- 数学建模计算机部分知识,数学建模中计算机知识的运用
- 自然语言处理NLP知识结构
- Pix4D航测成图完整教程(空三,点云编辑DSM,正射,质量报告分析...)
- js数据的编码和解码
- ee er_61对词根相同后缀分别是er和ee的单词要这样区别记忆它们
- 【软件工程】软件工程系统设计——详细设计(过程设计)