Skip to content

Latest commit

 

History

History
 
 

Config

游戏配置生成工具

在游戏开发中,游戏配置是屡见不鲜的东西了。一个好的配置生成工具能让你在开发中事半功倍。

通常来说,配置都是由策划来产出并维护的,绝大多数策划岗都不了解开发,他们最喜欢的就是Excel表格Excel的确是个好东西)。

本工具的主要功能就是把Excel表格导出成程序可用的数据。


一、安装依赖

  1. 安装 Node.js LTS版(最后测试基于20.11.0)。
  2. 打开命令行,将目录定位到 Generator 目录。
  3. 在命令行中执行命令: npm i,可能会有警告,但没关系,忽略即可。

三、使用说明

  1. 所有配置表的格式为 *.xls*.xlsx
  2. 所有配置表都放在本文件夹之下(可嵌套文件夹)。 其实也可以放在其它地方,通过修改 Generator/Config.json 的 excel_url 可以设置配置表路径。
  3. 双击 gen.bat 可生成所有配置。

3.1 Excel 前置表行说明

第1行

  1. 第一格为配置表名称。
  2. 第二格为配置表格式(横表(Horizontal)、纵表(Vertical)或枚举表(Enum)),填英文
  3. 第三格,如果是枚举表则为是生成至..,如果是横表则为父表名称

第2行

字段 + 字段类型。

格式:用#隔开。

例:name#string

第3行

字段特殊类型。

目前有数组、表连接、枚举,下面会详述。

第4行

主键。

第一主键填1,第二主键填2...,以此类推。

第5行

生成至...。

根据Generator/Config.jsonexportsid去填写。

格式:用|隔开,

例:1|2|3。(若不填写则全部都生成

第6行

默认值。

第7行

说明备注。

3.2 字段与类型

字段和类型是填写在同一个单元格的,不能包含中文和空格,首个字符不能是数字,例如:sub_type#intsubType#int,生成给程序的都是小驼峰命名方式——subType: number,如下图:

array

类型支持:

类型 关键字 语言支持
布尔 bool 全部
整型 int 全部
浮点型 float 全部
字符串 string 全部
布尔一维数组 bool[] 全部
布尔二维数组 bool[][] 全部
布尔三维数组 bool[][][] 全部
整型一维数组 int[] 全部
整型二维数组 int[][] 全部
整型三维数组 int[][][] 全部
浮点型一维数组 float[] 全部
浮点型二维数组 float[][] 全部
浮点型三维数组 float[][][] 全部
字符串一维数组 string[] 全部
字符串二维数组 string[][] 全部
字符串三维数组 string[][][] 全部
任意类型 any JS/TS
任意类型一维数组 any[] JS/TS

3.3 生成至..

顾名思义,就是生成至哪个端,填写方式由 | 隔开,如下图:

array

比如现在的 Config.json 文件中是这样的:

ID
1 Unity 示例项目
2 Cocos Creator 示例项目

3.4 特殊类型

3.4.1 数组

在特殊类型的单元格填array#字段名即可。如下图:

array

导出到程序端是这样子:

"attr": [
    [ 10001, 50 ],
    [ 10002, 60 ],
    [ 10003, 30 ],
    [ 10004, 30 ],
    [ 10005, 20 ],
]

3.4.2 表连接

在特殊类型的单元格填link#配置表名即可。如下图:

link

上图表示的是 langId 字段连接了语言表(Lang),所以请确保有另一张叫做 Lang 的表存在

设置了表连接后,程序员就可以很方便的访问到 Lang 配置,伪代码:

this.btn.text = config.langId.cn;

表连接对于策划来说没有任何感知,只是生成出来的配置程序员会用得更舒服。

3.4.3 枚举

在特殊类型的单元格填enum#枚举表名即可。如下图:

link

上图表示的是type为枚举类型(asset_type)的枚举,所以请确保有另一张叫做 AssetType 的枚举表存在

其实填enum#AssetType也可以,没差别。

枚举表的格式比较特殊,如下图:

link

第一列为 枚举Key。 第二列为 枚举Value(JS、TS支持整型与字符串;C#端仅支持整型) 第二列为 备注说明


四、配置(Config)

本工具的配置是Generator/Config.json

字段说明:

{
    excel_url: "配置表URL(Excel的文件夹路径)",
    export_suffix: "配置导出脚本后的命名后缀(推荐Config)",
    export_item_suffix: "配置子项导出脚本后的命名后缀(推荐Item)",
    export_collection_suffix: "多主键配置导出脚本后字典的命名后缀(推荐Map)",
    export_data_splitor_random_enabled: "导出的配置脚本是否生成随机分隔符",
    export_data_splitor: "固定分隔符",
    origin_export_url: "源配置文件夹路径",
    origin_json_url: "源配置 JSON 的路径",
    origin_remark_url: "源配置 Remark JSON 的路径",
    origin_enum_url: "源配置 Enum JSON 的路径",
    incrementalPublish: "增量编译",
    exports: [  // 所有导出项
        id: "导出项 ID",
        enabled: "启用(控制是否生成配置)",
        code_language: "代码语言",
        script_suffix: "脚本文件后缀(扩展名)",
        template_name: "模板文件夹名称(若不填则按ID取模板)",
        force_make_dir: "强制创建路径",
        export_url: "配置文件导出路径",
        export_script_url: "配置脚本导出路径",
        export_config_manager_name: "配置管理器脚本名称",
    ],
}

五、自定义导出项(程序向)

工程文件夹就是 Generator 文件夹,是 TypeScript 工程,因此你需要一些 TypeScript 基础。

5.1 项目结构

文件夹 描述
dist 编译脚本导出路径
img 图片(主要作用于本 Markdown)
node_modules node 模块目录(第一章的安装依赖就是安装到这里)
src 源码
templates 模板,用于生成代码的模板文本文件
Config.json 本工具的配置文件
其它文件 其它就不解释了,想要了解请自行百度TypeScript项目结构

5.2 自定义生成配置脚本

目前工具内已内置了生成**TS、C#**配置脚本的源码,分别是GenTSModule.tsGenCSModule.ts

比如你想要生成Lua配置脚本,那就新建个GenLuaModule.ts,逻辑呢就参考上面的两个就好,写起来会比较枯燥。

修改完源码后,记得要在终端执行npx tsc,将 TS 代码全都编译成 JS 代码,工具最终运行的都是 JS 代码。


Author: kL

E-mail: [email protected]