Nucleus Co-op 完整指南:3 步把 PC 单机游戏变成本地分屏多人游戏
【免费下载链接】nucleuscoopStarts multiple instances of a game for split-screen multiplayer gaming!项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop
周末,三个朋友挤在你家客厅。想一起玩点游戏,却发现 Steam 库里全是单机大作——《无主之地 2》只支持单人剧情,《求生之路 2》虽然能联机,却必须各开一台电脑。四个人对着四台屏幕隔着耳机喊话,总少了点沙发上抢手柄、互相嘲讽的气氛。
你心想:要是这台电脑能像主机一样分屏就好了。
Nucleus Co-op 就是为了解决这个遗憾而生的免费开源工具。它专攻"PC 游戏本地分屏多人",能在一台 Windows 电脑上同时启动同一款游戏的多个实例,让每个玩家用独立的手柄或键盘各自操作,画面按你的设置排布成上下、左右或 2×2 网格。本指南会带你 3 步跑通首个分屏游戏,再深入原理、实战案例与避坑技巧,让你真正用起来。
项目名片:Nucleus Co-op 是什么、解决什么问题、适合谁
一句话定义:Nucleus Co-op 是 Windows 平台上的"本地分屏启动器",通过多实例运行游戏,把单机游戏变成客厅派对游戏。
它解决的核心痛点有三个:
| 痛点 | Nucleus Co-op 的解法 |
|---|---|
| 游戏默认只支持单人 | 同时启动多个游戏实例,每人一个"独立游戏" |
| 多个实例抢同一份存档/配置 | 用符号链接创建独立游戏文件夹,互不干扰 |
| 多个手柄无法区分输入 | 为每个手柄注入专属 xinput 库,一对一绑定 |
适合谁?
- 想在家用一台电脑和朋友打本地合作游戏的玩家
- 有 2~4 个手柄或想用键盘+手柄混搭的玩家
- 喜欢折腾游戏配置文件、愿意尝试新玩法的进阶用户
需要说明的是:Nucleus Co-op 只负责"启动多个实例 + 分配输入 + 排布窗口",游戏本体仍需要你自己拥有(支持 Steam 版、部分支持非 Steam 版)。
环境准备:安装前需要满足哪些前提条件
在动手之前,先花两分钟确认环境,能省掉后面 80% 的报错。
硬件与系统要求
- 系统:Windows 7 及以上(工具深度依赖 Windows API 与进程管理)
- CPU:至少 4 核;分屏人数越多,需要的核心越多
- 内存:8GB 起步,16GB 更稳(每个游戏实例都是独立进程)
- 显卡:支持多窗口渲染的独显为佳
- 手柄:建议准备 2 个以上 XInput 兼容手柄(Xbox 手柄最省心)
软件依赖清单
| 依赖 | 说明 |
|---|---|
| .NET Framework 4.5+ | 项目主程序基于 .NET,详见Master/Nucleus.Coop.App/Nucleus.Coop.App.csproj |
| Visual C++ 运行库 | 部分游戏与注入组件需要 |
| 游戏本体 | 如《求生之路 2》《无主之地 2》《异形:反应坠落》等 |
获取项目文件
在本地任一目录执行:
git clone https://gitcode.com/gh_mirrors/nu/nucleuscoop仓库中的Master/目录即完整源码工程,游戏配置脚本都集中在Master/Nucleus.Coop.App/games/下。
极速体验:3 分钟跑通第一个分屏游戏
别急着研究源码,先获得一次成功的正反馈,这是最快建立信心的方式。
第一步:找到你已有的游戏
打开主程序后,点开"自动搜索"(对应源码中的AutoFindGames.cs),添加你的 Steam 游戏库目录或游戏安装目录,让工具自动识别受支持的游戏。识别依据是games/文件夹里有没有对应的.js脚本。
第二步:选定游戏并配置玩家数
以《求生之路 2》为例,它的脚本在Master/Nucleus.Coop.App/games/550-Left4Dead2/game.js,单屏最多支持 8 人。选定后:
- 选择玩家数量(建议从 2 人开始)
- 为每位玩家分配输入设备(手柄 / 键盘)
- 选择分屏布局(左右、上下、2×2)
第三步:点击 Play,坐等窗口排布
Nucleus Co-op 会自动完成备份存档、创建实例、注入输入库、定位窗口等一系列操作。几秒到几十秒后,多个游戏窗口就会按你选择的布局整齐铺满屏幕。
至此你已经完成了第一次分屏。是不是比想象中简单?接下来我们拆解一下它到底做了什么。
原理深潜:用"影子分身术"讲透多实例运行方案
要理解 Nucleus Co-op 的本地分屏原理,可以把它想象成一场精心编排的"影子分身术"。
第一层:分身——每个玩家一个独立副本
游戏通常不允许同时运行两个进程,因为会读写同一份配置文件。Nucleus Co-op 的做法是:用符号链接(symlink)把整个游戏文件夹复制出一份"影子副本",每个实例启动时都指向自己的副本,读写互不干扰。这就是脚本里Game.SymlinkGame = true的含义。
第二层:配钥匙——每个手柄专属的"通道"
只分身还不够,两个手柄插在同一台电脑上,游戏默认会把它们当成同一个输入源。解决方案来自项目集成的 x360ce 技术:为每个手柄生成一份专属的 xinput DLL,它只响应该手柄的信号,并把信号"翻译"成游戏能识别的标准输入。相当于给每把锁配了一把专属钥匙。
第三层:对表——进程与窗口的实时监控
所有实例启动后,工具会以固定频率(如Game.HandlerInterval = 100,即每秒 10 次)轮询进程状态,找到每个游戏窗口并精确摆放到分屏格子里,同时监控崩溃与卡死。
整个过程在GameManager、BackupManager与各Module的协作下完成,核心代码集中在Master/Nucleus.Gaming/Coop/。你不需要读懂它,但理解这个流程,后面排错会非常有底。
实战走通:两个代表性场景的完整操作流程
场景一:《求生之路 2》四人同屏求生
这是社区支持最成熟的案例,脚本位于games/550-Left4Dead2/game.js。
完整流程:
- 确认游戏已安装,且能正常单人启动
- 打开 Nucleus Co-op,自动搜索到《Left 4 Dead 2》
- 玩家数选 4,分屏布局选 2×2
- 输入设备:2 个手柄 + 2 套键盘分区(游戏支持键盘玩家)
- 点击 Play,等待 4 个实例依次启动
- 在每个窗口内各自建房或加入同一局域网房间
为什么它能稳定运行?脚本里做了几处关键声明:KillMutex提前清理游戏的单例互斥锁,让第二个实例能启动;FileSymlinkExclusions排除autoexec.cfg、config.cfg等敏感文件;StartArguments加上-window强制窗口化。这些配置让"多实例"从不可能变成可能。
场景二:《无主之地 2》双人刷宝
双人联机刷装备是很多玩家的梦想。它的脚本games/Borderlands2.js提供了更精细的控制:
- 每位玩家可单独指定
Save ID(存档槽位),互不覆盖 - 启动参数自动附带
-AlwaysFocus -windowed,避免窗口失焦卡顿 - 游戏内分辨率由工具按分屏格子自动计算注入
操作要点:双人模式下,用"左右分屏 + 2 个手柄"的体验最佳;若一人用手柄一人用键盘,脚本会自动为键盘玩家追加-NoController参数。
场景三(进阶预览):《异形:反应坠落》自定义关卡
《异形:反应坠落》的脚本(games/AlienSwarmReactiveDrop.js)内置了数十个战役关卡的名称与命令行映射,选好关卡后工具会直接以指定地图启动,省去控制台输入。
进阶调优:性能优化与自定义玩法的关键参数
性能优化清单
| 优化项 | 具体做法 |
|---|---|
| 画质 | 每个实例使用中等画质,关闭抗锯齿 |
| 垂直同步 | 关闭,减少输入延迟 |
| 分辨率 | 手动降低分屏格子分辨率,换取更高帧率 |
| 存储 | 优先使用固态硬盘,加快多实例加载 |
| 后台程序 | 关闭浏览器、直播软件等占内存应用 |
理解游戏脚本的关键参数
每个游戏的.js脚本本质是一份"配置说明书",几个常用参数值得认识:
Game.MaxPlayers = 4; // 最大玩家数 Game.SymlinkGame = true; // 是否对游戏目录做符号链接分身 Game.SupportsKeyboard = true; // 是否允许键盘玩家 Game.StartArguments = "-windowed -AlwaysFocus"; // 追加的启动参数 Game.Hook.XInputNames = ["xinput1_3.dll"]; // 注入的输入库名称想自定义?把games/下任意脚本复制一份改名,改完参数后在游戏库中刷新即可生效。但要注意:参数含义以脚本注释与社区文档为准,不要盲目修改。
布局与按键的高级玩法
- 混合布局:4 人场景中,2×2 比 4×1 更省性能、更护眼
- 键盘分区:一个键盘可通过按键映射软件划分出多套按键区,实现"一键盘两用"
- 保存配置模板:每款游戏的布局与设备分配会被记住,下次一键复用
避坑手册:分门别类整理常见报错与解决办法
游戏启动失败类
| 现象 | 排查思路 |
|---|---|
| 第一个实例正常,第二个起不来 | 检查脚本KillMutex是否声明了游戏的单例锁名称 |
| 提示缺少 DLL | 安装最新 Visual C++ 运行库 |
| 游戏闪退 | 先单人模式确认游戏本身可运行,再以管理员身份运行 Nucleus Co-op |
| 只有"半屏"出现 | 确认布局格子数与玩家数一致,检查显卡是否支持多窗口 |
输入设备冲突类
| 现象 | 排查思路 |
|---|---|
| 两个手柄控制同一个角色 | 检查 xinput 注入是否生效,确保每个手柄有独立 ID |
| 键盘玩家无法操作 | 确认脚本声明了SupportsKeyboard,并正确分配按键区 |
| 手柄时好时坏 | 更新手柄驱动,插拔后重新识别 |
存档与配置异常类
- 存档被覆盖:正常情况下工具会在会话结束自动还原备份(
BackupManager负责),若还原失败,可手动把备份文件拷回原目录 - 画质设置被重置:脚本已通过
FileSymlinkExclusions排除关键配置文件时不会发生;若发生,多半是排除列表不全
性能不足类
- 帧数过低:降低分辨率与画质,或改用 2×2 之外更省资源的布局
- 内存吃紧:关闭后台程序,或减少同时运行的实例数
生态与想象:社区贡献、扩展能力与未来可能
Nucleus Co-op 的生命力在于社区——它支持的游戏清单,靠的就是玩家们源源不断提交的.js脚本。
想支持一款新游戏?三步走
- 参考模板:打开
Master/Nucleus.Coop.App/games/下任意脚本,对照理解各参数 - 编写脚本:定义可执行文件名、启动参数、互斥锁、输入方案等
- 测试并分享:用调试模式反复验证,稳定后提交给社区
官方支持的游戏参考
从项目仓库可见的脚本来看,目前已覆盖多类热门作品:
| 类型 | 代表 | 参考脚本位置 |
|---|---|---|
| 射击生存 | 求生之路 2 | games/550-Left4Dead2/game.js |
| 角色扮演 | 无主之地、无主之地 2 | games/Borderlands2.js |
| 合作射击 | 异形:反应坠落 | games/AlienSwarmReactiveDrop.js |
| 生存建造 | 饥荒联机版 | games/DontStarveTogether.js |
| 动作冒险 | 黑道圣徒 3 | games/SaintsRow3.js |
未来想象
多实例 + 符号链接 + 输入注入这套方案,理论上对任何"允许重复进程"的引擎都通用。随着硬件核心数持续增长,本地多人复兴的趋势下,这类工具的价值会越来越大——它让"和身边人一起玩"重新成为游戏的一部分。
行动收尾:现在就开始你的第一局分屏游戏
Nucleus Co-op 的价值一句话概括:把"各自抱着电脑联机"变成"围着一台电脑抢手柄",而且完全免费、开箱即用。
接下来请这样做:
git clone https://gitcode.com/gh_mirrors/nu/nucleuscoop获取项目- 装好 .NET Framework 4.5+ 与 C++ 运行库
- 用自动搜索定位你的游戏,从 2 人分屏开始第一局
- 稳定后逐步尝试 4 人布局与更多游戏
💡温馨提示:多实例运行会明显吃内存和 CPU,开局前关掉多余程序;另外请务必先备份重要存档,虽然工具自带还原机制,但双保险永远不嫌多。祝你和朋友们,玩得开心!
【免费下载链接】nucleuscoopStarts multiple instances of a game for split-screen multiplayer gaming!项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考