瓦尔海姆建造优化

创作者: RockBreaker
已更新:2026-06-08 05:32:26
87KB

关于此 MOD

一个适用于大型建筑的英灵神殿BepInEx优化插件,具备空间渲染批处理、火焰与光照剔除、可选的磨损计算绕过以及内置性能诊断功能。

英灵神殿建造优化

Valheim建造优化是一个BepInEx客户端基地性能模组。

在24000个实例的基准测试中,平均帧率从约20 FPS提升到了约55 FPS。

平均提升约35帧,比原来大约提高了175%。

结果会因硬件配置、基地布局、激活效果、模组设置以及其他已安装模组的不同而有所差异。

如果你遇到任何问题或有任何建议,欢迎随时在Discord上私信我:draco_alias

它的主要作用是减少由数千个已加载的建筑部件引起的渲染、光照、粒子、结构以及可选诊断工作负载。该模组围绕针对性优化进行设计。只有在模组能够识别出相对安全的情况时,才会改动高开销的系统,而实验性系统则设有独立开关,以便它们在正常游玩过程中可以完全处于休眠状态。

该项目最初是作为构建件性能分析工具开发的,因此它还包含一个可选的游戏内诊断窗口,用于测量场景、渲染、物理、火焰、批处理、碰撞体、脚本和网络活动。

特别感谢 u/keepoursxnity 提供了详细的测试反馈并设计了模组图标!我也要感谢英灵神殿社区的支持、建议和鼓励。

要求

  • 英灵神殿
  • BepInEx 5
  • 运行该模组的客户端

安装 Valheim建造优化.dll 在:

Valheim/BepInEx/plugins/

配置创建于:

Valheim/BepInEx/config/valheim.buildpieceprofiler.cfg

推荐使用BepInEx配置管理器模组,但并非必需。

推荐起始配置

普通用途:

  • 启用火焰优化。
  • 使用 静态光源 开火模式。
  • 启用外部摄像机和几何体后方的火焰剔除。
  • 启用集群火焰代理光源。
  • 为大型静态基地启用渲染器批处理。
  • 仅在您有意禁用支持与天气磨损时,才启用磨损优化。
  • 在刻意测试之前,请关闭阴影优化、静态组件休眠、碰撞体聚类、网络诊断和自动分析器轮询功能。

更新后,现有配置文件会保留原有值。若希望某项设置恢复为新的默认值,请使用配置管理器中的重置按钮。

火焰优化

火焰优化适用于支持的壁炉、火炬、壁灯、火盆、炉膛、篝火及类似火焰物件。

香蕉说明

如果猴子把火棍放进香蕉屋,香蕉屋暖和了,香蕉屋漂亮了,猴子开心了。

但是猴子放了很多火棍。也许太多火棍了。火棍不偷懒。火棍扭动火焰,抛洒火花,发光,思考影子,跳小小的火焰舞。火棍吃掉了帧数香蕉。

猴子看火,没问题。火做火的事。猴子看见漂亮的火。

但猴子没看火的时候,火还在烧。猴子在房子另一边盯着石墙,但火棍还是像猴子在看一样舞动。电脑还在运行。FPS香蕉还是消失了。

模组说:“为什么火会起作用?猴子看不见火。”

隐藏的火光渐渐沉睡。昂贵的大灯进入梦乡。廉价的小香蕉光却保持清醒,让房间看起来依然温暖,不至于死气沉沉。

猴子回头时,火很快醒了。火又扭动起来。火又闪闪发亮。火说:“我在工作。真的。”

同样的香蕉屋。猴子看到时同样漂亮的火焰。猴子看不到时更少的隐形火焰运算。给猴子更高的帧数香蕉。

技术说明

火焰系统仅能发现 壁炉 组件,其部件名称匹配可配置的已知火焰允许列表,并且同时包含灯光和粒子系统。这样可以避免将无关的装饰性效果误判为火焰。

每个候选对象按可配置的间隔进行评估,而不是每帧评估。可见性使用主摄像机视锥体来确定。可选遮挡测试使用有预算的非分配射线检测或球形检测,从摄像机射向火焰。遮挡结果会被缓存,在一次优化器更新期间只允许执行有限数量的全新物理检测。

优化器在两个方面都使用了宽限期:

  • 在优化开始之前,火焰必须保持隐藏。
  • 火必须在恢复原状之前保持燃烧。

这些延迟减少了摄像机经过墙壁边缘或玩家快速转身时的状态切换。

当火焰进入优化状态时,模组会记录:

  • 原始光照启用状态和剔除遮罩;
  • 粒子播放和发射状态;
  • 渲染器阴影投射模式;
  • 已知的光闪烁或光照LOD脚本的启用状态。

原始火光通过剔除遮罩被禁用并从渲染中移除。火焰粒子发射已禁用,现有粒子已清除。已知的火焰光照更新脚本已暂停,以免原版逻辑不断与优化后的状态冲突。

当火焰再次变得相关时,已记录的状态会被恢复。模组在重新点亮视觉系统之前会检查火源是否仍在燃烧,这可以防止已熄灭的火焰被错误地恢复为点燃状态。

静态光照模式

香蕉说明

猴子看不见墙后的十根火棍。

猴子只能透过门口看到温暖的光晕。

十盏花哨的灯仍干十份活。十盏灯为了一点光亮就吃掉帧率香蕉。

模组说:“猴子要的是光晕,不是十个小太阳。”

隐藏的灯光渐入梦乡。一盏简单的香蕉灯照亮了整群人。

房间依旧温馨。电脑不再悲伤。香蕉帧数更高。

技术说明

静态光源 禁用隐藏的原始火焰灯光和效果,但使用无阴影代理灯光保留大致照明。

代理光源采用池化管理。它们被复用,而不是反复创建和销毁,从而减少托管分配和 Unity 对象频繁创建销毁带来的开销。

启用集群代理光源后,同一世界空间单元格内的隐藏火焰会共同贡献为一个代表性光源。该集群会平均源位置和颜色,保守地合并强度,使用最大的源范围,并禁用实时阴影。每个集群光源在每次优化器循环中更新一次。

此模式旨在保留被照亮房间的视觉效果,同时减少动态光源、阴影计算、闪烁脚本和活动粒子系统的数量。

完全剔除模式

香蕉说明

火焰隐藏在第三面石墙后。

猴子看不见火焰。猴子看不见光芒。猴子只看得见石头。

模组说:“跳什么火舞?猴子啥也没看见。”

整场火焰表演都沉寂下来,直到猴子能再次看到它。

不浪费火力舞。更多FPS香蕉。

技术说明

完全剔除 禁用隐藏的原始光源、粒子发射、火焰粒子、光照更新脚本以及火焰网格的阴影投射,且不创建替代光源。

它提供最激进的火焰削弱效果,但隐藏房间透过开口处可能会明显变暗。 静态光 是推荐的画质模式。

空间渲染批处理

香蕉说明

不进行批处理的话,猴子会给画家很多琐碎的小任务。

刷墙一。刷墙二。刷墙三。刷墙四。

画家听到许多命令。电脑累了,FPS香蕉被吃掉了。

使用批处理时,模组说:“这些墙住在一起。来一次大粉刷吧。”

猴子指着整面墙说:

把这大块墙面涂了。

同样的石头。同样的建筑。少骂画师。帧数暴涨,香蕉快乐。

技术说明

渲染器批处理将世界划分为可配置的空间单元格。每个单元格内符合条件的静态建筑部件不透明渲染器会按兼容的渲染状态分组,并合并为生成的网格。

系统会保留原始碰撞体和游戏组件,仅禁用成功合并网格所代表的源渲染器。

当片段可能发生变化或需要独立渲染时,会将其排除。例如:

  • 门、传送门、容器、制作台和机器;
  • 壁炉、灯光和粒子效果;
  • 动画或蒙皮对象;
  • 非运动学刚体;
  • 透明或不兼容的材料;
  • 不支持的网格布局;
  • 光照贴图渲染器;
  • 已配置的名称过滤匹配项。

兼容的渲染器按材质、层级、阴影模式、探针设置、排序状态及其他渲染属性分组。当分组超过配置的顶点限制时,会进行拆分。

碎片发现和单元格重建按帧分配预算。放置、破坏、损坏、修复和生命值变化仅标记受影响的空间单元格以进行延迟重建。该延迟将快速建造变化合并为更少的网格重建。

高亮某个批次片段时,会临时仅启用该片段原有的渲染器,而不是销毁并重建整个单元格。

系统缓存稳定的资格条件、渲染器数组和LOD分类,以避免重复扫描相同的组件层级结构。

渲染批处理目前是超大型静态基地中影响最大的优化手段。

阴影优化

香蕉说明

猴子把许多面墙压成了一幅大画。

画家开心,电脑开心。

但阳光依旧记得旧墙。

一堵墙,投下影子。两堵墙,投下影子。三堵墙,投下影子。

太多替补任务了。第一人称香蕉被啃了。

阴影优化器会尽量减少太阳的阴影形状,使其更简单。

好主意,但太阳很挑剔。有时候太阳不喜欢香蕉数学。

功能尚属实验性,因此在猴子点头之前,它一直休眠在主开关之后。

技术说明

阴影系统是渲染器批处理的一项实验性扩展。它会考虑那些仍然投射实时阴影的兼容不透明合并批次,并尝试用一个仅用于阴影的网格替换多个阴影投射器。

仅当簇满足以下可配置要求时才会被接受:

  • 最小可见源批次;
  • 预估节省的最小阴影绘制调用数;
  • 生成顶点总数上限;
  • 每次绘制调用保存的最大顶点数;
  • 世界空间边界最大尺寸。

精确阴影网格包含位置和三角形数据,不包含不必要的法线或视觉材质数据。当精确簇处于活动状态时,源网格几何体可能会被缓存。

可选简化结构模式用盒状阴影几何体表示已配置的墙壁和屋顶。这可以大幅降低顶点开销,但可能改变阴影轮廓。

阴影优化默认处于禁用状态,因为精确的阴影集群在几何体和剔除精度上的开销可能超过其节省的绘制调用。应将其与渲染器批处理分开测试。

磨损优化

香蕉说明

通常每个建筑部件都会不断询问:

我有依靠吗?头顶有屋檐吗?雨淋到我了吗?我现在湿了吗?那现在呢?

许多碎片提出许多问题。电脑不断回答。FPS香蕉被嚼烂了。

但猴子基地反正不会塌,也不会被雨淋坏。

模组说:“为什么要问不存在的危险?”

每件装备都获得永久强力香蕉柱和永久隐形保护伞。

碎片感到安全。碎片不再追问。电脑归于沉寂。

同款底座。更稳的木质。给猴子更多帧率的香蕉。

技术说明

启用后,该模组会跳过选定的 磨损撕裂 方法:

  • 支持更新已跳过;
  • 支持查询返回可配置的高合成值;
  • 支援检定始终成功;
  • 封面更新已跳过;
  • 普通和灰烬屋顶检查成功;
  • 湿度检查返回假。

系统有意不绕过:

  • 生命值;
  • 直接伤害;
  • 修理;
  • 破坏;
  • 持久化;
  • 普通网络状态。

这会改变游戏玩法。建筑实际上获得完全支撑,雨水或天气不会使受影响的部件变湿。仅当需要此行为时才启用。

静态组件休眠

香蕉说明

有些装饰看似静止,但里面的小猴子每一帧都在不停地转动轮子。

装饰不动。装饰不变。小猴子还在干活。帧率香蕉被啃了。

沉睡者想告诉获准的小猴子:

小睡一会儿。建筑有变化时再醒来。

适合无聊的装饰品。

但模组作者必须小心。有些小猴子看似是装饰,实则在暗中运转机器。选错了猴子打盹,机器就会出故障。

所以功能是谨慎且实验性的。只有经过批准的迷你猴子才能睡觉。

技术说明

该系统会分析构建部件 MonoBehaviour 实现……的类型 更新, 延迟更新,或 固定更新.

睡眠受到以下限制:

  • 一个显式精确类型白名单;
  • 一个游戏脚本拒绝名单;
  • 结构件需求;
  • 刚体与交互安全检查。

已批准的组件可能会在宽限期后被禁用。放置、损坏、修复、生命值变化或高亮显示会恢复它们,并安排另一次休眠尝试。

系统目前在原版英灵神殿中没有广泛验证的默认目标,因此其总开关、性能分析和休眠功能默认处于禁用状态。当总开关关闭时,它不会执行任何发现或事件工作。

复合碰撞体聚类

香蕉说明

底层有一万个微小的隐形盒子。

箱子告诉猴子脚可以站在哪里。箱子也告诉锤子猴子正指着哪块地板。

碰撞体聚类会说:“为什么直线上有这么多小方块?做一个长条形方块吧。”

箱子少,活儿就少。电脑开心。

但猴子锤子很挑剔。猴子选择射线仍然需要知道被击中的确切地板块。

如果答错箱子,猴子就会敲错地板。烂香蕉。

这个功能很巧妙,有风险,而且目前还处于实验阶段。

技术说明

碰撞体系统会搜索已启用、非触发器、静态的 碰撞体 符合条件的结构件上的组件。

它不包括:

  • 附加到移动刚体上的碰撞体;
  • 交互式和动画化的棋子;
  • 灯光与特效;
  • 非盒体碰撞体类型;
  • 已配置的名称过滤匹配项。

兼容的碰撞盒按层和物理材质分组。仅允许世界轴对齐、共线且横截面匹配的碰撞盒合并。

原始碰撞体在玩家附近保持激活。超出配置的激活距离后,符合条件的单元格可启用合并碰撞体并禁用其所代表的原始碰撞体。迟滞间隙用于分隔激活距离与恢复距离。

生成的簇包含一个伤害代理,可将命中映射回最近的原始源碎片。这无法完美保留所有可能的碰撞体查找或模组交互。

系统在当前的大规模基地测试中已被判定为性能损耗。该功能仍可供开发使用,但默认通过总开关禁用。

网络活动诊断

香蕉说明

猴子想知道是哪些机器一直在发香蕉文件。

分析员盯着文书工作。分析员统计谁填的表最多,谁吼得最凶,以及谁老是去烦服务器。

侧写师不会停止文书工作。侧写师只会暗中监视并提交报告。

在猴子测试时很有用。对正常的香蕉生活没什么用。

除非猴子正在排查网络问题,否则别带间谍猴出门。

技术说明

网络诊断系统映射搭建部件 网络视图 组件添加到其 ZDO 记录并可测量:

  • 尝试并更改了ZDO写入;
  • 因数值未变,Valheim 已对写入进行去重处理;
  • 数据修订变更;
  • 所有权变更;
  • 建造部件RPC调用;
  • 活跃的静态和动态写手;
  • 全局发送和接收ZDO计数器;
  • 客户端变更队列。

全局写入和 RPC 钩子仅在网络总开关和性能分析选项同时启用时才会动态安装。系统禁用时,这些钩子会被移除。

此系统目前不限制网络。它是为后续工作提供的诊断基础,默认处于禁用状态。

性能分析器

香蕉说明

猴子打开剪贴板,清点所有东西,写下数字,然后合上剪贴板。

数数能帮猴子看清是什么在消耗FPS香蕉。

但清点巨型基地也是要花功夫的。文员可不是白雇的。

测试时使用。除非猴子确实需要数字,否则不要让猴子每秒重新计数。

技术说明

按已配置的探查键, F7 默认情况下,在分析器启用时打开游戏内窗口。

窗口按折叠区块排列:

  • 全局场景;
  • 全局渲染;
  • 全局物理;
  • 全局效果;
  • 建造部件渲染;
  • 建造件物理;
  • 建筑部件效果;
  • 火焰优化;
  • 渲染器批处理;
  • 阴影优化;
  • 静态组件休眠中;
  • 碰撞体聚类;
  • 网络活动;
  • 轻度违规者。

将鼠标悬停在任意区域或统计数据上,即可查看通俗易懂的说明。

立即投票 执行同步完整快照。它会扫描已加载的对象和建筑部件的子组件,因此巨大的世界可能会短暂停顿。自动轮询默认禁用,并且在超过内置的大世界安全限制时会自动抑制。

性能分析器和自动轮询在正常游戏过程中默认处于禁用状态。

兼容性与安全性

  • 该模组主要为客户端侧,但部分优化会有意更改本地模拟行为。
  • 渲染器批处理会保留原始碰撞体和游戏玩法组件。
  • 火焰优化会在火焰重新生效时恢复记录的视觉状态。
  • 磨损优化会有意改变结构支撑和天气侵蚀玩法。
  • 实验性系统单独控制,默认禁用。
  • 替换火焰预制体、材质、部件层级或碰撞体行为的模组可能需要调整名称列表或安全列表。

在测试实验性功能之前,请备份重要世界,并每次只更改一个系统。在相同位置、相机朝向、天气和图形设置下记录FPS和帧时间。

故障排除

性能分析器无法打开

启用 性能分析器.启用性能分析器,然后按配置的分析器按键。

旧默认设置仍显示为启用

BepInEx会保留已写入配置文件的值。请在配置管理器中重置个别设置,或在游戏关闭时删除配置文件以重新生成所有默认值。

模组火焰未优化

在其内部预制体或对象名称中添加一个唯一片段,以 火焰发现.已知火焰碎片名称标记对象还必须使用一个 壁炉 组件并同时包含光照和粒子系统。

可见火焰优化时间过长

减少火焰恢复宽限期或遮挡缓存持续时间。极低的值会使状态变化更加明显。

启用批处理后建筑外观会发生变化

添加唯一的内部名称片段到 渲染批处理.排除部件名称标记,然后重新加载或切换渲染器批处理。

启用实验性系统后帧率下降

关闭那个系统的 启用系统 总开关。碰撞体聚类、阴影优化、静态组件休眠和网络诊断是开发基础,不建议作为默认优化。

Valheim: 英灵神殿 的热门 MOD

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

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