找回密码
 立即注册
查看: 206|回复: 1

protobuf在游戏服务器开发中的应用

[复制链接]
发表于 2023-3-1 12:11 | 显示全部楼层 |阅读模式
protobuf 是google开源的一个序列化框架,是基于二进制的协议。
优点:
1:序列化和反序列化效率比xml,json要高
2:序列化后的体积要比json和xml都要小
3:支持跨平台多语言
开发游戏中如何使用:
下载地址:
https://download.csdn.net/download/zisuting/10316263
客户端与服务器交互的协议定义成.proto文件,通过protoc.exe编译后生成对应的.java文件和.cs文件。
下载好后解压目录如下



如何写proto文件



如上图我们定义了一个登陆请求协议
用到的关键字有 package, option, message, optional, int32, int64, string
支持的关键字类型如下:



如何将写好的proto生成对应的java代码:



上图是文件目录,protos存放写好的.proto文件。Tools是解压好的protobuf编译文件,build-java.bat是批处理的编译脚本内容如下:



运行这段批处理脚本会将protos目录下及其子目录的.proto文件生成对应的java文件到out目录下



在游戏服务器开发中,我们如何定义协议:
第一部分:我们在一个包的头部定义一个int型或者short类型的(取决于协议的数据量大小)包头用于表示包体的大小;
第二部分:协议号int类型或者short类型(取决于协议数量的多少)的协议号用于判断该包属于哪条协议是登陆协议还是抽奖协议等用于解包的判断;
第三部分:对应的protobuf里定义的数据。


Java的netty服务器对应的解码器部分:



修改netty部分:
将socket管道绑定对应的解码器



总结:
游戏服务器开发部分对于协议部分的讲解基本上就这些内容,但难免会有纰漏,望指正。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2023-3-1 12:19 | 显示全部楼层
支持
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 03:47 , Processed in 0.089713 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表