diff --git a/docs/zh/manuals/live-update.md b/docs/zh/manuals/live-update.md index fa53cfca..711067fe 100644 --- a/docs/zh/manuals/live-update.md +++ b/docs/zh/manuals/live-update.md @@ -71,6 +71,24 @@ brief: 热更新允许游戏运行时获取和存储编译时并不存在的资 我们目前的方法只支持单个 .zip 文件, 但是实际上把它分成若干小 .zip 文件是可行的. 这会让游戏下载更小的卷: level 包, 特典包等等. 每个 .zip 文件包含 manifest 文件描述了 .zip 文件里包含的资源的元数据. +## 拆分 .zip 卷 + +通常希望将被排除的内容拆分为几个较小的卷, 以便更精细地控制资源的使用. 一个实例就是把基于关卡的游戏拆分成多个关卡包. 另一个例子是将不同节日主题的 UI 装饰放入单独的存档中, 并仅加载和挂载当前节日的主题. + +资源表保存在 `build/default/game.graph.json` 中, 该文件在项目打包时自动生成. 该文件包含项目中所有资源的列表及每个资源的依赖情况. 例如: + +```json +{ + "path" : "/game/player.goc", + "hexDigest" : "caa342ec99794de45b63735b203e83ba60d7e5a1", + "children" : [ "/game/ship.spritec", "/game/player.scriptc" ] +} +``` + +每个条目都有一个 `path` 代表项目中资源的唯一路径. `hexDigest` 代表资源加密指纹, 它在热更新 .zip 卷里作为文件名使用. 最后 `children` 项是该资源所依赖的其他资源的列表. 上例中 `/game/player.goc` 依赖于一个 sprite 和一个脚本文件. + +你可以解析 `game.graph.json` 文件, 并以此来标识资源表中的条目组, 并将其相应的资源与原始清单文件一起存储在单独的卷中 (清单文件将在运行时进行修剪, 以便它仅包含卷中的文件). + ## 内容验证 热更新系统的一大特性, 是可以使用多个数据卷, 而不管它来自哪个版本的 Defold.