当前课程知识点:游戏程序设计 > 第十章 《网络同步技术》 > 10.3 传输数据分析 > 10.3 传输数据分析
因为同步是在网络上传输数据
那么同步什么
就是我们灵魂三问里面其中的一个问题
是一个非常关键的一个点
为了给大家介绍更好介绍
我们怎么在游戏里面
选择什么数据进行同步呢
我们首先会引入一个游戏的程序
分层结构
总体来说
游戏的程序处理过程
可以分为几个部分
最前面是一个输出模块
它包含了各种手柄
摇杆之类的外设
用来接收用户的输入
然后会把这些输入传输给一个
我们所谓的核心逻辑模块
它一般来说是维护整个游戏的核心规则
逻辑事件以及各种状态的一个维护
然后
当这个核心逻辑模块
最终维护好了游戏状态之后
我们有个输出控制模块
会结合游戏状态
去把这种状态
组织成用户可以理解
可以看到可以听到了一些视图渲染
以及音效的数据组织
最终在把这些视频或音频数据
输出到我们的输出模块
也是显示器和音响以及震动马达
各种外设上
我们举象棋这个例子
来去介绍各个模块的实际作用
输入模块
对应的是我们触摸屏
它直接是把屏幕的一些输入映射
传给游戏的逻辑引擎
这些输入包括什么呢
它可以是直接的
一些屏幕交互
比如我们一般有ios 安卓SDK
的一些用户交互的信号
一些事件可能传输给这块
它也可以把一些若干个
最原始的一些交互状态
组成一种游戏的事件来告诉逻辑引擎
举个例子
当我们玩家
想把这个兵往上挪一步的时候
他的操作是什么呢
这是个触摸屏
那他操作是
首先他会点击这个兵
并且不松开
然后往上拖动一步
然后在放开,这整个三个流程
他在输入层
可以把它组合映射成一个事件
就是把这个兵往上走一步
这个时候这个逻辑
核心逻辑模块收到的就是“兵往上走一步”
而不是"点击、拖动、松开"这种复合的事件
核心逻辑模块
当接收到了输入层的各种状态
或输入的一些事件之后
他会结合
我们写的代码,就是象棋的规则
以及当前棋盘的状态,去更新这个棋盘逻辑
依照游戏的一些规则
得到一个新的游戏状态
这个是它核心做的事情
最终输出的就是各种各种棋子状态
以及游戏当前是进行中还是已经结束了
而这个输出控制呢
他就利用前面提到的总棋盘状态
把它组织成这种渲染的内容
就是我们常用的不管是DirectX
还是说我们的Unreal或者是Unity
控制渲染的数据结构
或者一些API来去实现
以及我们会有一些音效的组织
最终就把这些像素以及音频
在我们屏幕和扬声器上进行一个表达
要注意的一点的就是核心逻辑模块
是整个游戏的
处理中最关键的一个模块
在它前面的输入
以及后面的输出控制以及输出模块
都是为了让玩家
和这个模块的状态进行交互的一些组织
也都说同样一个核心逻辑
可能有不同的表现
还可能有不同的输入形式
举个例子
同样是象棋这种规则
我们完全可以用一种不是靠触摸屏来输入
以及靠这种画面的显示
我们可以是
一种文字的表达
例如这就不是显示画面了
而是显示几行字
可能说兵往上移
就是大家下盲棋那种情况
它其实就是很典型的
靠我跟你说话来去交互
靠你自己大脑里的状态
让你根据象棋的这种规则
去在你的大脑里面把种状态更新
这个其实就是同样的游戏规则
用不同的输入
以及输出的一个表现方式
因此
我们可以同步什么呢
一种就是提到了的最直接的操作
可能就直接是对屏幕
对手柄的一些点击操作
还有一种就是之前提到了
我们可以把多操作
组合成一种游戏内的事件
就留兵往上走
马跳哪里
这种游戏规则里面的事件
第三个
就是我们可以传输的是状态数据
由我们棋子
棋子在哪个格子上
例如一开始我们所介绍的那个例子
我们用户在A2
他在A4种方式就是属于直接同步状态
然后我们再从游戏的这种发展过程
来去了解一下不同的游戏
它的分层模型是怎么部署的
单机游戏
整个输入和输出
分别对应的是用户的手柄
以及显示器或是电视
它的逻辑模块以及输出控制
都是在它的主机范围内的
通过你的总线去传输
所中部署是非常简单的
再往后呢
我们出现了一些联机游戏
最典型的就是一些主机型游戏
包括星际、魔兽
以及我们后续的一些
如火影之类的线下赛
我们可能也会用这种主机模式
让一台主机承担主机角色
这种架构下多个玩家
通过自己的输入
传入到自己本地的逻辑处理模块
然后对客机来说
它会把用户的这个输入
通过网络传输到主机上
让主机去做核心的逻辑处理
然后主机再把这个状态传回客机
然后双方再根据自己本地的一些数据状态
去组织显示和音视频的一些输出
然后这里面其实还有一些情况
可能是客机会承担一部分逻辑运算
我们后面会再重点介绍一下
再到现在
大数游戏
都是一种
有服务器的架构
也就是说所有玩家的本地
把数据输入数据在本地接入之后呢
会把部分的输入
或是部分预处理后的一个状态
同步到服务器
再让服务器去做些
核心的仲裁性的逻辑处理
再把处理好的结果再同步给所有的客户端
从而达到玩家之间
不会有一些核心状态的不一致
这种架构的发展的也是由于网络的发展
并且是游戏玩家数量规模的发展
它就衍生出这种
可以让更多游戏参与
更多玩家同时参与进来的这么一种架构
再往后一点
现在其实中美技术战
最关键的一个接入点是什么
华为是因为什么技术被美国针对了
5G最大的一个特点
就是它在隔空投递的阶段
时延是非常低的
往后我们可以预想到
后续我们使用的网络
尤其是移动网络
它的带宽
它的延时都是可以有非常好的一个发展
因此现在其实已经出现了一些
云游戏形态
就这种游戏呢
就是用户的输入和显示他只靠本地的一个键盘或鼠标
或者是那个手柄
然后加个显示器
所有数据都同步到云端处理好之后
再把画面和音频同步到本地
这种
这种架构的优点
就是我的客户端可以是非常轻量级的
我们完全是不需要有多少处理能力
我只需要能够显示能够有输入就可以了
然后
我们根据这个分层模型
各个模块之间传输数据的类型
当我们选择从输入层
到核心逻辑层数据来进行同步的话
就是对应业界里面
常用的帧同步方案
当我们选择核心逻辑到输出控制中间
这些状态数据进行同步的话
就是对应的状态同步的方案
如果是选择输出控制到输出模块中间数据
还需同步的话
就是对应的云游戏的方案
因此这些业界常用的同步方案
就是由同步数据的选择所决定的
-1. 1什么是游戏(上)
--选择题
-1.2 什么是游戏(下)
--选择题
-1.3 游戏是如何开发出来的
-1.4 游戏引擎(上)
-1.5 游戏引擎(下)
--单选题
-1.6 如何成为一个游戏开发者
--多选题
-2.1 什么是游戏服务器
--单选题
-2.2 游戏服务器的和分类发展
--单选题
-2.3 核心技术和实现难点
--单选题
-2.4 设计原理与方法论
--单选题
-3.1 三维坐标系统
--多选题
-3.2 向量与运算
--单选题
-3.3 矩阵与线性变换
--双选题
-3.4 四元数
--3.4 四元数
--多选题
-4.1 游戏循环概述(上)
--多选题
-4.2 游戏循环概述(下)
--单选题
-4.3 《无尽之路》的实现
--单选题
-4.4 支撑游戏的功能
--选择题
-4.5 支撑游戏的机制与系统
--多选题
-5.1 基本介绍
--5.1 基本介绍
--单选题
-5.2 随机数生成器
--单选题
-5.3 随机数分布与应用
--单选题
-6.1 什么是游戏玩法开发
--单选题
-6.2 建立愿景 Vision
--单选题
-6.3 划定边界 Scope
-6.4 迭代 Iteration
--单选题
-6.5 迭代 Iteration+抛光Polish
--单选题
-7.1实时图形渲染管道 宏观渲染系统
--单选题
-7.2实时图形渲染管道 应用阶段
--单选题
-7.3实时图形渲染管道 几何阶段
--单选题
-7.4实时图形渲染管道 光栅化阶段
--单选题
-7.5实时图形渲染管道 总结 参考
-8.1 物理回顾1
--单选题
-8.2 物理回顾2
--单选题
-8.3 材质 1
--8.3 材质 1
-8.4 材质 2
--8.4 材质 2
-8.5 材质3
--8.5 材质3
-8.6局部光照
--8.6局部光照
--单选题
-8.7 全局光照
--8.7 全局光照
--单选题
-9.1 动画介绍
--9.1 动画介绍
--多选题
-9.2 游戏动画介绍
-9.3 动画技术类型
--多选题
-9.4 骨骼蒙皮动画
--多选题
-9.5 动画流水线
--多选题
-9.6 动画前沿趋势
--多选题
-10.1 .基本概念
--多选题
-10.2 设计目标
--多选题
-10.3 传输数据分析
--多选题
-10.4 常用同步方案 1
-10.4 常用同步方案 2
-10.4 常用同步方案 3
-10.4 常用同步方案 4
--多选题
-10.5 方案对比
--多选题
-11.1 基本图元
--单选题
-11.2 图元距离(上)
--单选题
-11.2 图元距离(下)
--单选题
-11.3 图元相交测试+ 其他几何方法
--单选题
-12.1 著名物理引擎介绍
--单选题
-12.2 物理引擎原理(上)
--单选题
-12.3 物理引擎原理(下)
--单选题
-12.4 游戏中的物理体
--单选题
-12.5 物理引擎使用入门
--单选题
-13.1开发语言
--13.1开发语言
--单选题
-13.2 开发环境
--单选题
-13.3 腾讯开发组件介绍
--单选题
-13.4 网络通信+业务框架介绍
--多选题
-14.1 进程间通信(上)
-14.2 进程间通信(下)
-14.3 通信格式
-14.4 并发模型
-14.5 超时处理
-14.6 大系统小做(上)
--多选题
-14.7 大系统小做(下)
-14.8 架构层面的技术支持(上)
--单选题
-14.9 架构层面的技术支持(下)
-14.10 分布系统的关键能力
--多选题
-15.1 游戏人工智能综述
-15.2 人工智能在游戏中主要方法 上
--多选题
-15.3人工智能在游戏中主要方法 (下)
-15.4 人工智能在游戏制作中的应用领域1
--多选题
-15.5 人工智能在游戏制作中的应用领域2
-15.6 人工智能在游戏制作中的应用领域3
--多选题
-15.7 人工智能在游戏运营中的应用实践(上)
-15.8 人工智能在游戏运营中的应用实践(下)
--多选题
-16.1 游戏支撑系统(1)
--单选题
-16.2 游戏支撑系统(2)
--单选题
-16.3 游戏支撑系统(3)
--单选题
-16.4 游戏支撑系统(4)
--单选题
-16.5 游戏支撑系统(5)
-17.1 游戏逻辑服务器(上)
--单选题
-17.1 游戏逻辑服务器(下)
-17.2 外挂与反外挂(上)
-17.2 外挂与反外挂(下)
--多选题
-18.1运行环境
--18.1运行环境
--多选题
-18.2物理部署
--18.2物理部署
--多选题
-18.3系统的可运维性
--多选题
-18.4运维案列分析
--多选题