协议
客户端与服务器交互通信,发送的都是网络数据包,也就是2进制数据。
为了能够理解这些数据包的内容含义,双方需要约定好 数据的格式、一些数字代号以及含义。
这个过程就叫定义协议
消息封装与解析
按某协议定义,把数据拼凑成一块2进制数据的过程,就是消息封装。
把一块2进制数据,按某协议定义,依次提取数据的过程,就是消息解析。
Protobuf
Protobuf 定义了一套制定协议的规范。
Protobuf 提供了绝大多数语言的消息封装与解析的接口
Protobuf基础知识
github地址:https://github.com/google/protobuf
官方向导:https://developers.google.com/protocol-buffers/docs/tutorials (需要翻墙)
其他:度娘
请自行学习Protobuf相关的知识
项目中Protobuf相关目录文件
mope\server\proto目录
里面包含了 mope 游戏的proto协议定义
mope\server\proto\wilds.proto
与RoomServer相关的协议都定义在wilds.proto中
mope\server\src\usercmd
protoc根据.proto文件,生成的go代码,在这个目录下
mope\server\tools\py_guiclient\proto
protoc根据.proto文件,生成的Python代码,在这个目录下
项目中使用Protobuf流程
在某.proto文件中,删除、修改或新增了某个协议
点击 gogoproto.bat,会生成对应的Go文件到mope\server\src\usercmd下
点击 proto_to_python.bat,会生成对应的Python文件到mope\server\tools\py_guiclient\proto下
Go代码中通过 import usercmd,然后使用某个协议类
Python代码中通过 import proto.wilds_pb2(举例),然后使用某个协议类
项目中新建、删除.proto文件流程
删除或新增某个.proto 文件
对应修改 gogoproto.bat 文件
对应修改 proto_to_python.bat 文件