一台电脑怎么跑出四人分屏?Nucleus Co-Op 本地多人配置指南
【免费下载链接】nucleuscoopStarts multiple instances of a game for split-screen multiplayer gaming!项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop
你是不是也遇到过这种场面:机器只有一台,游戏里却没有"本地合作模式",朋友们只能干瞪着屏幕。想让单电脑多人游戏真正落地,开源工具 Nucleus Co-Op 的思路值得看——它的目标只有一个:让同一台电脑上的几个游戏实例各占一块屏幕,跑成真正的本地分屏。
它不改游戏,而是隔出几间"独立房间"
你可以理解为:Nucleus Co-Op 不动游戏一行代码,而是给每个玩家隔出一间"独立房间"——同一台电脑上的多个游戏副本,各干各的,互不串门。说白了就三件事:
- 存档隔离:用符号链接给每个实例套一层虚拟游戏目录,配置和存档各写各的;
- 输入分流:一套定制的手柄库,让每只物理手柄只被"自己那份"游戏听见;
- 进程共存:摘掉互斥体(一种系统层面的"先到先得"锁,防止第二个副本被系统直接拒之门外),多个进程和平共处。
最后把每个窗口贴到屏幕各自的区域,一台机器就当四台用。
隔离、分流、共存:三个动作让游戏进程互不打架
隔离——目的:让每个副本有自己的存档和配置。机制:游戏目录不整包复制,而是搭一套指向真实文件的符号链接(symlink),每个玩家实例拿到的是一份自己的"虚拟游戏目录",磁盘占用几乎不增加。像《求生之路2》就把cfg配置目录列入DirSymlinkExclusions黑名单单独特制,其余文件全部走链接。逻辑见 GameHandler 主流程。
分流——目的:四人各按各的手柄。机制:给每个实例目录塞进一份定制的 xinput 手柄库,它只响应指定的那一只手柄,把按键和扳机透传到"手柄 0"的槽位——游戏以为自己只接了一只手柄,实际上每个玩家各持一支,xinput 手柄分流就这么实现的。
共存——目的:让第二个、第三个副本真正起得来。机制:启动前按配置移除游戏的互斥体。《求生之路2》的配置里明确列了hl2_singleton_mutex和steam_singleton_mutext两个名字,不去掉,第二个进程根本跑不起来。具体写法参考 求生之路2 游戏配置。
从零配置到四人同屏,只需 5 步
- ⚠️ 拉取仓库
git clone https://gitcode.com/gh_mirrors/nu/nucleuscoop,用 Visual Studio 打开NucleusCoop.sln,编译Nucleus.Coop.App项目; - ⚠️ 右键"以管理员身份运行"生成的
Nucleus.Coop.App.exe——符号链接和进程操作都需要足够权限; - ⚠️ 点"添加游戏",把路径指向游戏的安装目录,路径必须纯英文,带中文基本必崩;
- 分配玩家数量和每人使用的手柄,选地图和模式;
- 点开始,等窗口弹出、自动归位到各自屏幕区域。
第一次建议先试两人分屏,确认手柄映射正常,再逐步加人到四人。时间预期:以四人《求生之路2》为例,从点开始到丧尸出笼大约 2 分钟,比搭一台局域网服务器省心太多。已经跑通过的组合还有《异形丛生:反应下降》的双人水平分屏。
想玩的游戏不在列表里?自己加一个文件就行
别被名字唬住,适配新游戏不需要改任何 C# 代码:games/目录下每个.js文件就是"一款游戏的分屏插件",里面声明可执行文件名、最大玩家数、存档类型,再写一段 Play 逻辑去改窗口模式和分辨率。比如《求生之路2》的配置还顺手接管了autoexec.cfg的生成——玩家 0 执行map建图,其余玩家自动connect到本机 IP,联机过程全程自动化。社区每多贡献一个文件,所有用户就多一款能分屏的游戏。
省下的不只是三台主机
以前四个人围着一台机器只能轮流开局,现在每人盯自己那块屏幕区域、按自己那只手柄,喊一句"左边掩护"比对着语音软件吼自然得多。接上手柄,今晚就试。
【免费下载链接】nucleuscoopStarts multiple instances of a game for split-screen multiplayer gaming!项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考