游戏策划一般都是配置表高手。。。。。

工作中接触过多种各有区别的游戏配置表方式。每个项目最终采取的配置表方式,取决于游戏策划的喜欢和擅长工作方式和前端和后端的需求。

配置表的原始格式

大多使用 Excel 来创建和编辑原始配置表。也有一些美术资源配置等前端场合场合,使用由前端工程师提供的工具,与 Excel 配合来管理配置表。Excel 支持多种格式,每种有自己不同的特点:

格式多工作表保留表格样式等高级功能编码方式
XLS/XLSX支持支持二进制
CSV不支持不支持文本
XML支持不支持文本

多工作表并不常用,如果一个表格文件中,每个工作表中的格式完全一致,则仅起到分组的作用,意义不大;反之,则可用分为多个表格文件的方式来代替,同样意义不大。

保留表格样式,对游戏策划意义重大。有时简单的文字颜色和单元格背景功能,就能起到很大的作用。

如果支持文本的存储编码方式,则便于使用版本管理控制,来对比差异。对比来说,CSV 较 XML 更加结构精简,使用文本编辑软件打开可以发现到其结构与原始表格内容一致,便于临时编辑;XML 功能更加丰富,其文本内容有一定的 XML 格式化,每个单元格内容独占一行,便于版本对比。

综合来讲,我是比较推荐游戏策划使用 XML 格式的。

前后端使用的数据格式

对于前端来说 JSON 是比较通用的格式,Unity 可以方便地读取和做热更。

对于后端来说,因为没有包体大小的焦虑,可以较自由地引入第三方库,从这一点上来说,可以使用任意格式。一般配置表数据文件也会纳入后端的版本控制系统,所以最好使用文本编码的格式,可以使用 JSON/CSV/XML。

配置表的数据格式转换与结构定义

作为游戏后端开发,接触过各种格式的处理,更适合和擅长给游戏策划和前端准备格式转换工具,以便于配置表数据在前后端工程中进行版本管理。一般是将 XLS/XLSX 转换为 CSV/XML。

但当转换为 JSON 格式时,最好使用专用的数据转换工具,为前后端提供结构的描述信息,以便于后续开发。

一般我们在与游戏策划商定结构时,会要求在配置表文件中提供描述信息,比如增加数行表头:

IDNameAttackResource
编号名称攻击力美术资源
LongStringLongString
---Client

其中,第一行为字段命名,第二行为注释说明,第三行为类型信息,第四行为输出范围。据此可以使用代码生成器,来生成前后端各自的结构定义,来方便配置表的读取。其中还可以根据输出范围,来限制某个字段只提供给前端或后端,以减小文件体积和减少数据提交变更。

JSON 转换时所需要的 key 命名,即可按参考表头的字段命名。有时,为提供最大兼容性,还需要对策划表中的字段命名方式进行兼容处理,比如统一转换为匈牙利命名法。

配置表的自定义结构体定义

配置表的单元格内的内容,常常需要支持数组。比如配置一组道具表 ID。此时可定义为 Long[]

有时,还需要更加复杂的结构,甚至嵌套。应当支持在 Excel 内直接定义内联类型定义,以及外部配置文件的定义的通用类型。

配置表的道具表分表扩展

道具是游戏中最重要的配置表之一。有时,

配置表的自动化流程

Luban 在切换 json/二进制格式时,比较麻烦