tag:github.com,2008:https://github.com/hxhb/HotPatcher/releases Release notes from HotPatcher 2024-04-06T10:21:07Z tag:github.com,2008:Repository/223221555/v82.0 2024-04-07T01:54:37Z v82.0 <p>文章: <a href="https://imzlp.com/posts/16808" rel="nofollow">开源杂谈:HotPatcher的开发进展</a></p> <p><a href="https://github.com/hxhb/HotPatcher/releases/tag/v82.0">v82.0</a>相较于上个版本,进行了大量优化和BUG修复。</p> <blockquote> <p><strong>不管在哪个引擎版本中使用HotPatcher,都强烈建议你更新到最新的版本,出现问题也便于排查。</strong></p> </blockquote> <p>更新内容如下</p> <ol> <li>修复在某些情况下<code>*.m.ubulk</code>文件未被打包进去的bug</li> <li>优化了PAK的打包耗时,对大量文件的扫描做了缓存和多线程优化,大幅提升打包速度</li> <li>支持Accompany的COOK模式</li> <li>添加了更多的性能标记</li> <li>优化日志级别</li> <li>支持cache-ddc-only的Cook模式</li> <li>模块启动时自动加载<code>../../../PROJECT_NAME/ShaderLibs</code>目录下的所有ShaderLibrary</li> <li>支持Nanite和WP的COOK</li> <li>WP的差异更新支持(由于WP的<code>One File Per Actor</code>机制,修改WP场景并不会导致关卡资源本身的变动,我扩展了一种检测机制,可以实现WP的差异检测)</li> <li>优化<code>FExternFiles</code>的访问</li> <li>优化Release记录的外部文件从绝对路径变为标记路径</li> <li>修复在UE5中COOK时产生假文件的问题</li> <li>修复导出release时的路径包含<code>//</code>的问题</li> <li>修复PatcherProxy获取到PackageTracker不准确的问题</li> <li>优化PackageTracker的实现,剔除已经Track到的资源</li> <li>优化PackageTracker,可递归Tracker分析</li> <li>统一CollectPakCommand中ParallelFor的锁,避免竞争问题</li> <li>支持-AddAssetsByFile=参数传递一个LongPackageName的列表打包</li> <li>修复ShaderLib未被打包进pak的问题</li> <li>允许在Cook的Cmdlet里添加Pre与Post任务</li> <li>优化插件Slate实现,在Toolbar中支持二级菜单,直接选中打开对应的页面</li> <li>支持监听进程的Crash,并会将Crash文件存储到Saved/HotPatcher/Crashs</li> <li>兼容GameFeaturePacker与ShaderPatcher两个Mods(均需更至最新)</li> </ol> <blockquote> <p>注意,需要修复UE5的一些BUG,才能使HotPatcher的所有功能在UE5里完全正常工作。修复方式见:<a href="https://imzlp.com/posts/16808/#%E9%80%82%E9%85%8DUE5" rel="nofollow">适配UE5</a></p> </blockquote> hxhb tag:github.com,2008:Repository/223221555/v81.0 2023-06-04T08:54:35Z v81.0 <ol> <li>修复CmdlHandler的日志输出问题、DDC Backend配置不Clean</li> <li>Cmdlet支持`TargetPlatformsOverride可替换配置文件中的TargetPlatform</li> <li>执行Patch时可通过<code>NoSearchAllAssets</code>禁止资源扫描</li> <li>优化GC时机</li> <li>修复开启PackageTracker追踪到包含在基础版本里未变动的资源</li> <li>优化Notification输出格式</li> <li>统一patch时的config/release/diff的保存路径规则</li> <li>支持仅Cook Shader类资源</li> <li>支持CookAdvancedOptions选项</li> <li>支持输出PakResults.json记录所有打包的资源及获取接口</li> <li>优化Log输出,非必要不打Error级别的日志</li> <li>避免Cooked文件检查对资源的加载</li> <li>支持ChunkAliasName,作为Chunk的别名,支持中文</li> <li>优化LoadShaderbytecode相关代码</li> <li>修复从加密pak中导入时的AESKey无效问题</li> <li>修复在Linux平台资源分析时的逻辑运算符的歧义</li> <li>添加更多的ProfilingTag</li> <li>更新MOD的版本</li> <li>修复UE5.1 Linux编译错误</li> <li>修复每个Chunk都包含了所有变更的问题</li> <li>修复GetProjectNotAssetDirConfig中多余的%s</li> <li>修复TargetPlatform注册时机晚于CDO的问题</li> </ol> <blockquote> <p>注:本版本暂不支持UE5.2,同时这也应该是支持UE5.1的最后一个版本。因为UE5.2引擎中有实现变化,后续更新的适配中只会支持UE5的最新版本。</p> </blockquote> hxhb tag:github.com,2008:Repository/223221555/v80.1 2023-03-01T02:11:58Z v80.1 <p>更新日志:</p> <ul> <li>修复PackageTrackerAsCluster中无效路径导致的ErrorLog</li> <li>调整Metadata的产出路径</li> <li>支持获取参与打包的资源列表</li> <li>优化PackageTracker的追踪实现</li> <li>修复ForceSkip的Directory/Asset过滤的bug</li> <li>修复多线程处理PakCommand时的竞争</li> <li>修复TargetPlatform注册时机晚于CDO的问题</li> <li>修复PackageTracker的资源没有进包的问题(PackageTracker的资源会进行ForceSkip检测)</li> <li>bSupportWorldComposition默认改为false</li> </ul> hxhb tag:github.com,2008:Repository/223221555/v80.0 2023-01-08T15:36:42Z v80.0 HotPatcher Modular <ol> <li>修复Regular相关的Category不显示问题</li> <li>优化CmdHandler实现,支持Editor和Runtime的Config Override</li> <li>HotPatcher的模块化改造,详见<a href="https://imzlp.com/posts/30178/" rel="nofollow">HotPatcher 的模块化改造和开发规划</a></li> <li>将ByShaderPatch与ByGameFeature分别创建为独立的Mod</li> <li>优化插件的启动流程和优先级,支持模块的扩展</li> <li>支持预览当前已安装的模块及检测单个模块的更新</li> </ol> hxhb tag:github.com,2008:Repository/223221555/v79.0 2022-12-30T02:36:53Z v79.0 <ol> <li>优化基础实现、关闭不必要的Log输出</li> <li>优化对依赖加载材质的额外Shader编译, 支持<code>NoPostLoadCacheDDC</code>参数控制(UE4中需要修改引擎才能使用该优化)</li> <li>优化CookCluster的分配策略</li> <li>优化Pak文件列表收集</li> <li>优化资源分析性能</li> <li>优化模块的可扩展性</li> <li>修复跨引擎版本的兼容性问题</li> <li>修复Shipping的C4172 ERROR</li> <li>修复不支持WP导致的基础包打包错误(<code>Found mor than one redistered Cook Package Splitter</code>)</li> <li>支持<code>PakSaveDirRegular</code>,自定义Pak的输出路径</li> <li>支持PakPreset/CookAndPak以统一的方式执行</li> <li>支持全局的AllowCookPlatforms</li> </ol> <p>源码版引擎的<code>NoPostLoadCacheDDC</code>参数支持需要修改引擎,添加以下<code>[lipengzha]</code>中包裹的代码:</p> <blockquote> <p>Launcher引擎默认不支持该优化,Cook耗时会慢一些,但对功能无影响。</p> </blockquote> <div class="highlight highlight-source-c++ notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="// 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(&quot;NoPostLoadCacheDDC&quot;)); if (!bNoPostLoadCacheDDC &amp;&amp; TPM &amp;&amp; (TPM-&gt;RestrictFormatsToRuntimeOnly() == false)) //--[lipengzha] { TArray&lt;ITargetPlatform*&gt; Platforms = TPM-&gt;GetActiveTargetPlatforms(); // Cache for all the shader formats that the cooking target requires for (int32 FormatIndex = 0; FormatIndex &lt; Platforms.Num(); FormatIndex++) { BeginCacheForCookedPlatformData(Platforms[FormatIndex]); } } // ... }"><pre><span class="pl-c"><span class="pl-c">//</span> Engine/Source/Runtime/Engine/Private/Materials/MaterialInstance.cpp</span> <span class="pl-k">void</span> <span class="pl-en">UMaterialInstance::PostLoad</span>() { <span class="pl-c"><span class="pl-c">//</span> ...</span> <span class="pl-c"><span class="pl-c">//</span>++[lipengzha] cmdlet option for disable cook in PostLoad </span> <span class="pl-k">bool</span> bNoPostLoadCacheDDC = <span class="pl-c1">FParse::Param</span>(<span class="pl-c1">FCommandLine::Get</span>(), <span class="pl-c1">TEXT</span>(<span class="pl-s"><span class="pl-pds">"</span>NoPostLoadCacheDDC<span class="pl-pds">"</span></span>)); <span class="pl-k">if</span> (!bNoPostLoadCacheDDC &amp;&amp; TPM &amp;&amp; (TPM-&gt;<span class="pl-c1">RestrictFormatsToRuntimeOnly</span>() == <span class="pl-c1">false</span>)) <span class="pl-c"><span class="pl-c">//</span>--[lipengzha]</span> { TArray&lt;ITargetPlatform*&gt; Platforms = TPM-&gt;<span class="pl-c1">GetActiveTargetPlatforms</span>(); <span class="pl-c"><span class="pl-c">//</span> Cache for all the shader formats that the cooking target requires</span> <span class="pl-k">for</span> (int32 FormatIndex = <span class="pl-c1">0</span>; FormatIndex &lt; Platforms.<span class="pl-c1">Num</span>(); FormatIndex++) { <span class="pl-c1">BeginCacheForCookedPlatformData</span>(Platforms[FormatIndex]); } } <span class="pl-c"><span class="pl-c">//</span> ...</span> }</pre></div> hxhb tag:github.com,2008:Repository/223221555/v78.0 2022-11-29T07:05:55Z v78.0 <blockquote> <p><strong>注意</strong>:因为UE5仍在早期阶段,Epic每次更新对引擎实现变动都挺大。所以,HotPatcher对UE5的支持只兼容最新引擎版本,暂不考虑UE5其他版本的兼容性(如UE5 EA/EA2/5.0.3等),请升级至UE5的最新版本或继续使用<a href="https://github.com/hxhb/HotPatcher/releases/tag/v77.0">v77.0</a>。<strong>UE4.x</strong>可更新插件的最新版本。</p> </blockquote> <blockquote> <p><strong>特殊说明</strong>:目前暂未适配对UE5 <strong>World Partition</strong>的支持,不要用于打包该类型地图。</p> </blockquote> <ul> <li>支持UE5.1.0(UE5的先前版本不再支持)</li> <li>修复Patch开启PreCachePlatformData的问题</li> <li>修复在Ediror中Cook因GC导致的Crash</li> <li>修复Commandlet流程执行卡住的问题</li> <li>优化跨版本兼容性</li> <li>LICENSE更新,详见<a href="https://github.com/hxhb/HotPatcher#hotpatcher">README</a></li> </ul> hxhb tag:github.com,2008:Repository/223221555/v77.0 2022-10-26T07:03:16Z v77.0 <h2>v77.0</h2> <ul> <li>重构插件在UE5中的Cook机制</li> <li>开启PackageTracker时ForceSkip失效的情况</li> <li>UE5中对目录扫描的问题(<code>/All/Game</code>)</li> <li>修复目录的资源依赖分析问题</li> <li>优化资源扫描,支持强制忽略某个资源</li> <li>支持自定义保存的Cooked目录</li> <li>Cook Cluster计数</li> <li>优化Log输出</li> <li>修复跨引擎版本的兼容性问题</li> <li>Chunk不包含文件从Error改为Warning</li> <li>修复部分HashCaculator未传递问题</li> <li>细节修复与扩展性提升</li> </ul> hxhb tag:github.com,2008:Repository/223221555/v76.3 2022-09-19T04:06:11Z v76.3 <h2>2022.09.19 v76.3</h2> <ul> <li>支持UE5.0.3引擎</li> <li>优化分析变动材质的MaterialInstance进包(<code>bAnalysisMaterialInstance</code>)</li> <li>修复一直启用GenerateGlobalAssetRegistry的问题</li> <li>支持从<code>/Script/UnrealEd.ProjectPackagingSettings</code>下读取<code>bSkipEditorContent</code>控制是否忽略<code>/Engine/Editor*</code>和<code>/Engine/VREditor/</code>下的资源。</li> </ul> <p><a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/91972ffd0de94e3b50916acbb8900b6cd711428bae9805d1d16c4cb68ab2cbd3/68747470733a2f2f696d672e696d7a6c702e636f6d2f696d67732f7a6c702f706963676f2f323032322f32303232303931393131353532342e706e67"><img src="https://camo.githubusercontent.com/91972ffd0de94e3b50916acbb8900b6cd711428bae9805d1d16c4cb68ab2cbd3/68747470733a2f2f696d672e696d7a6c702e636f6d2f696d67732f7a6c702f706963676f2f323032322f32303232303931393131353532342e706e67" alt="" data-canonical-src="https://img.imzlp.com/imgs/zlp/picgo/2022/20220919115524.png" style="max-width: 100%;"></a></p> hxhb tag:github.com,2008:Repository/223221555/v76.2 2022-09-02T03:49:40Z v76.2 <h2>2022.09.01 v76.2</h2> <ul> <li>修复Not-uasset文件的diff差异时未计算HASH的问题</li> <li>修复导出Release时未计算not-uasset文件HASH问题</li> <li>修复FReleasePakParser中未计算文件HASH问题</li> <li>修复CryptoKeys文件未执行ReplaceMark</li> <li>支持给not-uasset目录添加通配符,只会添加匹配的文件</li> </ul> <p><a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/8c347015e751a02c21694551bd4730823533fa5ff429139695b78390c0aaf846/68747470733a2f2f696d672e696d7a6c702e636f6d2f696d67732f7a6c702f706963676f2f323032312f32303232303830313131333130322e706e67"><img src="https://camo.githubusercontent.com/8c347015e751a02c21694551bd4730823533fa5ff429139695b78390c0aaf846/68747470733a2f2f696d672e696d7a6c702e636f6d2f696d67732f7a6c702f706963676f2f323032312f32303232303830313131333130322e706e67" alt="" data-canonical-src="https://img.imzlp.com/imgs/zlp/picgo/2021/20220801113102.png" style="max-width: 100%;"></a></p> <ul> <li>修复bAnalysisFilterDependencies失效的问题</li> <li>开启<code>bImprtProjectSettings</code>时,若只有一个平台,则把所有文件添加至该平台,若有多个平台,则添加至AllPlatforms</li> <li>针对PaperSprite的扫描优化,当PaperSprite配置AtlasGroups时忽略SourceTexture进包</li> </ul> <p><a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/c18f786f1474593ae26dc1b2efe8be805106c30f71be76afd1acd1f97523b180/68747470733a2f2f696d672e696d7a6c702e636f6d2f696d67732f7a6c702f706963676f2f323032322f32303232303833313131343933302e706e67"><img src="https://camo.githubusercontent.com/c18f786f1474593ae26dc1b2efe8be805106c30f71be76afd1acd1f97523b180/68747470733a2f2f696d672e696d7a6c702e636f6d2f696d67732f7a6c702f706963676f2f323032322f32303232303833313131343933302e706e67" alt="" data-canonical-src="https://img.imzlp.com/imgs/zlp/picgo/2022/20220831114930.png" style="max-width: 100%;"></a><br> <a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/2b17f8fa2f444dd21e635b6af748f371190efd5d93ab03f747a8c9e233aae3fa/68747470733a2f2f696d672e696d7a6c702e636f6d2f696d67732f7a6c702f706963676f2f323032322f32303232303833313131353133342e706e67"><img src="https://camo.githubusercontent.com/2b17f8fa2f444dd21e635b6af748f371190efd5d93ab03f747a8c9e233aae3fa/68747470733a2f2f696d672e696d7a6c702e636f6d2f696d67732f7a6c702f706963676f2f323032322f32303232303833313131353133342e706e67" alt="" data-canonical-src="https://img.imzlp.com/imgs/zlp/picgo/2022/20220831115134.png" style="max-width: 100%;"></a></p> <ul> <li>修复Toolbar被隐藏的问题,若想要全局屏蔽可以在<code>ProjectDefinitions</code>中添加<code>DISABLE_PLUGIN_TOOLBAR_MENU</code>宏</li> </ul> hxhb tag:github.com,2008:Repository/223221555/v76.1 2022-08-19T07:41:16Z v76.1 <ol> <li>支持UMultiCookScheduler_MatCulster的Class过滤</li> <li>避免在CookPackage里通过反射获取枚举值(ParallelFor Crash)</li> <li>修复FHotPatcherActionManager的IsActiveAction问题</li> <li>optimize GetAssetPackageGUID</li> <li>支持ImportProjectSettings/HotPatcherAssetManager</li> <li>chunk中支持ForceSkip</li> <li>4.21禁用RTTI实现</li> <li>添加CmdHandler模块</li> <li>跨版本引擎兼容性问题修复</li> <li>修复一些crash问题</li> <li>停止支持ByOriginal的Cook模式(勾选<code>bCookPatchAssets</code>即可)</li> <li>新Mod支持</li> <li>支持第三方Mod开发</li> <li>优化代码组织方式</li> </ol> hxhb