游戏项目中各种策划配置的表格更新最近格式频繁,因为策划要反复来调节一些数值。这些个调整对于线上版本一般就通过差异化动态更新的方式来更新的玩家的客户端中。这过程中有一个问题,就是有的时间策划一更新的内容很小,比如只是在其中增删了一种物品的配置记录,而这样的话也就相当于这个表格整体有了修改,需要全部更新到客户端上去,这样做使得更新的资源量比较多。于是就添加了基于xml(这里用的是xml来做配置表格)的内容差异化更新。
基本思路是这样的,对于两个修改前后的表格,不是通过直接比较文件的MD5(或其它标识码)来做是否有更新的判定,而是直接比较XML中的内容,如果内容有差异的话就提取出其中的差异内容,然后将这些差异内容来做动态的更新;然后,在本地客户端拉取到这些差异化内容后再与本地的xml表格进行合并,进而得到新的配置表格来使用即可。
整个过程主要有:
1. 对于修改的最新配置文件,使用diff的方法来生成对应的差异内容,并生成应的内容补丁做更新使用;
2. 客户端拉取到最亲的diff内容后与本地的配置文件做merge,得到最终的配置文件来使用;
这样一来,对应的差异化更新文件就可以小很多。
这里直接有微软的XML库可以直接使用:https://msdn.microsoft.com/en-us/library/aa302295.aspx。对于使用json格式的配置文件这里也有一个库:http://npm.taobao.org/package/json-diff