Nucleus Co-Op 本地分屏上手:从拉代码到四人同屏只需 30 分钟
【免费下载链接】nucleuscoopStarts multiple instances of a game for split-screen multiplayer gaming!项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop
周五晚上,朋友拎着两只手柄推门进来,你俩点开《求生之路2》的图标面面相觑——这游戏天生没有本地分屏模式。缺的那块拼图就是 Nucleus Co-Op:它在 Windows 上把同一款游戏开成多个实例、拼成同一台机器的本地分屏,一人一个窗口、一手柄一个频道,是个免费开源的本地多人补完工具。
老办法有多劝退:本地多人的三笔烂账
以前想让本地双人成行,你大概率挨过这几刀,每一笔都不便宜:
- 存档和配置互踩。两份进程共用同一个存档目录,一个人改了分辨率,另一个窗口当场变形;改完 A 再改 B,两个人对着同一个 ini 文件拔河。归因很直接:没有多实例管理层,多个进程往同一批文件里写,后动的覆盖先动的。
- 手柄抢输入。Windows 的 xinput 模型骨子里是"一个窗口认固定槽位的手柄",四只手柄插上去游戏只读 1 号位,剩下三只趴在桌面当摆设。不是线坏了,是系统输入模型本来就没打算把键位分给多个窗口。
- 改机改到怀疑人生。教程让你改注册表、换 DLL、加启动参数,一个字符错就得重装;就算侥幸进去了,游戏更新一次全部归零。归因:全是手工作坊式的一次性技巧,没有工具把这套动作固化成可重复流程。
把一份游戏掰成四份:Nucleus Co-Op 的三招
第一招,开房。大白话:不复制游戏本体,给每个实例搭一条"捷径",再单独圈一小块私人区域。实现上是一组符号链接——游戏目录整体 symlink 进本地 Data 目录,适配脚本里的DirSymlinkExclusions、FileSymlinkExclusions字段指定哪些目录和文件要拆成独立副本。对你的好处:不用为第二个人再买一份游戏,磁盘不膨胀,四个实例的配置互不干扰。
第二招,配频道。每只手柄走专属频道。启动时程序往每个实例目录塞一份定制的xinput1_3.dll,这份 DLL 只回应对应编号的手柄,适配脚本里一行Game.Hook.XInputEnabled = true就开启。效果是 4 号手柄再怎么按都串不进 1 号玩家的画面;杂牌手柄则先借内置的 x360ce 映射体系"伪装"成标准 XInput 协议,再交给 Nucleus 分配。
第三招,存档兜底。开局前自动备份,对局结束写回原位,源码见 Master/Nucleus.Gaming/Coop/BackupManager.cs 里的BeginBackup和ExecuteBackup。好处:你拿四开去试邪道打法,祸害完事,原存档还是原存档。
30 分钟跑通:从拉代码到开第一局
四步,每步就一句话加一行解释:
- 拉代码:
git clone https://gitcode.com/gh_mirrors/nu/nucleuscoop拿到完整源码树,主程序是Master/下的 .NET 解决方案。
用 Visual Studio 打开
Master/NucleusCoop.sln,选 Release 编译整个解决方案。 依赖包会自动还原,编完的主程序是Nucleus.Coop.App。运行
Nucleus.Coop.App,首次启动会扫描游戏库并联网拉取每个游戏的 handler(.js 适配脚本)。 扫描不到游戏就去设置里检查游戏库路径。选游戏、选玩家数、把手柄分给人,点开始。 窗口摆放、存档备份、进程监控全是自动流程,你可以去倒水了。
💡 首次运行务必联网;程序别放在需要管理员权限的目录,否则扫描和符号链接都可能卡住。
试刀:四人硬闯《求生之路2》完整流程
L4D2 是本项目适配最成熟的游戏之一。在游戏列表里选中它,会弹出两个额外步骤:选战役、挑模式——这俩选项不是写死的,而是 L4D2 适配脚本里的AddOption声明,连同可执行文件名、玩家上限都从脚本读取:
Game.ExecutableName = "left4dead2.exe"; Game.MaxPlayers = 8; Game.Hook.XInputEnabled = true;这三行的用意很直白:告诉程序游戏叫什么、最多几个人、要不要接管 XInput 输入。选中 Dark Carnival、定 4 人后点开始,自动流程接管:1 号玩家的autoexec.cfg被写入建图指令,其余三人执行connect连上本机"主机";四个窗口摆成田字格,每块屏幕只渲染自己该看的画面。
画面里那个挤满丧尸的停车场,就是你们今晚并肩跑酷的战场。同一套流程在《无主之地2》《异形丛生:反应下降》身上也成立,变的只是每个游戏适配脚本的细节,脚本全部放在 Master/Nucleus.Coop.App/games/ 目录,想给新游戏加适配可以照着抄。
Nucleus Co-Op 翻车排查表:五个最常见的跟头
| 症状 | 根因(一句) | 处置 |
|---|---|---|
| 游戏启动后直接闪退 | 定制的 xinput1_3.dll 注入被杀软判定为可疑行为 | 给游戏目录和 Nucleus 目录都加杀毒白名单 |
| 第二个实例起不来 | 游戏带单例互斥锁(如hl2_singleton_mutex),只允许一个进程活着 | 检查该游戏适配脚本的Game.KillMutex字段是否覆盖到这把锁 |
| 手柄插上没反应 | 非 XInput 手柄没做协议翻译,游戏只认标准手柄协议 | 先在 x360ce 里把手柄映射成标准 XInput,再回 Nucleus 分配 |
| 一局打完,配置乱了 | 进程被强杀,备份恢复流程没走完就断电了 | 打完从程序内正常结束,让存档写回流程跑完再关 |
| 扫描不到任何游戏 | 游戏库路径没加,或程序放在需要管理员权限的目录 | 设置里补库路径,把程序挪到普通用户目录 |
| 两个 Nucleus 同时跑,配置错乱 | 两个程序实例在抢同一个数据目录 | 只保留一个实例,另一个彻底退出 |
🔍 通用原则:排查顺序和启动顺序正好相反——先看输入映射,再看适配脚本字段,最后看杀软和权限,基本能兜住九成问题。
你的配置能带几个人
| 档位 | 建议玩法 | 取舍建议 |
|---|---|---|
| 入门级(双核、内存吃紧) | 稳定双人分屏 | 720p 全低特效,关掉后台一切多余程序 |
| 进阶级(四核、8GB 上下) | 三人或四人同屏 | 1080p 中低画质;游戏吃资源时先降到三开 |
| 高手级(六核以上、16GB+) | 放心四人,优化好的可以挑战更多 | 1080p 高画质,挂着语音软件也不慌 |
🎮 判断标准很朴素:哪个窗口开始掉帧,就是 CPU 或显存先撑不住了——少开一人、降一档画质,别硬顶。
回到那个周五晚:朋友推门进来拎着两只手柄,你不用再对着图标面面相觑。下一步很简单:翻开 games 目录对照一遍你的游戏库,把在列的标题挑出来排进周末。你的游戏库里,有哪一款正等着被解锁?
【免费下载链接】nucleuscoopStarts multiple instances of a game for split-screen multiplayer gaming!项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考