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("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]);
}
}
// ...
}"><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 && TPM && (TPM-><span class="pl-c1">RestrictFormatsToRuntimeOnly</span>() == <span class="pl-c1">false</span>))
<span class="pl-c"><span class="pl-c">//</span>--[lipengzha]</span>
{
TArray<ITargetPlatform*> Platforms = TPM-><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 < 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