通信协议-FlatBuffer-协议描述文件的编写和批量转换

 

对于强联网实时需要在服务器端和客户端传输数据的游戏项目,越高效快速解析、内存消耗越低数据传输,对游戏的流畅度体验影响也是很大的。目前针对移动端主流的数据传输格式有Json/ProctoBuf/FlatBuffer。而本篇介绍的FlatBuffer是Google特别针对游戏项目开发的。关于它们之间的优缺点比较,读者可以参考 http://google.github.io/flatbuffers/md__benchmarks.html

本篇文章主要详细介绍FlatBuffer的协议编写,协议特定语言版本的转化。

首先,从FlatBuffer GitHub官网下载源码和工具flatc.exe。 https://github.com/google/flatbuffers/releases

下载下来压缩文件

解压后

另外的

这里先编写一份schema文件(格式:.fbs)

 

namespace MyGame.Sample;
 
enum Color:byte { Red = 0, Green, Blue = 2 }
 
union Equipment { Weapon } // Optionally add more tables.
 
struct Vec3 {
  x:float;
  y:float;
  z:float;
}
 
table Monster {
  pos:Vec3; // Struct.
  mana:short = 150;
  hp:short = 100;
  name:string;
  friendly:bool = false (deprecated);
  inventory:[ubyte];  // Vector of scalars.
  color:Color = Blue; // Enum.
  weapons:[Weapon];   // Vector of tables.
  equipped:Equipment; // Union.
  path:[Vec3];        // Vector of structs.
}
 
table Weapon {
  name:string;
  damage:short;
}
 
root_type Monster;

生成对应语言版本脚本文件,cmd运行flat.exe工具 参看命令:https://google.github.io/flatbuffers/flatbuffers_guide_using_schema_compiler.html

但为了可以批量生成协议文件,我们可以编写批量转换工具

如何编写呢?新建txt文件编辑完成后,修改后缀为.bat格式

lua协议文件生成工具

C#协议文件编写工具

以后需要新增的协议,编辑一下对应版本工具即可。

点击对应工具,生成对应语言版本的文件

下篇文章介绍如何在项目中使用该生成的协议文件进行对象序列化和反序列化操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Data菌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值