|
@@ -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.
|