如何免费实现PC游戏分屏:单人游戏本地多人教程

📅 2026/8/27 3:05:21
如何免费实现PC游戏分屏:单人游戏本地多人教程
如何免费实现PC游戏分屏单人游戏本地多人教程【免费下载链接】UniversalSplitScreenSplit screen multiplayer for any game with multiple keyboards, mice and controllers.项目地址: https://gitcode.com/gh_mirrors/un/UniversalSplitScreenUniversal Split Screen 是一个免费的 PC 游戏分屏工具把任意 Windows 单人游戏变成本地多人屏幕自动切分每个玩家绑定独立的键盘、鼠标或手柄互不干扰。适合不想开联机服务器、就想和朋友坐在一台电脑前同屏开黑的人。双人玩单人游戏现实中的麻烦没有分屏功能时两个人共用一套键盘鼠标玩单人游戏只能轮流操作一人走位时另一人只能干等抢键盘是家常便饭。想要真正同时操作传统办法是再买一台主机或电脑成本直接翻倍。Universal Split Screen 的思路是把输入设备拆开分配一台机器、一个屏幕、两套独立输入额外硬件只需要多一套键盘鼠标。4 项核心价值分屏工具能帮你做成什么屏幕自动切分每个玩家一个独立窗口按窗口绑定键盘/鼠标输入各走各的支持手柄4 人以内开箱即用自带 13 份游戏配置选中就能玩5 分钟跑起来环境准备与安装启动环境准备Windows 系统工具基于 Windows 的原始输入与钩子机制只能在 Windows 上运行输入设备每位玩家一套独立键盘和鼠标手柄可选游戏支持多开实例、能切窗口化的游戏比如 Minecraft Java 版编译环境Visual Studio装 .NET 桌面开发 C 工作负载如果直接下载官方预编译包则可跳过安装与启动仓库里是完整源码先克隆下来拿到解决方案文件git clone https://gitcode.com/gh_mirrors/un/UniversalSplitScreen打开UniversalSplitScreen.sln用 Visual Studio 的批处理构建一次编译全部项目。README 里写明了各项目的架构要求主程序和 SourceEngineUnlocker 编 x86InjectorLoader、HooksCPP、StartupHook 编 x86 和 x64各项目的生成后事件会自动把产物如 HooksCPP32.dll、IJx86.exe重命名并复制到主程序目录。构建成功后直接运行主程序UniversalSplitScreen.exe看到主界面即启动完成。实战3 步把单人游戏拆成两个独立窗口以 Minecraft 1.14.3 双人同屏为例。前提用两个实例同时启动两个 MinecraftJava 版多开无障碍都切到窗口化。第 1 步选配置。主界面选项下拉框里直接选 Minecraft 1.14.3它对应UniversalSplitScreen/Config/Minecraft 1.14.3.json这份预置文件。配置决定了两件事工具向窗口发送哪种输入以及要拦截游戏里的哪些 API。摘几个关键字段完整文件还有约 20 项开关{ OptionsName: Minecraft 1.14.3, SendNormalMouseInput: true, SendNormalKeyboardInput: true, Hook_GetForegroundWindow: true, Hook_GetCursorPos: true, Hook_SetCursorPos: true }前两项控制键盘鼠标以常规输入方式发进窗口后面三个 Hook 则分别拦截游戏查询前台窗口、读光标的调用防止两个玩家的鼠标状态互相串。第 2 步挂窗口和绑设备。在窗口列表里添加两个游戏窗口然后为每个窗口做两件绑定把要绑定的那只鼠标移到绑定鼠标按钮上按住一下这只鼠标就属于当前窗口在键盘输入框里按一下目标键盘的任意键程序会记录是哪个物理键盘发来的信号并绑定它。程序会输出绑定日志可以据此确认每只设备挂到了哪个窗口。第 3 步点 Start。两个游戏窗口立刻被自动平铺成左右分屏各自出现独立的鼠标光标配置里的 DrawMouse 负责画光标。前后对比很明显分屏前两人共用一个光标一人转视角另一人的屏幕跟着转、WASD 互相覆盖分屏后左玩家只管左窗口的键盘鼠标右玩家独立操作右窗口互不串键。不玩了点 Stop窗口恢复原状。进阶玩法手柄、多窗与自定义配置手柄分屏给窗口指定手柄编号即可XInput 最多支持 4 个手柄超过 4 个还要同时开启 DInput 转换钩子。漏开 Hook_XInput 时点 Start 前程序会弹警告提醒你。微调布局配置里的 LeftOffset、TopOffset、ExtraHeight 可以调整窗口位置偏移和边框高度自动分屏不准或多屏拼接时用得上。自写游戏配置把 Config 目录里一份现成 JSON 拷出来改个 OptionsName再逐个开关 Hook_* 适配你的游戏。如果游戏用原始输入Raw Input读鼠标记得开 Hook_FilterRawInput。输入没被识别先查这 3 处Q输入串到另一个窗口或完全没反应先看设备是否绑定了目标窗口误绑就点对应的 Reset 清空再用正确的设备重新绑定一次。Q第二个游戏实例起不来提示已在运行这是游戏的单实例互斥锁。部分引擎有对应钩子如 Source Engine 配置里的 AutofillHandleName换支持多开或能用互斥锁钩子的游戏试试。Q手柄接上了但游戏没反应确认窗口分配了手柄编号且配置里开了 Hook_XInput程序在 Start 前会自动检查并提示。幕后原理一套输入如何被拆给两个窗口对 Windows 来说游戏平时只知道某个键被按了不知道来自哪块键盘所以默认两人输入会混在一处。Universal Split Screen 通过原始输入Raw Input机制拿到每条输入事件携带的设备句柄把物理设备当作可识别的来源地址再把输入只转发给绑定了该设备的窗口。对游戏进程内部调用获取光标位置读取按键状态这类 API工具注入钩子 DLL 拦截这些调用让每个窗口只看到属于自己的那份输入状态——相当于给每个窗口装了一个独立感官。Source 引擎游戏还需要 SourceEngineUnlocker 这个 DLL 额外处理单实例限制。可以把它理解成邮局的分拣员每封信输入事件自带寄件地址设备句柄分拣员负责把信投进正确的窗口。Universal Split Screen 用钩子和输入分拣换来了单机上的本地多人成本只是多一套键盘鼠标。如果你的游戏还没有现成配置欢迎去项目仓库提交 Issue 或 PR附上你自己调好的游戏配置文件。【免费下载链接】UniversalSplitScreenSplit screen multiplayer for any game with multiple keyboards, mice and controllers.项目地址: https://gitcode.com/gh_mirrors/un/UniversalSplitScreen创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考