巴隆德核心优化器

创作者: Balrond
已更新:2026-09-05 04:05:29
121KB

关于此 MOD

优化多个游戏内组件的逻辑计算以减轻CPU负担

巴隆德核心优化器

《英灵神殿》客户端 CPU、呈现与查询优化

当前文档目标:Balrond 核心优化器 0.2.0

Balrond 核心优化器(BCO)可减少《英灵神殿》在视觉状态、装备展示、灯光、特效、音频以及频繁查询的世界对象列表方面重复执行的 CPU 运算。它主要针对大型基地、模组密集的世界以及包含大量活动组件的场景而设计。

BCO遵循一条保守规则: 不要为了提升帧数而改变游戏控制权它避开了战斗、AI、网络权限、结构完整性、掉落物品物理和生产时序。当结果已知且未发生变化时,BCO会跳过冗余的呈现/查询工作。更具侵入性的节奏和调度器替换被分隔在 保守模式.

加入巴尔德之巢 · 所有Balrond模组 · 在Ko-fi上支持开发 · 委托咨询


BCO优化什么?

静态与网络支持的视觉效果

  • 盔甲架外观修订关卡 — 跳过重复内容 盔甲架.更新外观 在相关网络支持的数据修订保持不变的情况下进行重建。
  • 物品架视觉修订门 — 当附件的网络状态未发生变化时,避免重建相同的附件视觉效果。
  • 结界/私人区域状态视觉门 — 避免重复 激活 并在保留原版闪光重新触发机制的同时写入自发光。
  • 传送门稳定发射门 —传送门过渡保持全速运行;一旦淡入淡出达到稳定终点,BCO便不再逐帧重写相同的发射颜色。

激进的可选静态优化

  • 盔甲架布料节流 — 用限流的平方距离检查取代原版每帧的布料距离判定。

此功能默认被阻止,同时 保守模式 = true.

角色展示

  • 视觉装备签名门控 — 当已装备物品状态未变化时,避免重复进行装备重建检查。
  • 视觉装备颜色标识门 — 当颜色、模型和生成的视觉实例未更改时,避免重复写入皮肤/头发材质颜色。

颜色门会将玩家模型变更视为失效事件,因此即使RGB值未变,仍会重新应用到新选中的模型上。

激进型可选角色优化

  • 视觉装备全角色修订门槛 — 可以跳过整个 更新视觉效果 在玩家视觉未修改的情况下通过,避免 更新基础模型 外加嵌套装备和颜色相关工作。

此功能默认被阻止,同时 保守模式 = true.

生产展示

  • 熔炉视觉状态门 ——仅缓存表现/动画状态。燃料、矿石、屋顶检测、烟雾模拟和生产仍保持原版。
  • 壁炉视觉状态门 — 在可以运行时跳过稳定的视觉层级,同时保留原版的湿身所有者切换/RPC路径。
  • 烹饪台视觉标识门 — 缓存槽位/状态/点火/燃料的可见表现。烹饪计时和燃料消耗保持原版。

激进的可选空间站优化

  • 制作站闲置休眠 — 香草 自定义更新 总是最先执行。只有在原版计时器达到其空闲阈值之后,BCO 才能从 CraftingStation 更新器源中移除完全空闲的站点。 使用中 扩展查询会再次唤醒它。

此功能默认处于屏蔽状态,同时 保守模式 = 开启.

持续演示和效果

保守配置保留低风险的端点/空操作门可用:

  • 车厢闲置连接闸门 — 一个已经隐藏了牵引绳的分离推车可以跳过多余的 延迟更新 工作,定期与原版进行协调。
  • 效果淡出稳定终点门 — 组件保持启用;BCO 会跳过终端空闲帧,并定期让原版进行协调。
  • 材质渐隐稳定端点门 — 组件保持启用;来自其他模组的直接字段修改在下一帧仍可被观察到。
  • 快速闸门空闲音效 — ZSFX 实例仍会注册到 Valheim 的更新器中。BCO 只会跳过终止性的非循环空工作帧。
  • 线路连接稳定无连接门 — 短暂缓存隐藏/无对等节点的结果以减少重复 找到实例 在仍在协调流式变更的同时继续工作。

激进的可选持续优化

当 保守模式 = false,允许安装以下单独启用的功能:

  • 光照闪烁距离限制 — 近处持久光源保持全速率更新;远处持久光源的更新频率逐步降低。临时/带存活时间/渐隐光源保持原版行为。
  • 中央光照Lod调度器 — 替换一个 光照Lod.更新循环 每个灯光使用一个协程,配合单一时间片调度器,同时保留当前淡入淡出行为。
  • 烟雾渲染呈现节流 ——仅降低渲染器刷新频率;烟雾生成与阻塞模拟保持不变。
  • 烟雾无分配块传输 — 将每次传输的元组分配替换为可复用的移动缓冲区。
  • 烟雾自适应粒子暂存缓冲区 — 稀疏区块从小开始,只在需要时才增长,而不是立即预留原版大小的暂存数组。
  • 风车音频节流 — 减少 更新音频 仅节奏。
  • 车厢音频节流 — 仅降低推车音频更新频率;推车物理和附着保持原版。

这些功能更有可能在复杂场景中带来可见的CPU/帧率提升,但它们会改变更新频率或替换较大的表现循环,因此仍不在默认的保守配置范围内。

精确查询微优化

选定的半径查询保留了 Valheim 的实时集合和遍历语义,但比较的是平方距离,而不是反复计算平方根:

  • 获取半径内所有碎片
  • 获取半径内所有舒适碎片
  • 制作站.更新范围内已知站点
  • 范围内需有建造站
  • 制作站.查找范围内制作站
  • 制作站.查找范围内最近的制作站
  • 范围内存在其他扩展站

BCO读取 当前 原版集合引用而非保留启动快照,从而避免其他模组替换或重建这些集合时出现过时列表行为。


保守模式

保守模式 = true 是0.2.0版本的默认值。

这不行 不 意味着各个功能开关均已关闭。它意味着 BCO 在物理上保持高风险的节奏变更、调度器替换、更新器移除和复杂渲染循环补丁处于未安装状态,同时保留缓存/空操作门控以及等效的查询优化功能可用。

在保守模式下,BCO还将回退对账限制为:

  • 5秒 用于动态视觉缓存;
  • 10秒 用于静态ZDO支持的视觉缓存。

配置文件中的值本身不会被覆盖,因此关闭保守模式后会恢复配置的节奏。

为便于故障排查和确保公开发布版本的准确性,请保持保守模式开启。如需在复制或测试世界中进行受控的性能测试,可将其禁用,并分别对各项激进功能进行基准测试。


和谐兼容模型

BCO 0.2.0 不再将每个外部 Harmony 所有者视为自动冲突。

对于每个确切目标,运行时可以选择三种结果之一:

  1. 活跃 — BCO 拥有并负责该优化的运营。
  2. 已委托 — 另一个已知模组已经占用了相同的性能层面,因此 BCO 故意不在该特定目标上介入。
  3. 已禁用/冲突 — 该组合尚未经过审计,因此 BCO 会故障关闭,而不是猜测补丁顺序。

运行时摘要会报告以下三种状态:

[补丁] 补丁 活动=.../..., 已委派=..., 已禁用=..., 永久阻止=..., 有效覆盖=.../...

有效覆盖 同时计入 BCO 自有的优化项和明确委派的等效项。

BCO会定期重新检查Harmony的所有权,以便对延迟加载的补丁进行协调。配置更改会在下一次Unity更新时请求协调。

英灵神殿社区补丁(VCP)

BCO和VCP在多个优化域上存在重叠。在0.2.0中,如果VCP拥有该 完全相同的BCO目标方法,BCO 将该目标委托给 VCP,而不是进行双重节流或与竞争的快速路径竞速。不重叠的 BCO 优化保持激活。

巴尔德符文轨

当前经审核的RuneRails站点范围后缀可安全地与BCO组合于:

  • 范围内需有建造站
  • 制作站.查找范围内制作站
  • 制作站.查找范围内最近制作站

BCO先执行优化过的原版空间站扫描;随后RuneRails在其后缀中追加或检查其自定义建造者工作站。

巴隆德角色自定义

视觉装备.更新颜色 当该模组拥有对应方法时,将委托给 Balrond 角色自定义模组处理。种族/模型/材质的正确性优先于 BCO 的可选颜色缓存。其他不冲突的 VisEquipment 优化仍然可用。

巴隆德全面重制与巴隆德怪物大乱斗

当前审核的BAO/MM构建与BCO当前的目标集合不重叠。BCO确实 不 假设未来每个巴尔隆德补丁都自动安全:新的完全重叠会默认失败关闭,直到经过审计。

巴隆德更好的建筑

Better Build负责结构完整性/支撑优化。BCO治疗 磨损与撕裂 和 磨损耐久更新器 作为受保护表面,且不争夺支撑权限。

格托网络

FiresGhettoNetworking 仍然是网络与权威方面的专家。BCO 有意避免涉及传输、ZDO 复制、RPC 路由、区域权威以及 同步变换 职责。

帧率保护

FpsProtector 1.0.2 补丁 移除场景对象 和 创建对象 从损坏或空的活跃实例条目以及反复尝试创建缺失预制件中恢复。

BCO 0.2.0 确实如此 不 修补任一方法并处理 网络场景 作为一个受保护的子系统,因此当前版本没有直接的 Harmony 目标重叠。


BCO有意不优化的内容

BCO 0.2.0 有意不 不 补丁或替换:

  • 掉落物品, 漂浮 或掉落物品的刚体物理效果;
  • 同步变换 / 同步动画;
  • ZDOMan, 网络场景, ZRoutedRpc, 零远程过程调用, 网络 或套接字传输;
  • 网络视图注册 / 游戏玩法 RPC 注册;
  • 《英灵神殿》全球 单声道更新器 调度器本身;
  • 磨损撕裂 / 磨损更新器 结构完整性;
  • 玩家战斗、攻击、投射物或伤害权限;
  • AI/寻路/生成模拟;
  • 烟雾生成/阻塞模拟;
  • 生产计时器或资源消耗。

BCO可能会读取现有的本地/ZDO状态来判断演示是否需要刷新,但这会增加 没有自定义RPC协议,没有自定义ZDO键,也没有竞争性的网络权威层.


英灵神殿更新兼容性

BCO不再使用 assembly_valheim 模块版本 ID、程序集版本或原始 IL 的 SHA-256 作为运行时允许/拒绝门控。

那些标识符仅用于诊断。公开或重写程序集可能会改变元数据标记和 MVID,即使方法语义未变,因此在旧版本中全局指纹检查会导致误报不兼容。

当前兼容性在实际集成边界处强制执行:

  • 必须解析出精确的运行时目标签名;
  • 受保护的游戏玩法、网络、物理和支持界面将被拒绝;
  • 已知的 Harmony 所有者可以共存或获得明确授权;
  • 未审核的同目标冲突默认拒绝;
  • 一个 Harmony 安装/签名异常仅在该会话中禁用受影响的门;
  • 当BCO门不可用时,原版始终保持权威性。

没有 允许未知游戏版本 0.2.0 版本中的选项。


我应该期待什么样的性能表现?

性能取决于当前的瓶颈。BCO主要是一个 主线程CPU优化器,不是GPU画质模组。

一个包含大量灯光、摊位、站点、推车、特效和高查询负载物件的密集基地,相比一个已经受限于GPU的小型世界,BCO有更多机会节省工作量。

在早期开发阶段,有一个刻意设计得极为极端的场景,其中包含超过 一个区域内有12万个实例 大约在……被报告 无优化器时5帧,早期优化器版本14帧。仅将其视为压力测试信号, 并非普通世界的FPS承诺.

为什么默认增益看起来很小?

默认的0.2.0配置文件有意保持保守。它不会实际安装影响更大的cadence/scheduler/SmokeRenderer替换项。因此,默认配置侧重于正确性优先的缓存、no-op以及精确查询节省。

如果你在测试BCO能否在CPU瓶颈的密集基地中提升FPS:

  1. 先对默认的保守配置进行基准测试;
  2. 然后测试 保守模式 = 关闭 在同一场景中;
  3. 保持所有其他画面/模组设置不变;
  4. 对比 帧生成时间、1%低帧以及p95/p99尖峰,而不仅仅是平均FPS;
  5. 启用激进功能后,验证灯光、烟雾、装备、生产视觉和多玩家切换。

功能计数器证明工作被跳过了;它确实如此 不 本身就能证明帧率有可测量的提升。


安装

Thunderstore / 模组管理器

使用兼容Thunderstore的模组管理器安装编译好的发布版。该包及依赖链要求预先安装BepInEx。

手动安装

将编译好的 DLL 复制到你的 BepInEx 插件目录中,例如:

Valheim/BepInEx/plugins/BalrondCoreOptimizer/

启动一次英灵神殿,以便BepInEx创建:

BepInEx/config/balrond.astafaraios.BalrondCoreOptimizer.cfg

客户端还是服务器?

BCO 0.2.0 是一个 客户端渲染与查询优化器在批量/专用模式下,它会故意跳过其客户端展示补丁的安装。

玩家可以使用自己的本地设置。为了可复现的故障排查和基准测试,请使用相同的BCO构建和配置来比较客户端。


推荐配置

正常游戏时:

[0 常规] 已启用 = true 保守模式 = true 外部 Harmony 补丁时禁用 = true 兼容性重新检查间隔秒数 = 60 视觉安全刷新间隔秒数 = 30 静态视觉安全刷新间隔秒数 = 30 [9 诊断] 运行时统计 = false

所有单独的优化开关默认设置为 真,但是 保守模式将覆盖激进组的安装 直到它被禁用。

重要的激进默认值,仅在保守模式允许时使用:

[1 静态视觉效果] 盔甲架布料每秒检查次数 = 10 [4 连续呈现] 近距灯光闪烁距离 = 40 中距灯光闪烁距离 = 60 远距灯光闪烁距离 = 100 中距灯光闪烁每秒更新次数 = 10 远距灯光闪烁每秒更新次数 = 5 超远距灯光闪烁每秒更新次数 = 2 灯光闪烁每秒距离检查次数 = 2 灯光LOD每秒距离检查次数 = 1 灯光LOD每帧检查次数 = 512 烟雾渲染器每秒更新次数 = 10 风车音频每秒更新次数 = 10 货车音频每秒更新次数 = 10 [6 内存与GC] 烟雾无分配区块传输 = true 烟雾自适应区块粒子缓冲区 = true 烟雾初始区块粒子容量 = 8

查看 配置/配置.md 在源包中查看完整设置参考。


诊断与基准测试

正常游玩请保留:

运行时统计 = false

为了测试,可以临时启用它。BCO 报告的是间隔差值,而不是仅报告一个生命周期总计,这使得对场景进行受控的 A/B 对比更加容易。

推荐的基准测试流程:

  1. 使用相同的存档、角色、镜头位置和图形设置。
  2. 让场景静置30–60秒。
  3. 在禁用BCO的情况下测量。
  4. 重启并在保守模式下启用BCO进行测量。
  5. 如果需要,可在禁用保守模式后重复此操作。
  6. 比较平均帧率、帧生成时间、1%低帧以及可见的卡顿/掉帧。
  7. 查看BCO补丁摘要以 活跃, 委派, 已禁用 和 有效覆盖 计数。
  8. 验证生产、视觉效果、烟雾行为及多人游戏状态转换。

源包包含 诊断/手动测试计划.md 以及特定组件的边缘情况。


常见问题

BCO会改变玩法吗?

它本就设计成不处理这些。生产时序、掉落物物理、结构支撑、战斗、AI、烟雾遮挡和网络权威仍然不在当前优化器的处理范围内。

为什么可以委派一项优化而不是主动执行?

另一个已知模组可能已经占用了完全相同的性能表面。当该组合经过审核后,BCO可以改为委派目标,而不是叠加两个相互竞争的优化器。被委派的目标会计入 有效覆盖.

为什么一项优化会自行禁用?

如果另一个Harmony所有者修补了完全相同的方法,且该组合尚未经过审核,BCO会优先选择原版/另一个模组,而非未经证实的补丁顺序依赖。

英灵神殿更新后会发生什么?

BCO不会因为构建的MVID或原始IL哈希发生变化就全局拒绝该构建。每个功能在运行时解析其确切的目标签名。缺失或失败的目标会独立回退到原版。

普通玩家需要公开集会吗?

不。公开集会是一种 开发者/构建时依赖 用于编译BCO对通常私有的英灵神殿成员的直接访问。玩家安装编译后的DLL。

BCO能修复缺失预制体或损坏的ZNetScene异常循环吗?

不在0.2.0中。那是网络场景恢复问题,不属于BCO当前的呈现/查询优化范畴。BCO有意保留 网络场景 受保护的。像FpsProtector这样的模组针对的就是那种独立的故障模式。

BCO是修补WearNTear还是注册WearNTear RPC?

不。 磨损与撕裂/磨损破坏更新器 受到保护,且BCO不会调用 注册网络视图 对于游戏对象而言。结构完整性的行为仍然由原版/Better Build和其他专用系统负责。

BCO会优化掉落物品吗?

否。 物品掉落, 漂浮,刚体所有权及 同步变换 是刻意保持原状的。


错误报告与支持

如需报告错误和获取兼容性帮助:

巴隆德的巢穴 — Discord

请包含:

  1. 巴隆德核心优化器版本。
  2. 英灵神殿版本。
  3. 完成BepInEx日志。
  4. 完整模组列表/配置代码。
  5. 单人游戏、本地主机或专用服务器客户端。
  6. 导致问题的确切对象/操作。
  7. 禁用匹配的BCO功能后该问题是否消失。
  8. 巴科 [补丁] 摘要行。
  9. 性能报告:同一场景下测得的帧生成时间或FPS的前后对比。

关于兼容性/加载/兼容性问题,完整的日志比单独一张截图有用得多。


从源代码构建

BCO直接访问通常私有的Valheim成员,以避免热路径中的反射。因此,源项目期望相应的Valheim 公开集会 构建时。

这是仅针对开发者的要求。发布的编译版本不要求玩家安装公开的程序集。


支持开发

Balrond核心优化器及Balrond的其他公开英灵神殿项目现已向社区开放。您的支持将帮助资助维护、兼容性工作、性能分析、文档编写以及未来的性能系统。

在Ko-fi上支持Balrond

如需自定义模组、集成或委托制作:

巴尔隆德的巢穴

公开的错误修复不设付费墙。针对项目的具体实现、私有配置和委托集成可能需要单独报价。

Valheim: 英灵神殿 的热门 MOD

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

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