1台电脑4个玩家:Universal Split Screen 免费开源PC游戏分屏上手
2026/9/22 11:03:48 网站建设 项目流程

1台电脑4个玩家:Universal Split Screen 免费开源PC游戏分屏上手

【免费下载链接】UniversalSplitScreenSplit screen multiplayer for any game with multiple keyboards, mice and controllers.项目地址: https://gitcode.com/gh_mirrors/un/UniversalSplitScreen

Universal Split Screen 是一款免费开源的 PC 游戏分屏工具,把只支持单人的 PC 游戏改造成多人同屏的本地多人体验,多套键盘、鼠标和手柄可以同时接入一台电脑。它不用你多买一台主机,也不用加任何付费硬件,编译好就能用。

一图看懂:这个免费开源分屏工具能干什么

不逐条念功能,直接看它对玩家的意义:

能力对玩家意味着什么
识别多套输入设备两人的键鼠各干各的,互不串键
把画面切分成多块两人或四人共享一屏,各自独立视角
预置主流游戏配置Minecraft、Terraria 等选一下就能用
手柄与键盘混接一人拿手柄、一人用键鼠,不用重绑
免费、代码公开自己编译、自己改参数,无费用

从拉取代码到跑起第一局:编译与配置三步

第一步,把仓库拉到本地:

git clone https://gitcode.com/gh_mirrors/un/UniversalSplitScreen

第二步,用 Visual Studio 打开 UniversalSplitScreen.sln,按依赖顺序编译:

  1. 主程序 UniversalSplitScreen:只编 x86;
  2. 输入钩子 HooksCPP:x86 与 x64 各编一遍,得到 HooksCPP32.dll 和 HooksCPP64.dll;
  3. 注入器 InjectorLoader:x86 与 x64,得到 IJx86.exe 和 IJx64.exe;
  4. 启动钩子 StartupHook:x86 与 x64,得到 StartupHook32.dll 和 StartupHook64.dll。

构建后步骤会自动把产物改名并拷进主程序目录;Source Engine 游戏另需 x86 的 SourceEngineUnlocker。

第三步,载入预置配置。预置配置放在 Config/ 目录,Minecraft、Terraria、Source Engine 等游戏都有现成 JSON,启动主程序后在下拉框选中即可。

它凭什么做到:三块机制三分钟看懂

机制部分不贴代码,只说结论。

输入分离:手柄键盘混用时各认各的窗口

原始输入模块(RawInput/ 目录)在设备被系统首次上报时记下它的身份。之后每次按键、每次移动,程序都清楚它属于哪套设备,只转发给对应窗口。你按 W,不会替朋友的角色挪一步。

进程注入钩子:不改游戏,只改它读到的结果

注入器会把一个很小的 DLL 送进游戏进程,这一步由 HooksCPP 和 StartupHook 完成。DLL 落地后拦截游戏常调用的查询,比如"前台窗口是哪个""鼠标现在在哪",并返回被服务玩家对应的答案。游戏以为自己还是正常单人局。

窗口布局:切好屏幕并锁住位置

窗口管理把游戏窗口挪到指定位置、切成目标尺寸,还能关边框、锁位置,防止游戏自己跳回全屏。每个玩家的画面固定在自己那块区域里。

给《我的世界》配上分屏:一份精简 JSON 配置

Minecraft 适合当例子:原版只认一个玩家,画面里只有一个视角。仓库带了 1.14.3 的预置配置,关键字段如下:

{ "OptionsName": "Minecraft 1.14.3", "SendNormalMouseInput": true, "SendNormalKeyboardInput": true, "SendScrollwheel": true, "SendWM_ACTIVATE": true, "Hook_GetForegroundWindow": true, "Hook_GetCursorPos": true, "Hook_SetCursorPos": true, "Hook_GetAsyncKeyState": true, "Hook_XInput": false, "DrawMouse": true, "Hook_UseLegacyInput": true, "EndVKey": 35 }
字段含义
SendNormalMouseInput / SendNormalKeyboardInput走标准消息通道转发鼠标和键盘,通常开着
Hook_GetForegroundWindow / Hook_GetCursorPos拦截游戏对当前窗口和鼠标位置的查询
DrawMouse在窗口上画指针,每个玩家看得到自己指着哪
EndVKey键盘键码上界,决定键盘如何在多玩家间切分

选中这份配置后,把已运行的 Minecraft 窗口纳入管理,按玩家数切分屏幕,第二块视角就出来了。

多人同屏更顺滑的调优清单

  • 手柄与键盘混用时,打开配置里的 Hook_XInput,并按玩家分别设置控制器序号
  • 键鼠尽量插在不同 USB 口,确认没被其他输入类软件占用
  • 多显示器布局用扩展模式,把窗口拖到副屏边缘;同屏玩法留在主屏
  • 降低输入延迟:关掉 Windows 游戏模式和第三方覆盖层
  • 帧数吃紧先降游戏内画质,再考虑减少同屏窗口数
  • 主程序保持 x86,钩子 DLL 按游戏进程的 32/64 位配对

踩坑速查:现象、原因、处理办法

现象常见原因处理办法
新插键鼠不出现在列表驱动没就绪或被其他程序占用重插 USB,关掉占用程序后刷新识别
分屏后明显掉帧多窗口同分辨率,渲染压力叠加先降游戏画质,再减少同屏窗口数
配置不生效JSON 不在配置目录,或保存后没重新载入确认文件在 Config/ 目录,重启主程序重选
两人的鼠标一起动输入没分离,走了同一个通道检查输入分离开关,确认硬件各自独立

社区与后续

欢迎提交 Issue 反馈问题、用 PR 贡献代码,或把自己的游戏配置发到仓库共享。后续计划加入更多游戏预置配置与图形化配置界面。

下一步很简单:把第二副手柄或第二套键鼠插上电脑,编译出主程序,先挑一个有预置配置的游戏试一局。跑通之后,再给没配置的游戏建一个属于自己的 JSON。

【免费下载链接】UniversalSplitScreenSplit screen multiplayer for any game with multiple keyboards, mice and controllers.项目地址: https://gitcode.com/gh_mirrors/un/UniversalSplitScreen

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询