游戏数据表管理
游戏中,大量用到策划编辑的表,通常策划会利用Excel进行数据设计工作,而游戏中,使用Excel文件很不方便,效率低,甚至很多平台不能有效地支持,这就要求我们将Excel数据文件,转换成一种方便使用的格式,这里我们选择CSV,因为这种格式,解析简单。此外,我们还解决几个问题:
转CSV
程序加载
本地化
这里我们只说设计思路,不给代码和实现,各位自己实践吧
到CSV,Phython,C#,等,都有访问Excel文件的库,收集需要导出的数据,以CSV格式导出。CSV:以逗号隔开的数据文件。
程序加载,需要实现CSV文件读取和解析。我们可以针对每个CSV文件,实现数据表的读取。但是实际上,我们的表格读取,都是同样的模式,所以,我们可以设计一个脚本,自动生成代码,读取,解析,和提供数据查询接口。针对该功能,需要为Excel表增加表头,指定数据格式。
本地化,我们需要提取需要本地化的字段,生成对应的本地化表,策划在本地化时,只需要翻译本地化文件。每次生成时,需要进行增量生成,即首先读取本地化表,读取源文数据表,对2个文件进行对比,删除原表中不存在的数据,添加原表中新的数据到本地化文件。针对该功能,我们需要为Excel增加表头,指定字段是否需要导出本地化。
总上,我们的表头结构应该时这样的:
id
career
attack
dead_drop
Int;
string;lang
Float(0|1)
Object(TheClassName)
1000
刺客
100
第二行,就是我们的描述表头
Int(0|100),表示数据类型是整数,取值范围是0-100。取值范围可以不加限制。
String;lang,表示数据类型是字符串,lang表示,该字段需要被本地化,没有表示不需要本地化。
Object(TheClassName),表示这是个字符串,但是由代码定义的TheClassName对象进行加载。比如我们用Json格式定义箱子,用代码定义的RewardBox类对象加载。
