由于github pages国内访问缓慢,开了个专栏搬运我自己博客的文章:UE4资源热更打包工具HotPatcher
最近为HotPatcher更新了不少功能和修复了一些问题,这部分内容更新到了我博客的文章中,但没有同步到知乎来,知乎的编辑器实在是太烂了,建议直接访问文章的博客地址:UE4资源热更打包工具HotPatcher。
目前支持的引擎版本为UE4.21-UE4.25,近期有不少朋友私信来问插件相关的问题,我创建了个群来讨论UE4热更新和HotPatcher插件的问题(QQ群958363331),欢迎加入。
HotPatcher是我最近写的用于打包UE项目资源热更的工具,用于追踪工程版本的资源变动来打出Patch。支持一键Cook多平台,一键打包多平台Patch,编辑器支持Windows和MacOS,再写一套从服务器下载patch的流程就是一套完整的游戏热更方案。HotPatcher在项目里已经使用了一段时间,目前比较稳定,今天整理了一下文档,开源出来,会持续更新,欢迎提issus。
HotPatcher与UnrealFrontEnd中的Patch不同,UE的Patch是基于Cook出的资产作为版本管理的内容,这样在管理工程时存在问题:同样的工程版本,很难在不同的电脑上打出相同的Patch(除非把Cooked同步提交,很难管理),也无法基于Patch的版本再打出一个Patch,而且我们还需要能够方便地能够把外部文件打包到pak中(如lua文件),并且方便管理工程和Patch版本,这个插件就是为了解决上面这样的问题。
注意:该插件只能打出包含UE的资源以及添加的外部文件作为热更的内容(支持lua),修改的C++代码无法热更,需要自己设计好架构。如果是纯蓝图项目则可以完全使用这个工具进行热更。
HotPatcher插件支持根据选择只打包指定的资源(可以指定包含过滤器以及忽略过滤器以及可以指定单个资源),支持资源的递归依赖分析(如只打包某个地图及其所有依赖的资源),打包的Path中可以选择不包含未引用的资源,也不会包含未改动的资源,还会分析项目中的无效资产以及忽略重定向器的资源,实现了基于项目资产的版本追踪而无需管理Cooked的内容,只需要在打Patch之前Cook一遍保证Cook的内容是基于最新工程版本的即可。
除了包含UE的资源文件外,额外的支持:
- 支持包含Cooked出的非资源文件如
AssetRegistry.bin
/GlobalShaderCache*.bin
/ShaderBytecode*.ushaderbytecode
; - 支持包含引擎、项目、和插件的ini文件;
- 支持包含外部的文件夹和文件(如lua文件,视频文件等),并且可以自定义挂载点,供运行时访问;
- 打出的pak中可以不包含任何UE的资源文件(只要在HotPatcher中不添加任何资源即可),方便只更新lua的代码或者只更新Ini之类的配置文件;
插件的其他功能:
- 支持基于上一个patch版本再打出一个patch版本;
- 支持检测未cook的资源;
- 支持版本间的diff,可以看到新增、修改、删除(但是删除的资源在之前的版本的pak中是无法删除的,只是diff展示用)的资源信息;
- 支持检测重复的文件包含;
- 支持导出该插件所有的中间生成信息和配置;
- 支持自定义UnrealP