游戏策划一般都是配置表高手。。。。。
工作中接触过多种各有区别的游戏配置表方式。每个项目最终采取的配置表方式,取决于游戏策划的喜欢和擅长工作方式和前端和后端的需求。
配置表的原始格式
大多使用 Excel 来创建和编辑原始配置表。也有一些美术资源配置等前端场合场合,使用由前端工程师提供的工具,与 Excel 配合来管理配置表。Excel 支持多种格式,每种有自己不同的特点:
| 格式 | 多工作表 | 保留表格样式等高级功能 | 编码方式 |
|---|---|---|---|
| XLS/XLSX | 支持 | 支持 | 二进制 |
| CSV | 不支持 | 不支持 | 文本 |
| XML | 支持 | 不支持 | 文本 |
多工作表并不常用,如果一个表格文件中,每个工作表中的格式完全一致,则仅起到分组的作用,意义不大;反之,则可用分为多个表格文件的方式来代替,同样意义不大。
保留表格样式,对游戏策划意义重大。有时简单的文字颜色和单元格背景功能,就能起到很大的作用。
如果支持文本的存储编码方式,则便于使用版本管理控制,来对比差异。对比来说,CSV 较 XML 更加结构精简,使用文本编辑软件打开可以发现到其结构与原始表格内容一致,便于临时编辑;XML 功能更加丰富,其文本内容有一定的 XML 格式化,每个单元格内容独占一行,便于版本对比。
综合来讲,我是比较推荐游戏策划使用 XML 格式的。
前后端使用的数据格式
对于前端来说 JSON 是比较通用的格式,Unity 可以方便地读取和做热更。
对于后端来说,因为没有包体大小的焦虑,可以较自由地引入第三方库,从这一点上来说,可以使用任意格式。一般配置表数据文件也会纳入后端的版本控制系统,所以最好使用文本编码的格式,可以使用 JSON/CSV/XML。
配置表的数据格式转换与结构定义
作为游戏后端开发,接触过各种格式的处理,更适合和擅长给游戏策划和前端准备格式转换工具,以便于配置表数据在前后端工程中进行版本管理。一般是将 XLS/XLSX 转换为 CSV/XML。
但当转换为 JSON 格式时,最好使用专用的数据转换工具,为前后端提供结构的描述信息,以便于后续开发。
一般我们在与游戏策划商定结构时,会要求在配置表文件中提供描述信息,比如增加数行表头:
| ID | Name | Attack | Resource |
|---|---|---|---|
| 编号 | 名称 | 攻击力 | 美术资源 |
| Long | String | Long | String |
| - | - | - | Client |
其中,第一行为字段命名,第二行为注释说明,第三行为类型信息,第四行为输出范围。据此可以使用代码生成器,来生成前后端各自的结构定义,来方便配置表的读取。其中还可以根据输出范围,来限制某个字段只提供给前端或后端,以减小文件体积和减少数据提交变更。
JSON 转换时所需要的 key 命名,即可按参考表头的字段命名。有时,为提供最大兼容性,还需要对策划表中的字段命名方式进行兼容处理,比如统一转换为匈牙利命名法。
配置表的自定义结构体定义
配置表的单元格内的内容,常常需要支持数组。比如配置一组道具表 ID。此时可定义为 Long[]。
有时,还需要更加复杂的结构,甚至嵌套。应当支持在 Excel 内直接定义内联类型定义,以及外部配置文件的定义的通用类型。
配置表的道具表分表扩展
道具是游戏中最重要的配置表之一。有时,