当前课程知识点:游戏程序设计 > 第十四章 《分布式系统设计 》 > 14.3 通信格式 > 14.3 通信格式
啊
那么
除了我们知道即
每个进程之间能通信之外
那么还有一个很重要的问题
它以什么样的一个格式
来进行通信
就是前面相当于我们前面说的送信
我们送信是写中文呢
还是写可能英语
英语来写的
还是说我们跟别的
小语种语言是吧
还可能是自己创造的一份
经过加密之后的
我们双方约定之后的
比如说有一个专门的专用的一个密码
加密之后的内容
要么这就是我们的通信的一个格式的问题
通信格式的一些关键点
就是我们要考虑
我们要发送出去的消息
要进行一定的序列化
然后和反序列化
就是序列化
对于发送方来讲的话
就发出去之前
我会尽力按照一定的规则和编码格式
把内容进行一个
写成二进制流
并且把它发出去
那反序列化就是接收端
收到之后
它需要按照相同的规则
反过来
把这个格式化或者是编码后的规则
的数据给它还原回
原来的一个消息格式
那么就是一个反序列化
反序列化的一个过程
那么还需要考虑一个版本的一个兼容
就是我发出去的消息
有可能前后两条消息
它内容多了一点
因为后面的话我们可能说
随着功能的增加
随着我们业务需求的增加
我们需要增加一些字段
或者增加一些数据
在后面
接收方要能同时处理不同版本的
这个消息
还有就是我们
这个它序列化和反序列化
它的性能要不要高
不能因为这个东西影响到了
程序本身的一个处理业务逻辑的一个
性能的开销或者它的一个性能
关于通信格式的话
目前业界的来讲
会有常见的有PB
叫Protocol Buffers是google来提供的
那么腾讯内部的话会有自己的内部的格式
叫TDR
就自己的数据表示方式
我们看看PB
它是如何做到这个消息的
它的整个流程是什么
那么
首先会有一个叫proto的一个文件
这个原型文件
它是一个茶苗文件
那么它内部定义呢
就说一个结构
它结构体
是如何来表示是它的一个
通过自己的proto文件来表述
那么这个proto文件
会有一个专门的一个代码生成器
会去把这个文件转换成代码
可能是不同语言的代码
C++的代码
Java代码
那么这个代码经过编译之后
集成到
发送方的程序里面
发送方会进行一个Encoder
Encoder把一个消息进行一个Encoder
就是我们说的序列化
然后把序列化之后的内容会给
会通过网络发送出去
前面我们讲过
我们会有一个
会有移动通信网络通信吗
已经建立了移动网络通信的能力
那么现在就利用这种能力把这个序列化之后的消息
给它发出去
那么接收方
接收到这个消息之后
他就需要进行一个解码
和一个解码器
那个解码器会把这个消息还原出来
变成了一个
原始的
你发过来的一个消息
那么这就是一个简单的一个
流程
那这里的有个使用的示例
就是说会有一个proto文件
最上面是一个Proto文件
它的内容大概有三个字段
那么中间的这部分是发送方
会把这个
结构或者叫class
或者叫message
进行一个序列化之后
通过网络把它发出去
那么第三部分就是接收方
从网络上接收到一个
二进制数据流之后进行一个解包
把这个数据
解包回来
成为自己的一个
可以在内存里面操作的一个
结构和数据
这一块大家
可以有兴趣的话
可以在课后去
对着官方的文档
去自己写一些测试的代码
或者以前例子
自己去体会一下
-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运维案列分析
--多选题