Releases: hxhb/HotPatcher
Releases · hxhb/HotPatcher
v82.0
v82.0相较于上个版本,进行了大量优化和BUG修复。
不管在哪个引擎版本中使用HotPatcher,都强烈建议你更新到最新的版本,出现问题也便于排查。
更新内容如下
- 修复在某些情况下
*.m.ubulk
文件未被打包进去的bug - 优化了PAK的打包耗时,对大量文件的扫描做了缓存和多线程优化,大幅提升打包速度
- 支持Accompany的COOK模式
- 添加了更多的性能标记
- 优化日志级别
- 支持cache-ddc-only的Cook模式
- 模块启动时自动加载
../../../PROJECT_NAME/ShaderLibs
目录下的所有ShaderLibrary - 支持Nanite和WP的COOK
- WP的差异更新支持(由于WP的
One File Per Actor
机制,修改WP场景并不会导致关卡资源本身的变动,我扩展了一种检测机制,可以实现WP的差异检测) - 优化
FExternFiles
的访问 - 优化Release记录的外部文件从绝对路径变为标记路径
- 修复在UE5中COOK时产生假文件的问题
- 修复导出release时的路径包含
//
的问题 - 修复PatcherProxy获取到PackageTracker不准确的问题
- 优化PackageTracker的实现,剔除已经Track到的资源
- 优化PackageTracker,可递归Tracker分析
- 统一CollectPakCommand中ParallelFor的锁,避免竞争问题
- 支持-AddAssetsByFile=参数传递一个LongPackageName的列表打包
- 修复ShaderLib未被打包进pak的问题
- 允许在Cook的Cmdlet里添加Pre与Post任务
- 优化插件Slate实现,在Toolbar中支持二级菜单,直接选中打开对应的页面
- 支持监听进程的Crash,并会将Crash文件存储到Saved/HotPatcher/Crashs
- 兼容GameFeaturePacker与ShaderPatcher两个Mods(均需更至最新)
注意,需要修复UE5的一些BUG,才能使HotPatcher的所有功能在UE5里完全正常工作。修复方式见:适配UE5
v81.0
- 修复CmdlHandler的日志输出问题、DDC Backend配置不Clean
- Cmdlet支持`TargetPlatformsOverride可替换配置文件中的TargetPlatform
- 执行Patch时可通过
NoSearchAllAssets
禁止资源扫描 - 优化GC时机
- 修复开启PackageTracker追踪到包含在基础版本里未变动的资源
- 优化Notification输出格式
- 统一patch时的config/release/diff的保存路径规则
- 支持仅Cook Shader类资源
- 支持CookAdvancedOptions选项
- 支持输出PakResults.json记录所有打包的资源及获取接口
- 优化Log输出,非必要不打Error级别的日志
- 避免Cooked文件检查对资源的加载
- 支持ChunkAliasName,作为Chunk的别名,支持中文
- 优化LoadShaderbytecode相关代码
- 修复从加密pak中导入时的AESKey无效问题
- 修复在Linux平台资源分析时的逻辑运算符的歧义
- 添加更多的ProfilingTag
- 更新MOD的版本
- 修复UE5.1 Linux编译错误
- 修复每个Chunk都包含了所有变更的问题
- 修复GetProjectNotAssetDirConfig中多余的%s
- 修复TargetPlatform注册时机晚于CDO的问题
注:本版本暂不支持UE5.2,同时这也应该是支持UE5.1的最后一个版本。因为UE5.2引擎中有实现变化,后续更新的适配中只会支持UE5的最新版本。
v80.1
更新日志:
- 修复PackageTrackerAsCluster中无效路径导致的ErrorLog
- 调整Metadata的产出路径
- 支持获取参与打包的资源列表
- 优化PackageTracker的追踪实现
- 修复ForceSkip的Directory/Asset过滤的bug
- 修复多线程处理PakCommand时的竞争
- 修复TargetPlatform注册时机晚于CDO的问题
- 修复PackageTracker的资源没有进包的问题(PackageTracker的资源会进行ForceSkip检测)
- bSupportWorldComposition默认改为false
v80.0 HotPatcher Modular
- 修复Regular相关的Category不显示问题
- 优化CmdHandler实现,支持Editor和Runtime的Config Override
- HotPatcher的模块化改造,详见HotPatcher 的模块化改造和开发规划
- 将ByShaderPatch与ByGameFeature分别创建为独立的Mod
- 优化插件的启动流程和优先级,支持模块的扩展
- 支持预览当前已安装的模块及检测单个模块的更新
v79.0
- 优化基础实现、关闭不必要的Log输出
- 优化对依赖加载材质的额外Shader编译, 支持
NoPostLoadCacheDDC
参数控制(UE4中需要修改引擎才能使用该优化) - 优化CookCluster的分配策略
- 优化Pak文件列表收集
- 优化资源分析性能
- 优化模块的可扩展性
- 修复跨引擎版本的兼容性问题
- 修复Shipping的C4172 ERROR
- 修复不支持WP导致的基础包打包错误(
Found mor than one redistered Cook Package Splitter
) - 支持
PakSaveDirRegular
,自定义Pak的输出路径 - 支持PakPreset/CookAndPak以统一的方式执行
- 支持全局的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
注意:因为UE5仍在早期阶段,Epic每次更新对引擎实现变动都挺大。所以,HotPatcher对UE5的支持只兼容最新引擎版本,暂不考虑UE5其他版本的兼容性(如UE5 EA/EA2/5.0.3等),请升级至UE5的最新版本或继续使用v77.0。UE4.x可更新插件的最新版本。
特殊说明:目前暂未适配对UE5 World Partition的支持,不要用于打包该类型地图。
- 支持UE5.1.0(UE5的先前版本不再支持)
- 修复Patch开启PreCachePlatformData的问题
- 修复在Ediror中Cook因GC导致的Crash
- 修复Commandlet流程执行卡住的问题
- 优化跨版本兼容性
- LICENSE更新,详见README
v77.0
v76.3
v76.2
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
- 支持UMultiCookScheduler_MatCulster的Class过滤
- 避免在CookPackage里通过反射获取枚举值(ParallelFor Crash)
- 修复FHotPatcherActionManager的IsActiveAction问题
- optimize GetAssetPackageGUID
- 支持ImportProjectSettings/HotPatcherAssetManager
- chunk中支持ForceSkip
- 4.21禁用RTTI实现
- 添加CmdHandler模块
- 跨版本引擎兼容性问题修复
- 修复一些crash问题
- 停止支持ByOriginal的Cook模式(勾选
bCookPatchAssets
即可) - 新Mod支持
- 支持第三方Mod开发
- 优化代码组织方式