当前位置: 首页 > news >正文

三套键鼠共用一个屏幕?Universal Split Screen 本地分屏实测:从拿到源码到顺利开黑

三套键鼠共用一个屏幕?Universal Split Screen 本地分屏实测:从拿到源码到顺利开黑

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

上个周末,两个朋友拎着手柄和键盘来我家,点名要一起玩《泰拉瑞亚》。问题来了:家里只有一台电脑,三个人,三套输入设备,游戏却只认一套键鼠。那晚我折腾到凌晨,也由此摸清了一件事——想在一台 PC 上实现本地多人分屏Universal Split Screen是当下最省心的开源解法。这篇就讲讲我怎么从零把它跑起来,以及过程中踩过的坑。

本地多人为什么这么难

先说清楚痛点在哪。市面上绝大多数 PC 游戏在设计时就默认"一台电脑 = 一个人":

  • 键盘输入只有一个,鼠标指针只有一个
  • 游戏引擎通常只接受一个主输入焦点
  • 很多游戏对窗口化运行都有各种限制,更别提同时开多个实例

所以传统的"本地多人"玩法往往很憋屈:要么一人玩、其他人围观,要么几个人挤在一套键鼠前轮流操作。想在一台电脑上让每个人都握住自己的键鼠、各玩各的角色,游戏本身是做不到的,必须借助外部工具来"架空"它的输入层。

Universal Split Screen 做了什么

简单说,它做的事可以概括成两句话:

  1. 把窗口切成小块,让每个玩家各占一席,支持同屏分割,也支持多显示器各显各的;
  2. 把输入按设备隔离,你按下键盘 A,只有属于你这套键鼠的游戏窗口能收到,鼠标同理,手柄也是独立通道。

换句话说,它不是在游戏里打补丁,而是站在系统层面帮你"翻译"输入信号——这正是它号称"any game"都能用的底气。真正有意思的是它连游戏的窗口焦点都做了处理:普通游戏往往要求窗口必须在前台才能收到按键,它通过注入钩子把这类限制一起绕开了,细节都写在UniversalSplitScreen/目录下的各个子模块里。

上手第一步:把项目跑起来

项目本体是 Visual Studio 的解决方案,获取方式很简单:

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

然后打开根目录的UniversalSplitScreen.sln。需要说明的是,整套工具不是单文件程序,而是由几个模块协作的:

  • UniversalSplitScreen:主程序,负责界面和分屏调度
  • InjectorLoader:把钩子注入游戏进程的加载器
  • HooksCPPStartupHook:负责实际拦截和转发输入的 DLL
  • SourceEngineUnlocker:专为 Source 引擎游戏准备的解锁模块

编译时记得在 Visual Studio 里用Batch Build,一次性把全部项目编出来。编译完把各个 DLL 按项目里的后置脚本自动拷贝到主程序目录即可。我第一次只编了主程序,结果注入器缺 DLL 直接报错,这点务必注意。

实测配置:以《星露谷物语》为例

项目自带了十来个流行游戏的现成配置,放在UniversalSplitScreen/Config目录下,比如《泰拉瑞亚》《星露谷物语》《我的世界》都有,基本都是 JSON 文件,直接能导入。我的配置流程如下:

  1. 开两份游戏:先启动两个游戏实例,各自以窗口模式运行;
  2. 创建分屏窗口:在主程序里添加两个窗口,拖拽到屏幕的左右两侧,各占一半;
  3. 绑定设备:把第一套键鼠指向窗口 A,第二套指向窗口 B;
  4. 载入配置:导入Config下对应游戏的 JSON,比如星露谷就选Stardew Valley.json
  5. 启动注入:点击注入按钮,让两个游戏窗口各自"认领"自己的输入设备。

整个过程没有写一行代码,全靠界面点点点。每份 JSON 里都是一堆开关,比如SendRawMouseInputHook_XInputDrawMouse之类,说白了就是告诉系统"哪些输入要走钩子、哪些直接放行"。普通玩家用默认值就行,遇到问题再去调整对应项。

效果验证:三个人真的能各玩各的

实践结果是喜人的。配置好之后,三个人的光标互不干扰,键盘各按各的,游戏里也能正常打开菜单、拾取物品、对话。那种"三个人挤在同一张桌子上抢鼠标"的画面彻底消失了,客厅一下变成了小型网吧。

不过也要说句公道话:它并非对所有游戏都零门槛。能不能顺利分屏,很大程度取决于游戏对窗口焦点和输入 API 的敏感度。越老派、越"单机化"的游戏越好处理,反作弊较强的联网游戏基本无解——这不是工具的问题,而是游戏自身在屏蔽多开。

新手避坑清单

把这几条记下来,能省掉大半晚上的折腾:

  • 窗口模式是前提:全屏独占模式下分屏无从谈起,先在游戏里切到窗口化;
  • 编译要用 x86:README 里明确写了主程序要在 x86 下编译,别手滑选了 AnyCPU;
  • 配置选错了会"串台":两台游戏如果绑定了同一套键鼠,输入会互相干扰,务必一一对应;
  • 焦点被抢是常见病:游戏窗口偶尔会主动抢前台焦点导致输入失灵,主程序会自动定期把焦点还给桌面来规避,耐心等几秒即可;
  • 手柄玩家别忘开 XInput 钩子:如果控制器没反应,检查对应 JSON 里的Hook_XInput是否为 true。

结语

从"三个人面面相觑"到"三个角色在同一个世界里并肩作战",中间差的不过是一个 Universal Split Screen。它把PC 游戏本地多人分屏这件事的门槛拉到了"会点鼠标就能配"的程度,而且完全免费开源。如果你的愿望清单里恰好躺着几款"买了却因为没人陪而吃灰"的游戏,不妨趁这个周末,把朋友叫到家里来,用三套键鼠重新打开它。现在就动手试试,你离快乐只差一个 clone 的距离。🎮

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

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

http://www.cnnetsun.cn/news/4120400.html

相关文章:

  • eSearch 离线OCR 使用指南:从截屏取字到翻译校对,一篇讲透
  • tt-rss-feedly-theme进阶改造:如何修改_variables.less打造你的专属配色方案?
  • Unity游戏模组框架BepInEx零基础完整教程:从装模组翻车到插件自由
  • G-Helper 实测:免费开源的华硕笔记本性能控制工具,凭什么把官方奥创请下台?
  • B站视频下载加AI总结一次搞定?BiliTools免费工具箱实测,3分钟把收藏夹吃灰的视频变成笔记
  • PDF批量修改有多简单?免费开源的PDF补丁丁5分钟速成指南
  • BmcWeb:log输出
  • flipperzero-rs蓝牙开发:如何打造iBeacon与Eddystone广播应用
  • 如何用纯Python完成Web应用开发?Reflex框架5步实战上手指南
  • 【秣厉科技】LabVIEW工具包——OpenCV 教程(1):Mat 类的基本用法
  • 3分钟上手CodexBar:免登录实时查看OpenAI与Claude使用统计的省钱秘诀
  • 说句扎心的:后端转Agent开发,90%的人第一步就走错了
  • 动漫解说配音用什么声音最合适?哪款动漫配音软件值得推荐?
  • video-analyzer 视频内容分析:一条命令,把任何视频变成一份可搜索的文字报告
  • Windows部署NFSv4.1客户端:从编译驱动到成功挂载的7步完整实战
  • 星露谷物语农场规划器实测:三百小时的老档,我劝你先画图再动工
  • Linux 内核 cortina 以太网驱动竞态高危漏洞 CVE‑2026‑64056 技术解析
  • 【TDengine】如何查看数据库、表的元信息(schema)?
  • Minecraft三层随机生存挑战:数据包实现与极限资源管理
  • 深入解析JavaScript核心机制与高频面试考点
  • 一条命令搞定M3U8视频下载:从网页播放到本地收藏的终极指南
  • ERP系统验收测试指南:如何确保系统满足业务需求
  • async-sema drain() 优雅退出指南:如何安全清理挂起的异步任务与资源
  • 二刷hot100-394.字符串解码
  • Palworld存档转换完整指南:把Level.sav变成看得懂的JSON,再原样变回去
  • 制造业战略执行链路重建实践:用目标地图 + WBS计划 + 任务看板实现端到端贯通
  • 疯狂裂开!AI导出Word居然能把公式变成翔?手把手测评“AI导出鸭”后,我退掉了WPS会员!
  • 个人项目本地启动的准备工作
  • 2026论文降AI工具盘点:六款实测谁更稳
  • 2026论文降AI率工具实测:六款平台谁最靠谱