HotPatcher Versions Save

Unreal Engine hot update manage and package plugin.

v82.0

1 month ago

文章: 开源杂谈:HotPatcher的开发进展

v82.0相较于上个版本,进行了大量优化和BUG修复。

不管在哪个引擎版本中使用HotPatcher,都强烈建议你更新到最新的版本,出现问题也便于排查。

更新内容如下

  1. 修复在某些情况下*.m.ubulk文件未被打包进去的bug
  2. 优化了PAK的打包耗时,对大量文件的扫描做了缓存和多线程优化,大幅提升打包速度
  3. 支持Accompany的COOK模式
  4. 添加了更多的性能标记
  5. 优化日志级别
  6. 支持cache-ddc-only的Cook模式
  7. 模块启动时自动加载../../../PROJECT_NAME/ShaderLibs目录下的所有ShaderLibrary
  8. 支持Nanite和WP的COOK
  9. WP的差异更新支持(由于WP的One File Per Actor机制,修改WP场景并不会导致关卡资源本身的变动,我扩展了一种检测机制,可以实现WP的差异检测)
  10. 优化FExternFiles的访问
  11. 优化Release记录的外部文件从绝对路径变为标记路径
  12. 修复在UE5中COOK时产生假文件的问题
  13. 修复导出release时的路径包含//的问题
  14. 修复PatcherProxy获取到PackageTracker不准确的问题
  15. 优化PackageTracker的实现,剔除已经Track到的资源
  16. 优化PackageTracker,可递归Tracker分析
  17. 统一CollectPakCommand中ParallelFor的锁,避免竞争问题
  18. 支持-AddAssetsByFile=参数传递一个LongPackageName的列表打包
  19. 修复ShaderLib未被打包进pak的问题
  20. 允许在Cook的Cmdlet里添加Pre与Post任务
  21. 优化插件Slate实现,在Toolbar中支持二级菜单,直接选中打开对应的页面
  22. 支持监听进程的Crash,并会将Crash文件存储到Saved/HotPatcher/Crashs
  23. 兼容GameFeaturePacker与ShaderPatcher两个Mods(均需更至最新)

注意,需要修复UE5的一些BUG,才能使HotPatcher的所有功能在UE5里完全正常工作。修复方式见:适配UE5

v81.0

11 months ago
  1. 修复CmdlHandler的日志输出问题、DDC Backend配置不Clean
  2. Cmdlet支持`TargetPlatformsOverride可替换配置文件中的TargetPlatform
  3. 执行Patch时可通过NoSearchAllAssets禁止资源扫描
  4. 优化GC时机
  5. 修复开启PackageTracker追踪到包含在基础版本里未变动的资源
  6. 优化Notification输出格式
  7. 统一patch时的config/release/diff的保存路径规则
  8. 支持仅Cook Shader类资源
  9. 支持CookAdvancedOptions选项
  10. 支持输出PakResults.json记录所有打包的资源及获取接口
  11. 优化Log输出,非必要不打Error级别的日志
  12. 避免Cooked文件检查对资源的加载
  13. 支持ChunkAliasName,作为Chunk的别名,支持中文
  14. 优化LoadShaderbytecode相关代码
  15. 修复从加密pak中导入时的AESKey无效问题
  16. 修复在Linux平台资源分析时的逻辑运算符的歧义
  17. 添加更多的ProfilingTag
  18. 更新MOD的版本
  19. 修复UE5.1 Linux编译错误
  20. 修复每个Chunk都包含了所有变更的问题
  21. 修复GetProjectNotAssetDirConfig中多余的%s
  22. 修复TargetPlatform注册时机晚于CDO的问题

注:本版本暂不支持UE5.2,同时这也应该是支持UE5.1的最后一个版本。因为UE5.2引擎中有实现变化,后续更新的适配中只会支持UE5的最新版本。

v80.1

1 year ago

更新日志:

  • 修复PackageTrackerAsCluster中无效路径导致的ErrorLog
  • 调整Metadata的产出路径
  • 支持获取参与打包的资源列表
  • 优化PackageTracker的追踪实现
  • 修复ForceSkip的Directory/Asset过滤的bug
  • 修复多线程处理PakCommand时的竞争
  • 修复TargetPlatform注册时机晚于CDO的问题
  • 修复PackageTracker的资源没有进包的问题(PackageTracker的资源会进行ForceSkip检测)
  • bSupportWorldComposition默认改为false

v80.0

1 year ago
  1. 修复Regular相关的Category不显示问题
  2. 优化CmdHandler实现,支持Editor和Runtime的Config Override
  3. HotPatcher的模块化改造,详见HotPatcher 的模块化改造和开发规划
  4. 将ByShaderPatch与ByGameFeature分别创建为独立的Mod
  5. 优化插件的启动流程和优先级,支持模块的扩展
  6. 支持预览当前已安装的模块及检测单个模块的更新

v79.0

1 year ago
  1. 优化基础实现、关闭不必要的Log输出
  2. 优化对依赖加载材质的额外Shader编译, 支持NoPostLoadCacheDDC参数控制(UE4中需要修改引擎才能使用该优化)
  3. 优化CookCluster的分配策略
  4. 优化Pak文件列表收集
  5. 优化资源分析性能
  6. 优化模块的可扩展性
  7. 修复跨引擎版本的兼容性问题
  8. 修复Shipping的C4172 ERROR
  9. 修复不支持WP导致的基础包打包错误(Found mor than one redistered Cook Package Splitter
  10. 支持PakSaveDirRegular,自定义Pak的输出路径
  11. 支持PakPreset/CookAndPak以统一的方式执行
  12. 支持全局的AllowCookPlatforms

源码版引擎的NoPostLoadCacheDDC参数支持需要修改引擎,添加以下[lipengzha]中包裹的代码:

Launcher引擎默认不支持该优化,Cook耗时会慢一些,但对功能无影响。

// Engine/Source/Runtime/Engine/Private/Materials/MaterialInstance.cpp
void UMaterialInstance::PostLoad()
{
	// ...
	//++[lipengzha] cmdlet option for disable cook in PostLoad 
	bool bNoPostLoadCacheDDC = FParse::Param(FCommandLine::Get(), TEXT("NoPostLoadCacheDDC"));
	if (!bNoPostLoadCacheDDC && TPM && (TPM->RestrictFormatsToRuntimeOnly() == false))
	//--[lipengzha]
	{
		TArray<ITargetPlatform*> Platforms = TPM->GetActiveTargetPlatforms();
		// Cache for all the shader formats that the cooking target requires
		for (int32 FormatIndex = 0; FormatIndex < Platforms.Num(); FormatIndex++)
		{
			BeginCacheForCookedPlatformData(Platforms[FormatIndex]);
		}
	}
	// ...
}

v78.0

1 year ago

注意:因为UE5仍在早期阶段,Epic每次更新对引擎实现变动都挺大。所以,HotPatcher对UE5的支持只兼容最新引擎版本,暂不考虑UE5其他版本的兼容性(如UE5 EA/EA2/5.0.3等),请升级至UE5的最新版本或继续使用v77.0UE4.x可更新插件的最新版本。

特殊说明:目前暂未适配对UE5 World Partition的支持,不要用于打包该类型地图。

  • 支持UE5.1.0(UE5的先前版本不再支持)
  • 修复Patch开启PreCachePlatformData的问题
  • 修复在Ediror中Cook因GC导致的Crash
  • 修复Commandlet流程执行卡住的问题
  • 优化跨版本兼容性
  • LICENSE更新,详见README

v77.0

1 year ago

v77.0

  • 重构插件在UE5中的Cook机制
  • 开启PackageTracker时ForceSkip失效的情况
  • UE5中对目录扫描的问题(/All/Game)
  • 修复目录的资源依赖分析问题
  • 优化资源扫描,支持强制忽略某个资源
  • 支持自定义保存的Cooked目录
  • Cook Cluster计数
  • 优化Log输出
  • 修复跨引擎版本的兼容性问题
  • Chunk不包含文件从Error改为Warning
  • 修复部分HashCaculator未传递问题
  • 细节修复与扩展性提升

v76.3

1 year ago

2022.09.19 v76.3

  • 支持UE5.0.3引擎
  • 优化分析变动材质的MaterialInstance进包(bAnalysisMaterialInstance
  • 修复一直启用GenerateGlobalAssetRegistry的问题
  • 支持从/Script/UnrealEd.ProjectPackagingSettings下读取bSkipEditorContent控制是否忽略/Engine/Editor*/Engine/VREditor/下的资源。

v76.2

1 year ago

2022.09.01 v76.2

  • 修复Not-uasset文件的diff差异时未计算HASH的问题
  • 修复导出Release时未计算not-uasset文件HASH问题
  • 修复FReleasePakParser中未计算文件HASH问题
  • 修复CryptoKeys文件未执行ReplaceMark
  • 支持给not-uasset目录添加通配符,只会添加匹配的文件

  • 修复bAnalysisFilterDependencies失效的问题
  • 开启bImprtProjectSettings时,若只有一个平台,则把所有文件添加至该平台,若有多个平台,则添加至AllPlatforms
  • 针对PaperSprite的扫描优化,当PaperSprite配置AtlasGroups时忽略SourceTexture进包

  • 修复Toolbar被隐藏的问题,若想要全局屏蔽可以在ProjectDefinitions中添加DISABLE_PLUGIN_TOOLBAR_MENU

v76.1

1 year ago
  1. 支持UMultiCookScheduler_MatCulster的Class过滤
  2. 避免在CookPackage里通过反射获取枚举值(ParallelFor Crash)
  3. 修复FHotPatcherActionManager的IsActiveAction问题
  4. optimize GetAssetPackageGUID
  5. 支持ImportProjectSettings/HotPatcherAssetManager
  6. chunk中支持ForceSkip
  7. 4.21禁用RTTI实现
  8. 添加CmdHandler模块
  9. 跨版本引擎兼容性问题修复
  10. 修复一些crash问题
  11. 停止支持ByOriginal的Cook模式(勾选bCookPatchAssets即可)
  12. 新Mod支持
  13. 支持第三方Mod开发
  14. 优化代码组织方式