一个用于的BepInEx模组 英灵神殿,专为 无地图多人通关.
与维京符文罗盘互动不再在地图上显示首领位置。改为拾取一个 维京指南针 ——一种使用次数有限的物品,能让你的视角转向那块石头所指向的Boss,用完后便会碎裂。
地图从未被触碰。看 真的没有地图 因为那需要关心。
| 英灵神殿 | Unity 6000.0.61f1,建造 21981559 |
| BepInEx | 5.4.2333 (BepInExPack_Valheim) |
| .NET 软件开发工具包 | 9.0 — 仅供构建使用;玩家只需安装 BepInEx 即可 |
没有Jotunn,没有ServerSync,没有其他插件依赖。
每个人都需要它。 指南针是真实的物品预制件,因此必须在专用服务器上安装此模组 和 每个连接的客户端上。
每个蘑菇模组随版本一同发布。下载
蘑菇模组插件.zip 从
最新版本,拿着 VegvisirCompass.dll 脱离其
插件/ 文件夹,并将其拖入 BepInEx/plugins/:
Valheim/ └── BepInEx/ └── plugins/ └── VegvisirCompass.dll
在此执行 每个客户端和专用服务器上对于自身即为Valheim目录的服务器——即包含以下内容的文件夹 瓦尔海姆服务器.exe 及其
BepInEx/.
像r2modman和Vortex这样的模组管理器也会通过它们的方式直接加载一个裸DLL文件 导入本地模组 / 手动安装流程。
配置文件会在首次启动时出现在
BepInEx/config/vegvisircompass.cfg.
来自1.4.1或更早版本? 该文件过去以插件GUID命名,
com.dhobbs.vegvisircompass.cfg首次启动时会自动重命名,你的设置也会一并保留——无需任何操作。客户端和专用服务器各有自己的副本,因此两者都会自动重命名。
升级? BepInEx 不会覆盖你配置文件中已存在的设置,因此新的默认值不会应用到已有安装。如果某个版本更改了你需要的默认值,请自行编辑该行,或删除文件让其重新生成。
记住模组必须开启 服务器和每个客户端 —指南针是一个真实的物品预制件,因此没有它的客户端将不会拥有该物品。
五种设置,刻意为之。任何始终只有一个合理取值的,在代码中都是常量,而任何其 关 设置只是禁用,模组就没了——参见 为什么配置这么小.
| 设置 | 默认 | 由…决定 | 笔记 |
|---|---|---|---|
战维吉尔.战利品冷却秒数 |
0 |
服务器 | 共享重新拾取冷却时间,单位为秒。 0 禁用它,随后服务器将完全不进行任何追踪 |
指南针.每个指南针使用次数 |
1 |
服务器 | 指南针在碎裂前能使用多少次 |
米 |
350 |
服务器 | 指南针离其磁石多远仍能工作,仅X/Z轴。 0 移除限制 |
指南针视角平滑 |
3.5 |
客户端 | 摄像机平移所需的秒数,与原生 Vegvísir 保持一致。平移期间会暂时屏蔽鼠标视角——原生实现会将缓动转向与鼠标输入作用于同一字段,若不屏蔽,鼠标一移动平移就会被取消。屏蔽时间上限为 6 秒,并会在截止时间自动解除,因此即使平移被打断,也不会导致你失去摄像机控制。 0 立即转身,无锁定 |
调试.详细日志 |
假 |
任一个 | 记录其所设置阵营的搜刮、RPC、放置、瞄准和使用行为 |
已读取三项服务器设置 仅 里面 服务器请求,在一个
是否服务器() 守卫,它们的值在每次授予罗盘时就被固化进去。客户端编辑自己的副本没有任何作用——不存在配置同步,因为这些值在客户端上从来不会被读取。
另外两个不能滥用。 外观平滑 个人品味,而且
详细日志记录 写入日志。
dotnet build -c Release
游戏程序集直接从本地Steam安装目录引用,而非以供应商形式打包,因此不会提交受版权保护的二进制文件。该路径来源于
瓦爾海姆路徑 默认设置为
C:\Program Files (x86)\Steam\steamapps\common\Valheim;可通过创建以下内容来按机器覆盖它 Directory.Build.user.props (已忽略git):
<Project> <PropertyGroup> <ValheimPath>D:\Games\Valheim</ValheimPath> </PropertyGroup> </Project>
每次构建都会将输出部署到 BepInEx/plugins 所以它可以立即测试。Valheim在运行时会保持DLL打开,因此会话中途重新构建只会发出警告而不会失败——关闭游戏后重新构建即可部署。
未提交任何构建的 DLL。发布 GitHub 版本会运行
.github/workflows/release.yml,它会用自己获取的引用程序集来构建仓库中的每个模组,并将这些 DLL 附加到该发布版本上——因此下载的插件始终对应一个已打标签的提交。
该模组本质上是服务器权威的:服务器决定位置、判定用途和范围,将其烘焙到物品中,并掌控商人放置。客户端只负责请求和渲染。在此基础上暴露的每一项设置都是一个需要别人去堵的漏洞——因此配置从十四项削减到了五项。
其中两个是正在被利用的漏洞,而非可选方案:
替换航海符文行为 关闭了模组。一个客户端设置它 假
掉到原版去了 维格威西尔。交互,而这会写入一个永久性的首领标记——而该服务器的核心原则就是永不写入任何标记。商人知识石 仅在客户端进行了检查。服务器设置的
假 被任何设定它的客户否决了 真,因为
服务器请求 从没看过它。两者都不需要强制执行或配置同步。删除它们便消除了漏洞利用,而第二个的唯一正当用途——让商人保持探索挑战性——已经由距离门控更好地实现了。
其余都是无关紧要的:三个没人会重新调整的图标色调(而且只有在所有人都达成共识的情况下才有效)、一个调了也没好处的防刷屏间隔,以及一个 物品.* 三人组,原本充满敌意—— 显示名称 是什么
指南针 匹配生效后,更改它会使玩家持有的每个罗盘都变成孤立状态。
物品描述 过去用于标明以米为单位的范围,且必须手动编辑才能保持准确;现在不再标注具体数字,因此不会过时。
显而易见的实现方式是重新触发原版Vegvísir触发器,它已经能对准镜头了。这是个陷阱。那条路最终会走向
小地图.发现地点,其调用 添加标记(保存: true) 无条件地
— 即使当 显示地图 是假的。Boss标记会被永久写入每个玩家的存档中,因此一个未启用地图的角色会悄悄积累一整套Boss标记,一旦地图被启用就会立刻显示出来。
所以该模组使用自己的RPC对,从不调用 小地图 完全。
ZoneSystem.m_locationInstances 仅在服务器端填充,因此客户端无法解析Boss的实际位置。原版往返也是出于同样的原因。
拾取时,客户端向服务器发起请求,服务器强制执行冷却时间,解析石头列出的每个位置,并为每个位置返回一次授予。该位置是 已融入物品的自定义数据中,所以 使用 指南针之后完全是本地运行——不再有服务器联系。
原版将商人营地(以及潜能熔炉)视为 独特:一旦放置了一个,就会删除所有其他候选位置。由于只需走到范围内就能放置营地,所以你的商人或锻造坊最终落在哪里,取决于任何人碰巧经过的第一个地点——通常远在它对任何人变得重要之前就已决定。
推迟这件事的明显方法就是先不要放置营地。这是个陷阱,值得记下来。 区域系统.生成区域 呼叫 地点位置 仅当某个区域从未生成过时,才会调用 设置区域已生成 无论内部发生了什么——因此,一个放置被跳过的区域会被标记为已生成且为空, 永久地,而那个候选人再也无法主持这个站点。也不是 已放置实例位置 生成时记录的出生点开关:清除它不会移除任何东西,因为营地的对象早已作为ZDO存在,其生命周期比区域卸载更长。
因此,放置位置完全不受影响,而 演员 而是由商人NPC管理(或 升级站 (用于锻造)。每个候选营地都正常放置。站在其中的角色会在玩家进入原版自身范围时生成,并在玩家离开时再次移除,因此可以同时存在多个临时地点,且它们都不是最终确定。 打开商人商店 (或 打开潜能熔炉)确定了位置:所有其他临时角色都被永久销毁,原版的清理机制终于得以清除多余的候选者。
在已管理的星球上预先存在的熔炉会被自动锁定,而不是允许它为所有人禁用商人延迟——"已放置任何营地"的检查有意忽略了升级器站点。
游戏被要求拉近距离—— ZNetScene.InActiveArea(campPosition, refPos),一次用于主机的参考位置,一次用于每个对等端——而不是以米为单位测量,因此“原版范围”始终保持原版所定义的值。它有意不使用 区域已加载 或 获取所有玩家:专用服务器只加载自身参考位置周围的区域,并且从不为远程客户端实例化玩家,因此两者都无法得知任何人的实际位置。
手工重建那种触及范围才是陷阱,而《英灵神殿》1.0把它变成了一个漏洞。这原本是区域运算——营地区域对玩家区域,在 区域系统.当前活动区域 + 活动远距区域那两个字段不见了。当前活动区域现在是一个 服务器同步,玩家可配置 模拟距离
(获取同步模拟距离()),所以没有常数可供复制,其形状甚至不是区域的方形:在近距离2处,非经典,
在激活区域内进行网络场景点检测 与1.5区切比雪夫框相交,半径为1.75区,会裁剪掉角落。任何我们自己的运算都会成为玩家可以在其下更改的规则的第二份副本,而临时角色会在一个不再匹配服务器实际模拟距离的位置生成或消失。 ZNetScene.InActiveArea 是静态且公开的——使用它。
定居在服务器上通过远程过程调用运行,因为 显示商店界面 /
制作台.交互 是客户端侧的,且客户端不拥有任何敌对行为体的ZDO。settled标记依附于全局键,因此它会持久保存在世界存档中,并在无需模组自身任何同步的情况下到达客户端。指引优先选择已定居的行为体,其次是当前站立者中最近的一个,最后是最近的候选地点。
仅限新世界。 在一个原版已放置了商人营地的世界中,其他候选地点都已消失,再无任何可推迟的事项。系统会自行禁用,并在日志中说明一次;指南针照常工作。而在一个已受管理的世界中,已放置的锻造炉则会被锁定在原地。
默认禁用(冷却秒数 = 0,在这种情况下服务器完全不跟踪任何内容——不记录时间戳,查询直接短路。
启用后依然没有计时器。每次拾取石头时只在内存中保存一个时间戳,并在有人交互时惰性比较,因此开销仅为每次交互一次字典查找,每帧没有任何开销。映射是惰性的——只有石头实际被拾取时才会出现条目——并会在超过阈值后清除过期条目,将活跃集合限制在冷却窗口内被拾取的石头。
该状态刻意保存在内存中,因此 服务器重启时冷却时间会重置。
使用骑乘物品耐久度,提供原生提示计数,并通过物品的ZDO持久保存。 可修复 被禁用——没有它,工作台将重新填充使用次数。
1.7.1 — 修复山岳知识石匹配(山峦符文石)。潜力熔炉罗盘+延迟定居点已在1.7.0版本中上线。
已针对真实的专用服务器完成端到端验证:插件在两侧均能注册,战利品交换能经受真实网络跳转,搜刮、命名、距离检测、相机瞄准、使用计数器、防刷机制以及最后一次使用后的销毁均表现正常。战利品冷却已在单人模式下单独验证,随后默认关闭。携带规则已确认在拾取和搜刮时均生效,因此指南针无法通过先丢弃再拾取的方式复制。
尚未演练:
商人的传说石和希尔德任务指南针的行为改编自 找到哈尔多 经由 奇犽,经许可使用——商户目录、距离关卡和锁定模型均为其所有。
物品栏图标来自 指南针 PBR(Unity)CC0 由 卢西恩·帕维尔,发布于 CC0 并可在以下位置获取 opengameart.org/content/compass-pbrunity-cc0CC0 免除署名要求——此处署名是因为创作者值得这份认可,而非出于义务。
图标已嵌入插件程序集中,因此安装时仍只需一个DLL文件。仅使用图标;该物品在世界中的模型仍借用自原版预制体(克隆源物品)。
依据以下许可发布 MIT 许可证.

修改前置工具
2026-09-12 14:33:53
修改前置工具

史诗战利品
randyknapp2026-09-09 21:20:10
为英灵神殿添加战利品掉落、魔法物品和附魔。

制作 建造 熔炼 烹饪 燃料 从容器中取出
aedenthorn2025-06-30 08:34:14
让你在制作、建造、使用熔炉和窑炉、添加燃料、烹饪食物等时,可以使用附近容器中的资源。

种植一切
Advize2025-09-09 11:15:37
重写了bkeyes93的种植增强模组。允许你的种植者种植浆果丛、蓟、蒲公英、蘑菇、此前无法获取的树种以及其他装饰性植物。还包括许多其他杂项功能(详见

无限制传送门
frostedplaything4102023-09-02 17:39:40
无限制传送门是一个客户端模组,允许玩家通过传送门传送任何物品。该模组提供广泛的自定义选项,让玩家能够控制物品限制、移除限制,

农场格子
Sarcenzzz2023-06-14 11:38:34
允许所有通过种植器种下的植物自动对齐并放置在网格中,确保它们有足够的生长空间。

更好的UI
MKMasa2021-04-15 09:19:42
这个模组对游戏界面做了一些细微的调整。你可以编辑并选择想要启用的更新内容。

更好的射箭
Ishid42026-09-10 16:16:51
为弓术玩法添加了许多功能和改动,包括全新的箭袋系统、可回收的箭矢、更精准的瞄准以及逼真的箭矢物理效果。