热更HotPatcher

操作流程

1. 插件下载

插件是开源的,需要下载:
https://github.com/hxhb/HotPatcher

2. 插件放入

基础操作:打开项目创建一个新的空白插件名字是:HotPatcher
将下载插件HotPatcher放入到plugins目录中,整体替换创建的空白插件HotPatcher

3. 打基础包

  • 是将基础包打出来,就是正常的UE打包的方式
  • 在基础包的基础上,通过HotPatcher将正常的基础打出xxx_Release.json文件,该版本记录的是打出的基本包资产的Hash,资产引用关系等,也就是最初版本的一个全部文件的引用关系。

4. 打Patcher增量包

  • 打Patcher增量包,选择上一个版本的xxx_Release.json,增量是以此json文件为基础,进行增量的添加,这一过程也会打出所有文件的引用关系,资产等

打热更包步骤

  1. 打开 HotPatcher,选择 ByRelease,导出 *_Release.json,其中记录了所指定的每个资源的信息;
  2. 使用 UE 直接打包任意平台的项目(如 windows/android/ios)
  3. 在工程中修改 / 添加 / 删除资源,修改引擎 / 项目 / 插件的设置等;
  4. 在ByPatch下, 勾选 Cook Patcher Assets;
  5. 打开 HotPatcher,选择 ByPatch,以上面导出的 *_Release.json 为基础版本,根据需求选择需要打到 Pak 中的内容;
  6. 点击 GeneratedPatch,会生成 Pak 文件和各种信息(其中也包含当前版本的 *_Release.json,使 Patch 可以增量更新)
  7. 生成的 Pak 中就包含了与上次打出的包中所有差异的内容。
    打热更包
    图示
    先打出基础包,也就是最基本的exe应用。
    启动HotPatcher,选择 ByRelease,导出 *_Release.json,其中记录了所指定的每个资源的信息;



导出的release.json文件放入到打出包的.exe目录下。

基础的资产以及资产的引用关系打出来,对文件的修改,逻辑的添加,地图的增添等之后,选择 ByPatch,以上面导出的 *_Release.json 为基础版本,根据需求选择需要打到 Pak 中的内容;


点击运行,应该就是实现了热更,不需要每次都进行打包

基础原理

通过记录每一个资源的GUID,创建唯一编码,也即是对每一个文件添加了唯一的标识符,
通过每次的打patcher,知道改动的是哪些,将打出来的pathcher就可以修改或增添或删除原来的文件的GUID,以及逻辑关系,实现热更。