- Unix/Linux/Mingw/Msys脚本见 gen_sample_output.sh
- Windows脚本见(中文文件名在Windows下可能编码原因会提示文件找不到) gen_sample_output.ps1
sample的脚本会分别生成proto v2和proto v3的配置,实际上由于转表系统没有使用v3的新数据结构,所以任意一种转出来的配置都喝一同时被v2和v3的读取工具读取。
- 所有生成的数据由Powershell脚本 gen_sample_output.ps1 或bash脚本 gen_sample_output.sh 生成,具体参数可以参照这两个脚本。
- 数据读取依赖../header/pb_header.proto或../header/pb_header_v3.proto里的数据描述
- protobuf的数据生成规则是最外层一个xresloader_datablocks结构,里面是header和打包后的数据集,每一个data_block条目是一个数据项。header内的校验码是xresloader_header.hash_code为空字符串时的校验码
- 解码时需要依赖protobuf和pb_header
- proto_v2目录下是使用protobuf v2的协议文件,gen_protocol.py用于生成protobuf v2的pb文件和C++所需代码
- proto_v3目录下是使用protobuf v3的协议文件,gen_protocol_v3.py用于生成protobuf v3的pb文件和所需代码
- cxx/read_kind_sample.cpp 是C++读取协议二进制示例代码(依赖 ../loader-binding/cxx 里的内容)
- lua/sample_lua.lua 是用Lua读取Lua输出的示例(依赖 ../loader-binding/lua 里提及的内容)
- pbc/sample_pbc.lua 是用Lua读取协议二进制示例代码(依赖 ../loader-binding/pbc 里提及的内容)
- ../loader-binding/javascript 内有读取javascript输出的相关说明
- ../loader-binding/msgpack 内有读取msgpack输出的相关说明和node.js和python的示例
- proto_v2/json目录下是使用protobuf v2的输出的UE-Json格式的数据文件和支持蓝图的加载代码,不再另外说明生成脚本和使用方法
- proto_v2/json目录下是使用protobuf v2的输出的UE-Json格式的数据文件和支持蓝图的加载代码,不再另外说明生成脚本和使用方法
以下生成的sample文件假设协议是 $proto_dir
( proto_v2 或 proto_v3 ), 数据源是 $XLSX_FILE
( 资源转换示例.xlsx ) 等效执行命令表如下:
文件名 | 描述 | 参考命令 |
---|---|---|
*.proto | protobuf格式的协议描述文件 | 需要根据实际使用手动编辑 |
proto_v2/kind.pb | protobuf工具的打包proto文件的输出结果 | protoc -o proto_v2/kind.pb proto_v2/*.proto -I proto_v2 或 gen_protocol.py |
proto_v3/kind.pb | protobuf工具的打包proto文件的输出结果 | protoc -o proto_v3/kind.pb proto_v3/*.proto -I proto_v3 或 gen_protocol.py |
*.xlsx | 保存配置数据和生成规则描述的Excel文件 | 需要根据实际使用手动编辑 |
kind_const.lua | 导出的lua格式的常量(protobuf里的enum) | java -client -jar xresloader.jar -t lua -p protobuf -o $proto_dir -f $proto_dir/kind.pb --pretty 2 -c kind_const.lua--lua-global |
role_cfg.bin | 打包Excel数据之后的协议(protobuf)二进制文件,指定数据版本号为 1.0.0.0 | java -client -jar xresloader.jar -t bin -p protobuf -o $proto_dir -f $proto_dir/kind.pb -s *.xlsx -m scheme_kind -a 1.0.0.0 |
role_cfg.lua | 打包Excel数据之后的Lua格式输出,指定数据版本号为 1.0.0.0 | java -client -jar xresloader.jar -t lua -p protobuf -o $proto_dir -f |
role_cfg.json | 打包Excel数据之后的Json格式输出 | java -client -jar xresloader.jar -t json -p protobuf -o $proto_dir -f |
role_cfg.xml | 打包Excel数据之后的XML格式输出 | java -client -jar xresloader.jar -t xml -p protobuf -o $proto_dir -f |
role_cfg.msgpack.bin | 打包Excel数据之后的Msgpack格式输出 | java -client -jar xresloader.jar -t msgpack -p protobuf -o $proto_dir -f |
role_cfg.js | 打包Excel数据之后的Javascript格式输出 | java -client -jar xresloader.jar -t js -p protobuf -o $proto_dir -f |
role_cfg.n.js | 打包Excel数据之后的Node.js模块输出 | java -client -jar xresloader.jar -t js -p protobuf -o $proto_dir -f |
role_cfg.amd.js | 打包Excel数据之后的AMD.js模块输出 | java -client -jar xresloader.jar -t js -p protobuf -o $proto_dir -f |
arr_in_arr_cfg.lua | 嵌套数组示例Lua输出 | java -client -jar xresloader.jar -t lua -p protobuf -o $proto_dir -f |
arr_in_arr_cfg.bin | 嵌套数组示例协议二进制输出 | java -client -jar xresloader.jar -t bin -p protobuf -o $proto_dir -f |
role_upgrade_cfg.lua | Lua输出upgrade表 | java -client -jar xresloader.jar -t lua -p protobuf -o '$proto_dir' -f '$proto_dir/kind.pb' -s '$XLSX_FILE' -m scheme_upgrade -n "/(?i).bin$/.lua/" |
role_upgrade_cfg.json | Json输出upgrade表 | java -client -jar xresloader.jar -t json -p protobuf -o '$proto_dir' -f '$proto_dir/kind.pb' -s '$XLSX_FILE' -m scheme_upgrade -n "/(?i).bin$/.json/" |
kind_const_module.lua | 使用module来导出lua枚举类型 | java -client -jar xresloader.jar -t lua -p protobuf -o $proto_dir -f $proto_dir/kind.pb --pretty 2 --lua-module ProtoEnums.Kind -c kind_const_module.lua |
role_cfg_module.lua | 使用module来导出lua输出,指定数据版本号为 1.0.0.0 | java -client -jar xresloader.jar -t lua -p protobuf -o $proto_dir -f $proto_dir/kind.pb --lua-module ProtoData.Kind -s |
kind.desc.lua | 导出lua格式的描述信息,可用于用户自己实现反射接入 | java -client -jar xresloader.jar -t lua -p protobuf -o $proto_dir -f $proto_dir/kind.pb --pretty 2 -i kind.desc.lua |
kind.desc.json | 导出json格式的描述信息,可用于用户自己实现反射接入 | java -client -jar xresloader.jar -t json -p protobuf -o $proto_dir -f $proto_dir/kind.pb --pretty 2 -i kind.desc.json |
event_cfg.bin | oneof功能示例协议二进制输出 | java -client -jar xresloader.jar -t bin --pretty 2 -m 'DataSource=$XLSX_FILE |
event_cfg.lua | oneof功能示例协议lua输出 | java -client -jar xresloader.jar -t lua --pretty 2 -m 'DataSource=$XLSX_FILE |
- 内置
duration/google.protobuf.Duration
类型接入 - 内置
timestamp/google.protobuf.Timestamp
类型接入 - 内置
map<Key, Value>/[nested]MapFieldEntry
类型接入