快速资源包加载器

创作者: sighsorry
已更新:2026-04-07 23:20:47
208KB

关于此 MOD

通过缓存资源包,加快大型模组的加载速度

快速资源包加载器

使用大型模组时,通过缓存资源包可加快游戏加载速度。

通过在 Valheim 的 Unity 持久化数据路径下的共享文件夹中,将缓慢的资源包缓存为可复用文件,从而加速重复的模组启动。该实现基于与 DiFFoZ 的相同总体方法。 BepInEx快速加载资源包,但已针对这个以瓦尔海姆为重点的项目进行了改编和精简。 https://thunderstore.io/c/lethal-company/p/DiFFoZ/BepInEx_Faster_Load_AssetBundles_Patcher/

它的作用

  • 它检查已加载的格式版本为6或更新的UnityFS包以进行缓存,并将符合条件的包重新压缩为可复用的LZ4文件。符合条件范围比LZ4HC更广:头部的压缩标志描述的是块信息表,而不一定是包的数据块。如果重新压缩产生的字节完全相同,则会被记录下来,以免在后续加载时重复执行。
  • 安装 FastAssetBundleLoader.dll 在 BepInEx/补丁器两个发布压缩包中均在以下路径包含该DLL 补丁程序/ 并且可以提取到BepInEx目录中。

缓存行为

  • 缓存文件存储在 <Application.persistentDataPath>/FastAssetBundleLoader/cache/v1 默认情况下。在Windows上通常是 %USERPROFILE%/AppData/LocalLow/IronGate/Valheim/FastAssetBundleLoader/cache/v1.
  • 使用相同存储根目录的配置文件会为相同的捆绑包内容复用缓存条目。已更改的捆绑包会获得单独的条目。 v1 是缓存格式版本,而非模组发布版本。
  • 在 BepInEx/config/sighsorry.fast_asset_bundle_loader.cfg,离开 [通用] 缓存根目录 留空则使用默认位置,或设置为其他驱动器上的绝对存储根目录。 快速资源包加载器/缓存/v1 总是追加。不接受相对路径。
  • 旧 缓存目录 设置和缓存位于 BepInEx/缓存 未使用或迁移。现有文件保持不变;共享缓存在符合条件的捆绑包加载时填充。
  • 同一时间只能有一个游戏进程使用指定的缓存目录。如果缓存正忙或无法访问,另一实例将在该次运行中使用原始捆绑包加载,而不进行缓存。现有的 缓存锁文件 文件正常;决定所有权的是打开的文件句柄,而非文件是否存在。
  • 要重置共享缓存,请关闭所有游戏实例,并仅删除专用的 FastAssetBundleLoader/cache/v1 目录。请勿删除 Valheim 存档数据目录。重置缓存会影响共享该位置的所有配置文件。
  • 缓存文件仅在符合条件的资源包实际加载时才会创建。
  • 如果游戏在后台队列完成之前关闭,或者某些资源包只在特定场景中加载,那么单次运行可能无法预热每个缓存条目。因此,后续运行可能会变得更快。
  • 若要更全面地预热,请进入一个世界,而不是停留在大厅,并让游戏持续运行,直到缓存活动稳定下来。不同的游玩路径可能会产生额外的条目,因此并不保证每个已安装的资源包都会被缓存。
  • 缓存可能会根据你使用的模组占用高达几GB的磁盘空间。(在我的情况下超过3GB)
  • 主要可量化的收益是重复加载进入大厅。改进来自 从大厅进入世界 取决于加载了哪些符合条件的捆绑包,并且可能并非在所有配置中都明显。

配置

设置保存在 BepInEx/config/sighsorry.fast_asset_bundle_loader.cfg编辑文件后请重启游戏;修补程序会在启动时读取其配置。

区域 按键 默认 行为
通用 已启用 真 启用资源包缓存和重定向。
通用 缓存根目录 空 使用Unity的持久化数据路径,或指定一个绝对存储根目录。专用 FastAssetBundleLoader/cache/v1 目录已追加。
缓存 最小可用磁盘空间GB 10 跳过创建低于此可用空间阈值的缓存条目。
缓存 保留天数 0 移除未在此天数内重用的缓存条目。0 表示禁用保留清理。

英灵神殿启动参数 忽略空格检查 绕过该进程的可用磁盘空间阈值。该参数不区分大小写,且不会更改已保存的配置。

构建与打包

FastAssetBundleLoader.sln 构建 FastAssetBundleLoader.csproj,生产 bin/Release/netstandard2.1/FastAssetBundleLoader.dll使用 .NET SDK 和一个包含 BepInEx 及游戏托管程序集的 Valheim 安装。在仓库根目录下运行以下 PowerShell 命令:

# 仅构建,不安装 DLL 或创建发布包。 dotnet build .\FastAssetBundleLoader.sln -c Release # 指定非标准游戏安装路径。 dotnet build .\FastAssetBundleLoader.sln -c Release "-p:GamePath=D:\SteamLibrary\steamapps\common\Valheim"

该项目从所选游戏安装目录中获取其 BepInEx 和托管程序集引用路径。 -p:BepInEx路径=... 和 -p:CorlibPath=... 可以显式覆盖那些路径。

游戏部署和包创建是独立的可选操作。替换已安装的DLL之前,请先关闭游戏。

将 DLL 及其 PDB(若存在)复制到 BepInEx/patchers 目录。dotnet build .\FastAssetBundleLoader.sln -c Release -p:DeployToGame=true 在 Windows 上,更新清单版本并创建两个发布 ZIP 包。dotnet build .\FastAssetBundleLoader.sln -c Release -p:CreatePackages=true

部署到游戏 和 创建包裹 默认设置为 假打包创建仅适用于 Windows Release 版本,且不会部署到游戏中,除非 部署到游戏=true 也会一并提供。它会更新 Thunderstore/manifest.json 到程序集版本,并覆盖以下路径中匹配的ZIP文件 雷暴商店 和 奈克瑟斯两个档案都包含 patchers/FastAssetBundleLoader.dll; Thunderstore 的压缩包根目录中还包含 README、更新日志、清单文件和图标。

验证

托管测试将生产捆绑头、哈希、文件和元数据代码与日志桩链接起来。它们需要 .NET 8 运行时,并且可以在没有 Valheim 或 Unity 的情况下运行:

dotnet test .\Tests\FastAssetBundleLoader.Tests.csproj -c Release

PowerShell 7 边界检查会检查已构建的加载器,并使用已安装的游戏和 BepInEx 程序集来测试托管路径。请先以相同配置构建加载器:

dotnet build .\FastAssetBundleLoader.sln -c Release pwsh -NoProfile -File .\Tests\Verify-RuntimeHooks.ps1 -Configuration Release pwsh -NoProfile -File .\Tests\Verify-CacheReservation.ps1 -Configuration Release

对于非标准安装,请传递 -p:游戏路径=... 到构筑和 -游戏路径 ... 每个验证脚本。这些检查不会启动 Valheim、安装 Harmony detours,也不会执行 Unity 原生资源加载。实际游戏验证仍然需要冷缓存和热缓存启动、模组组合,以及客户端、主机和专用服务器运行。

其他让游戏运行更快的模组

  • 启动加速器
  • 本地化缓存

我已使用以下组合测试加载时间。

  • 仅整合包 = 246秒
  • FastAssetBundleLoader + Modpack = 170秒
  • 启动加速器 + 模组包 = 202秒
  • 本地化缓存 + 模组包 = 218秒
  • FastAssetBundleLoader + LocalizationCache + Modpack = 145秒
  • FastAssetBundleLoader + StartupAccelerator + Modpack = 127秒

StartupAccelerator更快,但某些模组可能无法与之正常工作。

Valheim: 英灵神殿 的热门 MOD

探索适用于 Valheim: 英灵神殿 的最佳MOD,带来新功能、升级画面,以及令人兴奋的方式来改变您的游戏体验。

使用 Xmod 解锁 Valheim: 英灵神殿 的全部潜力 — 今天就探索这些顶级 MOD!