前段时间公司同事在琢磨子游戏更新的方案。最近几天,测试成功了。我大概听了他们的思路,此方案跟社区方案不太一样,但是也是可行的。遂将该思路分享出来。
热更新的关键是通过比对配置文件的md5值,当出现差异的时候,就从远处服务器下载覆盖。
这个方案就是遵从了这个思路:
1.把子游戏所有东西导入到一个工程。生成所有的md5值配置project.manifest
2.对每个子游戏的代码,资源都用一个目录去存储,做好目录管理,然后写一个脚本解析project.manifest,根据子游戏目录名,将project.manifest里面涉及的子游戏的md5值拆分出来,生成新的子游戏配置文件manifest。比如,登录模块login_project.manifest 大厅模块 hall_project.manifest.
3. 拆分完后,热更新服务器保存生成所有代码资源,代码逻辑上,分别对不同的project.manifest在需要的时候分别进行比对下载。这样达到资源不想下载的时候就无需下载的程度。
这个方案只是官方方案的小变种。