一份关于如何在 PC 上为 BONEWORKS 下载和安装 mod 的指南。
BONEWORKS 是一款用 Unity 打造的纯 VR 物理沙盒游戏,它的 mod 是通过 MelonLoader 而非 BepInEx 加载的。这是它与大多数被 mod 的 Unity 游戏之间的主要区别。一切都在 Thunderstore 上。
我们的示例是 Custom Maps,一个可以让你把社区制作的关卡加载进游戏的地图加载器。它需要另外两个 mod 才能运作,这使它很适合用来展示整套 mod 栈是如何组合在一起的。
系统需求
- 一台运行 Windows 10 或更高版本的 PC。通过 Proton 运行 Linux 也可以,只需额外设置一个环境变量,下文会介绍。
- Steam 上的 BONEWORKS,以及一台 VR 头显和它的运行时。没有平面屏幕模式。
- Microsoft Visual C++ 2015-2019 Redistributable, 64 bit。MelonLoader 需要它。
- .NET Desktop Runtime 6.0, x64。BONEWORKS 是一款 Il2Cpp 游戏,MelonLoader 对这类游戏需要它。
- 几百 MB 的空闲空间,如果你要收集自定义地图则需要更多。
BONEWORKS 是单人游戏,没有反作弊系统。这里的操作不会让你的账号有任何风险。
MelonLoader,而不是 BepInEx
如果你曾为 Lethal Company、Valheim 或大多数其他 Unity 游戏安装过 mod,你用过的是 BepInEx。BONEWORKS 不使用它。
MelonLoader 是由 LavaGang 开发的另一种通用 Unity mod 加载器,对像本作这样的 Il2Cpp 游戏有一线支持。它的原理相同:在游戏启动时进行钩取并加载 mod,但文件夹结构和安装程序是它自己的一套。
MelonLoader 的 mod 是 .dll 文件,放在游戏目录下的 Mods 文件夹里,而不是 BepInEx/plugins。
ModThatIsNotMod
几乎所有你实际会想要的 BONEWORKS mod 都依赖于 gnonme 制作的 ModThatIsNotMod。它是这款游戏的共享库:负责处理自定义物品的加载,为 mod 作者提供针对游戏系统的辅助功能,是整个生态系统赖以构建的基础。
Custom Maps 需要它,以及 FieldInjection。所以我们这个示例的完整 mod 栈是:
MelonLoader -> ModThatIsNotMod + FieldInjection -> Custom Maps
mod 管理器会替你把这一切都处理好。
关于 BONELAB Mod 的说明
BONEWORKS 和 BONELAB 是两款独立的游戏,拥有各自独立的 Thunderstore 社区,但有些包会同时被列在两边。这种交叉列出并不总是有实际意义。
Hitmarkers 是人们最常遇到的例子。它出现在 BONEWORKS 的列表中,但它每一个已发布版本都依赖于 BoneLib,这是一个 BONELAB 的库,在 BONEWORKS 中没有对应物,而且它自己的说明也写着已针对 BONELAB 重做过。在这里安装它不会得到你想要的结果。
一个经验法则:如果一个 BONEWORKS mod 把 ModThatIsNotMod 列为依赖,那它确实是一个 BONEWORKS mod。如果它列出的是 BoneLib,那它就是一个被交叉列出的 BONELAB mod。
使用 Gale 安装
Gale 是最简单的方式,它会替你处理 MelonLoader 的安装。
- 从 Thunderstore 或 GitHub 下载 Gale。
- 打开它并选择 BONEWORKS。
- 让它自动找到你的 Steam 安装,或者自己指定游戏文件夹。
- 打开 Browse mods,搜索 Custom Maps,点击 Install。
- MelonLoader、ModThatIsNotMod 和 FieldInjection 会随之一起安装。
- 点击 Launch game (modded)。
从 Steam 启动 BONEWORKS 会以未 mod 状态启动。请从 Gale 启动。
使用 r2modman 安装
r2modman 的用法是一样的。
- 安装 r2modman 并选择 BONEWORKS。
- 创建一个配置文件(profile)。
- 打开 Online,搜索 Custom Maps,使用 Download with dependencies。
- 点击 Start modded。
两者都可以。Gale 更轻量;r2modman 的平台支持更广。
自行安装 MelonLoader
如果你不想用管理器,或者管理器给你带来了麻烦,这部分值得了解。
先找到你的游戏文件夹。在 Steam 中右键点击 BONEWORKS,然后选择 Manage 和 Browse local files:
C:\Program Files (x86)\Steam\steamapps\common\BONEWORKS
你要找的是 BONEWORKS.exe。
自动安装程序
这是推荐的方式,而且确实很简单。
- 下载 MelonLoader Installer。
- 运行它。它会扫描已安装的 Unity 游戏,应该会自动列出 BONEWORKS。如果没有,使用 Add Game Manually 并指向
BONEWORKS.exe。 - 在列表中点击 BONEWORKS,选择一个版本,然后点击 Install。
警告 - 不要动 nightly builds 开关。Nightly 版本是根据最新提交生成的,经常会出问题。稳定版才是 mod 所依据构建的版本。
手动安装方法
- 下载 MelonLoader.x64.zip。BONEWORKS 是 64 位的。
- 把压缩包里的
MelonLoader文件夹解压到 BONEWORKS 文件夹中。 - 把同一个压缩包里的
version.dll也解压到 BONEWORKS 文件夹中。 - 启动游戏一次,让 MelonLoader 生成它的文件夹,然后退出。
现在你应该会看到 BONEWORKS.exe 旁边有一个 MelonLoader 文件夹、一个 version.dll 和一个 Mods 文件夹。
手动安装 Mod
有了 MelonLoader 之后,安装 mod 就很简单了。
- 打开该 mod 的 Thunderstore 页面,点击 Manual Download。
- 解压这个压缩包。
- 把
.dll复制到你 BONEWORKS 目录下的Mods文件夹中。
对于 Custom Maps 来说,这意味着需要三个独立的下载,因为你还需要 ModThatIsNotMod 和 FieldInjection。请按照该模组 Dependencies 部分列出的版本分别获取,并将每个 .dll 复制到 Mods 文件夹中。
有些模组会随 .dll 附带额外内容,比如地图或模型文件。请阅读模组说明来了解这些文件该放到哪里。例如 Custom Maps 是从它自己的文件夹中读取地图文件,而不是从 Mods 文件夹中读取。
注意 - Thunderstore 压缩包中的 manifest.json、icon.png 和 README.md 是网站用的打包文件,放在 Mods 文件夹里没有任何作用。
使用 TMC App 安装
最后要介绍的是我们自己开发的工具。The TMC App 是我们打造的一款模组管理器兼服务器浏览器,支持一键安装以及 sandboxes(沙盒)功能:为每个游戏建立命名的模组配置,各自拥有独立的加载顺序和部署方式,可随时切换而无需重新下载任何东西。
BONEWORKS 目前还不在其支持的游戏列表中。 添加一款游戏只需要四个 JSON 文件、无需编写代码,工作量很小,而 MelonLoader 类游戏正是这个插件系统所要覆盖的典型场景。
坦白说:这款应用目前处于非常早期的开发阶段。 我们在其 README 中如实说明了这一点,这里也再次强调。其中很多功能只经过了部分测试,所以请把它当作可以搭配 Gale 一起尝试的工具,而不是替代品。如果你尝试了它,请告诉我们你遇到的情况,这是目前对这个项目最有帮助的事情。
它以 GPL-3.0 协议 开源,托管于 github.com/modcommunity/tmc-app。问题反馈和功能请求请提交到 issue 跟踪器,欢迎提交 pull request,仓库中也记录了各游戏的配置格式,如果你想自行添加 BONEWORKS 支持也可以参考。
安装方法:
- Linux:一行命令,无需 root 权限,也不依赖包管理器。
curl -fsSL https://raw.githubusercontent.com/modcommunity/tmc-app/main/scripts/install.sh | sh
- Windows:从发布页面下载
setup.exe或setup.msi。也提供便携版,不过便携版不会注册启动器条目,也不会注册tmc://链接处理程序。 - macOS:从同一个发布页面下载
.dmg。
检查是否安装成功
启动游戏时,MelonLoader 会在游戏旁边打开一个控制台窗口。启动过程中它会先打印自身的版本号,然后逐行列出每个加载的模组,包括模组名称、版本和作者。
日志也会写入磁盘:
BONEWORKS\MelonLoader\Latest.log
当出现问题时,这个文件是首先要查看的地方,也是任何帮你排查问题的人首先会要求你提供的东西。
具体到 Custom Maps,当你安装好地图文件后,该模组会在游戏内添加自己的方式来选择关卡。
在 Linux 上运行
BONEWORKS 是通过 Proton 运行的。MelonLoader 需要一个 DLL 覆盖设置才能被加载,所以请将游戏的 Steam 启动选项设置为:
WINEDLLOVERRIDES="version=n,b" %command%
注意这里是 version,而不是 winhttp。MelonLoader 使用的钩子 DLL 与 BepInEx 不同,把 BepInEx 的启动选项照搬过来是一个常见的错误。
如果你不想手动操作,MelonLoader 安装器也提供了 Linux 版本。Gale 和 r2modman 在通过它们启动游戏时都会自动设置这个覆盖选项。
卸载模组
从 Mods 文件夹中删除对应的 .dll,或者通过你的模组管理器卸载它。
要彻底移除 MelonLoader,请删除游戏目录下的 MelonLoader 文件夹、version.dll、Mods 文件夹以及 UserData 文件夹。MelonLoader Installer 也提供了卸载选项,可以自动帮你完成这些操作。
Steam 的 验证游戏文件完整性 功能不会清理这些内容,因为 Steam 对它没有安装过的文件毫无记录。
故障排查
没有控制台窗口,也没有模组加载。 说明 MelonLoader 没有被加载。检查 version.dll 是否直接放在 BONEWORKS.exe 旁边,以及你是否是从模组管理器而不是 Steam 启动游戏的。
MelonLoader 能加载,但某个模组不行。 打开 MelonLoader\Latest.log。缺少依赖和版本不匹配的问题都会在这里清楚地显示出来。
MelonLoader 在启动时崩溃。 通常是缺少前置组件。请安装 VC++ 2015-2019 x64 可再发行组件包 和 .NET Desktop Runtime 6.0 x64,Il2Cpp 游戏需要这两者。
模组安装成功却毫无效果。 检查一下它是否真的是一个 BONEWORKS 模组。如果其依赖列表中提到了 BoneLib,那它其实是一个被交叉列出的 BONELAB 模组。
游戏更新后一切都坏了。 BONEWORKS 现在更新并不频繁,但一旦更新,MelonLoader 和各个模组都需要跟进适配。可以先清空 Mods 文件夹,确认游戏本体没问题,然后耐心等待。
安装模组后出现 VR 运行时错误。 先尝试不加载模组启动游戏,确认头显那边工作正常。模组问题和 SteamVR 问题在头显里看起来很相似。
结语
一旦你明白 BONEWORKS 用的是 MelonLoader 而不是 BepInEx,并且 ModThatIsNotMod 是其他一切所依赖的基础库,那么 BONEWORKS 的模组安装其实很简单。安装 Gale,安装你想要的模组,然后通过 Gale 启动游戏即可。
BONEWORKS 特有的一个坑是交叉列出的 BONELAB 模组包。安装前请检查依赖列表:ModThatIsNotMod 意味着这是 BONEWORKS 模组,BoneLib 则意味着这是 BONELAB 模组。
如果你想帮上一点忙,TMC App 是开源项目,目前正处于早期开发阶段,你对它的反馈对我们来说非常宝贵。
另请参阅
- BONEWORKS on Thunderstore
- MelonLoader Wiki - 该加载器的官方文档,值得一读。
- MelonLoader on GitHub
- BONEWORKS Modding Discord
- BONEWORKS Wiki
- TMC App
我们会尽力让本指南保持最新,但 MelonLoader 及基于它开发的 mod 会随时间不断变化。如果这里的某项说明与你实际看到的情况不符,请反馈问题,或在本指南的 GitHub 仓库中提交一个 pull request。
如果你有任何问题,或者想在 modding 相关的任何事情上寻求帮助,欢迎加入我们的 Discord 服务器!

