关于引擎原生热更新系统的问题

在看引擎原生的几个热更新相关的功能模块,目前了解到:

因此对目前引擎内热更新模块的状态有一些疑问:​

  • 在当前版本下(5.6),是否推荐我们来使用引擎原生的InstallBundleManager、OnlineHotfixManager以及UpdateManager做热更新呢。​(考虑到ChunkDownloader不维护,似乎也没有其他合适的原生模块做这个事情?)
  • UpdateManager中的PatchCheck和HotfixCheck,是否可以理解为一个是分发平台相关的差分更新,一个是游戏内下载文件进行热更新?
  • 如果我们要使用这一套系统的话,流程感觉上是:
    • 启动时,通过UpdateManager走一遍​StartUpdateCheck流程。先检查Patch再检查Hotfix。
    • 实现我们自己的​IInstallBundleManager,来实现PatchCheck流程(实际上看FDefaultInstallBundleManager中的实现也是调FPatchCheck,最终还是调到IOnlineSubsystem这边)
    • 通过实现IOnlineTitleFile,来实现Hotfix流程(检测当前有什么文件,然后下载、Hotfix)
    • InstallBundleManager还可以实现在游戏内任意时机​更新资源(通过RequestUpdateContent,获取特定的Bundle)
  • 以上的理解是否正确呢?​

重现步骤

Hi,

你好,情况的确如你所说,一开始我们是用的Chunk Downloader,但后续好像没有再继续使用了。我看了一下Fortnite里的确是用的InstallBundleManager、OnlineHotfixManager以及UpdateManager,但都是在Fortnite里做了继承,应该会有部分功能只在Fortnite里做了扩展。我的确没有找到公开的文档介绍这部分,内部也没有找到详细的资料,只是粗略的知道我们的用法,但是是跟GameFeaturePlugin的使用结合的很紧密。

比如Fornite里有些基础的GameFeaturePlugin,这些GameFeaturePlugin会组成BaseInstallBundle,然后比如有两种游戏模式BR和Creative,每种游戏模式会有多个GameFeaturePlugin,他们有些GameFeaturePlugin是共享的,就会变成SharedBundle,BR会有自己的BRBundle,Creative会有CreativeBundle。

游戏启动后,一开始会检查BaseInstallBundle是否加载,如果没有应该会下载,然后加载。之后会注册所有UpToDate的GameFeaturePlugin,然后再根据用户的选择,比如BR模式,会去下载BRBundle以及SharedBundle,然后再下次启动时注册所有GameFeaturePlugin。

这是我已知的流程,我再咨询一下我们是否有其他资料,或者更熟悉的人,如果我有更多信息,我再同步给你。