背景
几个月前, 游戏雨中冒险2 (Risk of Rain2)出了新的DLC, 工作之余跟伙伴联机受受苦还是惬意的。RoR2 这个游戏在设计上的一些机制(比如没有小地图)使得本来操作就不精湛的我经常暴毙。暴毙次数一多就会使得联机游玩毫无游戏体验, 变成雨中看戏。
作为一名程序员, 心想我刚学的hello world,还能受这气? 于是研究了一下这个游戏的mod机制. 不研究不要紧, 一研究发现八达鸟。社区上似乎很早就有对基于 Unity 开发的游戏的通用mod框架了.虽然之前在博客上看到, 说unity写的游戏基本上就是"开源游戏", 不过亲自看到还是震撼的. 倒是国内的博客对此记录还是很少的(估计游戏公司都在台面下干这个事情).
与其让游戏公司台面下干这个事情, 倒不如公开发出来, 让热爱游戏的人参与到mod制作中, 为游戏提供更长久的活力.
本文主要对 BepInEx 及其基本工作原理进行简述, 希望能帮助想了解unity游戏mod开发的人入坑
BepInEx
BepInEx(github link), 如其github上的官方介绍所属: “is a plugin / modding framework for Unity Mono, IL2CPP and .NET framework games (XNA, FNA, MonoGame, etc.)” 是一个通用的 unity/XNA 游戏mod框架.
BepInEx及其生态提供了一套几乎可以被称为"SDK"的工具集, 使得开发者只用极少的额外工作(基本上就是下载几个文件并把它们安装在正确的位置)就可以开发游戏的mod代码, 并用自己的代码对unity游戏进行运行时修改. 能做到既不修改游戏的原有代码, 也不修改游戏的启动方式.打上mod之后直接从steam启动也无妨, 甚至其生态系统中还有一些可视化的工具来管理mod.
接下来就介绍一下BepInEx 是如何做