用途
mashup-mods 用于构建跨游戏混搭与全面转换模组,也就是把一款游戏"放进"另一款游戏,例如在现代战争 2 里滑板、在 Skyrim / 艾尔登法环 / 马里奥 64 里玩 Minecraft、在 Minecraft 里运行黑色行动 2。它面向的多是 AI 参与构建的混搭项目,核心不是堆代码,而是先选对最轻的可行路线并把验证标准想清楚。
主要能力与路线
文档把混搭整理为七条路线,其中"直通"本身还细分为三种实现,并给出五种主要模式:
- 移植内容(最轻):把敌人的行为(速度、计时、伤害)从客方游戏中读取或按 wiki 精确数值重实现为宿主模组的 AI 状态机或投射物;素材不直接复制,而是在用户安装上运行时或安装时转换,或用工具重建相似外观。代表案例:把苦力怕加入黑暗之魂、把 Minecraft 方块做成艾尔登法环物品。
- 直通式(两游戏同时运行):客方进程每 tick 发布状态,通过 127.0.0.1 上的共享内存环形缓冲、UDP 或命名管道交换状态,用 JSON lines 或 HTTP 传输控制,GPU 帧可用 DXGI 共享句柄、Vulkan 外部内存或 Spout2;宿主侧插件(SKSE / xNVSE / UE4SS / REFramework / ReShade addon)在宿主的渲染通道内绘制客方几何体,并用宿主的光照与阴影;宿主把玩家附近的碰撞数据回传给客方。案例包括 SkyCraft(Minecraft 在 Skyrim 内)、LibertyCraft(GTA IV 分支)、NewVegasCraft,以及完整的"GTA V 里的真 Minecraft"示例。
- 把游戏反编译成果当库嵌入:libsm64 把超级马里奥 64 反编译为库,输入碰撞与输入,返回马里奥状态与网格;G64 把它嵌入 Garry's Mod。
- 重实现后融合(最重、控制力最强):如 LLM 编写的 Rust 版 MW2 运行时(Bevy + wgpu)与滑板 3 的 Rust 引擎合并,在同一进程内融合。
- 无头重写客方规则、宿主仅作视图:宿主保持真实游戏(武器、模组、多人),只重写客方规则为纯模拟,适合数值型玩法(塔防、卡牌、解谜、俯视 2D、回合制)或无法/不应运行的客方游戏。案例:Minecraft 里的 Bloons TD 6。
使用方式
文档建议在写任何混搭代码前先完成若干准备步骤:确认用户想从客方游戏获得什么(真实行为、还是只是外观或某个机制);命名最接近的路由;在参考文献中找到最接近的先前项目并阅读其 README 与设计文档;为跨越游戏、引擎或进程的每一处状态写下契约(docs/CONTRACT.md),涵盖玩家归属与控制权回收、单位与轴向、通道满载或延迟时的行为、协议版本与字节序、生命周期;在加功能前先选定首个切片与能证明它可用的检查;把计划写入 MODLOG.md 并告知用户需要安装什么、在哪个操作系统上,以及计划与最接近项目的有何差异。实现时建议从最小可验证对象起步(例如先在 B 中正确位置画出来自进程 A 的一个立方体),再逐步加入每帧位置与碰撞。
适用场景
适合希望把一款游戏的内容、机制或规则搬入另一款游戏的模组开发,尤其是能接受离线单机、使用用户自有游戏安装与素材、并可诚实标注 AI 参与构建程度的项目。文档同时列出多种验证"神谕"(oracle)与证据分级方法,用于判断模组是否真的生效。
限制
必须离线、单机或仅在用户自己运行的服务器上使用,绝不接入官方在线服务;客方内容必须来自用户自己的安装或转储,只能发布代码与转换器,不能发布素材;具备联网能力的客方游戏只能在用户离线启动的会话中被启动与挂钩,且绝不能在反作弊运行时进行,被挂钩进程全程保持离线;反作弊无法在离线关闭的客户端绝不挂钩。文档还强调要诚实标注哪些是 AI 构建的、哪些经过真实验证,README、设计文档、合成对端或通过的测试都不算真实运行。