大厅子游戏实现指引,creator2.0以上

好吧,我的表述可能有误,我的意思是:
1,一开始,游戏的安装包只有大厅和公共资源。
2,点击,进入游戏,此时如果大厅和公共资源有更新,则更新,然后重启.
3, 在大厅下载子游戏,直接进入子游戏(此时不用重启,因为在上一步中已经更新了setting.js,也重启了。project.js也更新了,仅仅只是缺了子游戏的资源)

之后的流程:
玩家退出游戏,每次进入游戏,检查大厅的project.manifest和子游戏的project.manifest,更新,然后重启(之后只是玩家没有下载过的游戏,才在大厅下载,已经下载过的,都是在进入大厅前更新并重启.).

good job 最近项目刚好需要分离式的资源下载方式,膜拜学下下

打包不能勾选MD5吗?勾选MD5热更新出现版本文件是更新成功了,但是游戏内的资源没更新成功

md5是为解决web浏览器缓存用的,在原生平台上不建议开启,理论上开启md5也是没有问题的。
版本文件更新成功,资源应该是更新了的,时不时没有重启导致的没生效,
或者你需要查看下更新路径是否与资源搜索路径一致,资源的搜索路径,demo里是放在main.js中写死了的,所以更新路径等于也是固定了。

有重启,搜索路径是:/data/user/0/org.cocos2d.uptest/files/2.0/

没打MD5, cdn不会有缓存吗?

从你的反馈看,资源搜索路径是没问题的了,需要你自己排查下具体原因了。
cdn一般都会提供缓存刷新的服务,可在发布新的资源后刷新解决缓存问题。

我们就是这样做的

mark

TTUpgrade.js的check_update函数内 执行了 this.hotup && this.hotup.release() 这行代码,是不是意味着不能同时热更多个模块?

mark

不能同时热更多个模块,因为所有模块都是在同一个更新目录里。

同时下载多个分包也不行吗

不行的,这个方案理论上是同一个项目,只是自己将资源分为了不同的配置。

现在的demo的做法是下载后修改*.manifest文件名,如果能在下载前指定即将要下载的*.manifest文件名,那应该就能做到多个模块同时热更新

是不是主模块更新,子模块也一定要更新?

AssManager好像是单例,任一时刻只能有一个LocalManifest文件.

assetsmanager并非是单例,不能同时更新的原因是:
所有模块同属于一个更新目录,更新时会先在缓存目录下载文件,校验通过再移动到更新目录,删除缓存文件。多个模块同时更新,因为无法保证顺序,有可能会造成对同一个文件的操作,导致错误的发生。

好的,了解,谢谢大佬

是不是主模块更新,子模块也一定要更新?

mark