-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
92 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,28 +1,107 @@ | ||
# table-export | ||
|
||
## 介绍 | ||
table-export 是一个高性能游戏导表工具,使用golang编写,目前支持源数据excel和csv,导出格式支持C# binary,c# proto,lua,json,可以根据自己的需求自己修改扩展。 | ||
|
||
## 核心特性 | ||
|
||
- 速度快,方便扩展 | ||
- 导出的C# binary,以及lua,都是支持内存优化,这是对比其他导表工具的最大优化,table-export会在导出的时候把相同重复的引用数据只导出一份,并且在runtime读取的时候,只读取一份,然后其他和这份数据相同的都会持有这个引用,实际上游戏数据表越多数据量越大的时候,能够优化的存储和内存将近一半,这样也优化了启动的加载的时间 | ||
|
||
## 使用方法 | ||
|
||
### 准备环境 | ||
|
||
1. 安装golang | ||
|
||
2. 编译可执行文件放到examples目录下。 | ||
|
||
3. 工具的配置文件目录为可执行文件的相对路径的./conf/config.toml,examples里已经有一份示例配置 | ||
4. 先在config.toml里面配置好导出规则的配置,例如c# binary | ||
|
||
```toml | ||
[[meta.rules]] | ||
rule_name = "cs_bin" | ||
config_dir = "./cs_bin_meta" | ||
[meta.rules.cs_bin] | ||
code_temp_dir = "./temp_work/temp_cs_bin_code" | ||
data_temp_dir = "./temp_work/temp_cs_bin_data" | ||
gen_code_dir = "./projects/proj_cs_bin/src/gen" | ||
data_bin_dir = "./projects/proj_cs_bin/table_bytes" | ||
#toml支持多行文本 | ||
gen_code_head = """using Serialization; | ||
""" | ||
code_namespace = "CfgTable" | ||
# 以下是生成的优化相关数据 | ||
gen_optimize = true | ||
optimize_threshold = 0.2 | ||
``` | ||
|
||
5. 上述配置中config_dir对应的目录是表的描述文件,一般其他的导表工具会定义在excel头部,但是table-export会使用单独的meta配置来控制表的导出规则等。这样可以在由程序来控制配置表如何输出,而不用让策划帮忙改表的定义,减少了这方面的沟通。 | ||
|
||
### 开始导表 | ||
|
||
table_export.exe -m 模式1|模式2|... | ||
|
||
例如: `table_export.exe -m cs_bin` | ||
|
||
可以同时导出多种 | ||
|
||
例如 : `table_export.exe -m lua|cs_bin` | ||
|
||
### **表meta配置文件** | ||
|
||
#### 介绍 | ||
table-export 是一个游戏导表工具,目前支持源数据excel和csv,导出格式支持C# Proto,lua,json,可以根据自己的需求自己修改扩展。 | ||
|
||
#### 使用方法 | ||
meta配置指一个表的导出规则,控制哪些字段导出,字段类型,字段注释,索引的key等规则,例如以下就是对应base_test表的导出规则 | ||
|
||
```toml | ||
# 目标名字 | ||
target = "base_test" | ||
mode = "" | ||
source_type = "excel" | ||
|
||
sources = [ | ||
{ file_name = "base_test.xlsx", sheet_name = "Sheet1" }, | ||
] | ||
|
||
|
||
**工具的配置文件目录为./conf/config.toml** | ||
fields = [ | ||
{ active = true, sname = "id" , tname = "id" , type = "int" , key = 1, desc = "主id"}, | ||
{ active = true, sname = "name" , tname = "name" , type = "string", key = 0, desc = "名字"}, | ||
{ active = true, sname = "age" , tname = "age" , type = "int" , key = 0, desc = "年龄"}, | ||
{ active = true, sname = "course" , tname = "course" , type = "[]int" , key = 0, desc = "学科"}, | ||
] | ||
|
||
**测试时可以把build出来的执行文件放在examples目录下** | ||
``` | ||
|
||
**导出表meta配置文件** | ||
#### 生成meta模板 | ||
|
||
table_export -g="目标名字,excel(.xlsx)文件名字不带后缀,Sheet名" | ||
> table-export提供了根据配置好的excel文件生成一份meta模板的配置,然后在这个基础上做修改,而不是从零自己去写这个配置,以下就是生成模板meta配置的方法 | ||
例如:table_export -g="base_test,base_test,Sheet1" | ||
先把excel文件放在config.toml中定义src_dir对应的目录下,当前示例定义的目录是examples/excels | ||
|
||
导出meta模板后,会放在temp_meta中,需要修改后放入对应的目标,例如cs的放在cs_meta中 | ||
excel 生成meta模板,例如: `table_export -g 目标名字,excel文件名字带后缀,Sheet名` | ||
|
||
**导表** | ||
```shell | ||
table_export -g complex_test,complex_test.xlsx,Sheet名 | ||
``` | ||
|
||
csv 生成meta模板同理excel,只是参数变成了两个 | ||
|
||
```shell | ||
table_export -g csv_test,csv_test.csv | ||
``` | ||
|
||
#### 使用该meta模板配置,并修改 | ||
|
||
生成之后会在config.toml里的gen_dir配置项中,示例配置定义的目录为examples/temp_meta里,使用上述生成meta模板文件的命令之后,会在这个目录看到文件,需要把生成的文件放到定义的导出规则的目录中去。例如config.toml里的cs_bin的配置中的config_dir字段定义的C#的二进制的导表读取的meta目录为examples/cs_bin_meta里,这样就放到这个目录中。 | ||
|
||
然后打开这个toml配置,把fields中需要导出的字段的active设置为true,并且填入type,以及在这个表中至少定义一个索引key,可以多个但是必须是连续的,例如 key的字段有 1 ,2。这样就会生成一个双key的数据,之后就是双key的数据。例子complex_test就是双key的例子 | ||
|
||
table_export.exe -m="模式1|模式2|..." | ||
|
||
例如 : table_export.exe -m="lua|cs_proto" | ||
|
||
## Credits | ||
- [LuaTableOptimizer](https://github.com/lujian101/LuaTableOptimizer) | ||
- [luban](https://github.com/focus-creative-games/luban) | ||
|
||
- [LuaTableOptimizer](https://github.com/lujian101/LuaTableOptimizer) 使用了lua表优化工具,在此基础上做了更进一步的优化 | ||
- [luban](https://github.com/focus-creative-games/luban) 使用了二进制序列化的代码和一些思路 |