尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

如何让PC游戏实现分屏多人:Universal Split Screen 上手与自定义

如何让PC游戏实现分屏多人:Universal Split Screen 上手与自定义 如何让PC游戏实现分屏多人Universal Split Screen 上手与自定义【免费下载链接】UniversalSplitScreenSplit screen multiplayer for any game with multiple keyboards, mice and controllers.项目地址: https://gitcode.com/gh_mirrors/un/UniversalSplitScreen两个人、一台电脑、一个晚上。Universal Split Screen 把只支持单人的PC游戏改造成分屏多人模式画面一分为二各自使用独立的键盘、鼠标和手柄同时玩同一款游戏。它由一个 Windows 主程序和几个注入游戏的动态库组成全程不需要改动游戏文件。快速上手下载现成包或克隆构建最短路径是下载项目发布的现成构建包解压后直接运行主程序。包里已经放好了主程序、注入器和 x86 / x64 两套钩子库不用自己编译。想自己构建的话克隆仓库用 Visual Studio 打开UniversalSplitScreen.slngit clone https://gitcode.com/gh_mirrors/un/UniversalSplitScreen构建只需注意一点主程序按 x86 编译钩子、注入器、引擎解锁器这几个组件要 x86 和 x64 都编。各项目的后构建步骤会自动改名并拷贝到主程序目录编译完直接运行即可。工作原理输入中转站如何做到不破坏游戏打个比方。程序相当于架在输入设备和游戏之间的一间“中转站”每个玩家的键盘、鼠标都有编号中转站认出按键来自哪个玩家再把这条输入“投递”到对应的半边画面里。游戏依旧按原样接收输入察觉不到屏幕已经被切分。具体拆成五个部分各司其职主程序C# 编写找到游戏窗口、把它切分并决定每路输入送往哪块区域。HooksCPP.dll输入钩子注入游戏进程拦下游戏用来“读键盘、读鼠标”的系统调用让游戏只看到当前玩家的输入。所谓钩子就是临时替换系统函数的行为不碰游戏自己的代码。InjectorLoader注入器负责把上面的 DLL 送进游戏进程提供 x86 和 x64 两个版本。StartupHook在游戏启动阶段打补丁其中包含对 FindMutex 调用的拦截避免游戏通过互斥量发现“还有别的窗口”。SourceEngineUnlocker解除 Source / GoldSrc 引擎的单实例锁让同一引擎的游戏能开两局。为什么这样做不破坏游戏所有动作都发生在“系统 API 调用”这一层。游戏文件、存档、内存数据都不被修改停止使用后一切恢复原状。能做什么支持的设备与预置游戏配置输入设备数量基本不设上限多套键盘、多个鼠标都行手柄方面 XInput 游戏手柄和 DirectInput 摇杆都能接管。游戏理论上适配任意 Windows 窗口化程序。仓库UniversalSplitScreen/Config/目录里带了 13 个预置配置按类型大致是沙盒生存Minecraft1.14.3 与 Alternate 两个版本、Terraria、Starbound、Stardew Valley、Dont Starve Together动作射击Borderlands2、NuclearThrone策略模拟Factorio、Prison Architect引擎特调Source Engine、GoldSrc Engine另有一个 Rift程序启动时会把配置目录里所有 JSON 读进顶部下拉框选中哪份就套用哪份参数。想看内容用任意文本编辑器打开文件即可。注意仓库里的样例在Config/目录运行时程序实际读取的是主程序 exe 旁边的config文件夹发布包里已把样例放进去。进阶自定义如何导入自定义游戏配置要玩的游戏没有现成配置时复制一份最接近的游戏 JSON把文件名改掉文件名就是下拉框里显示的名字然后重点调两组字段输入发送方式与钩子开关Send*开头的字段决定输入以什么形式发给游戏Hook_*开头的字段决定拦截哪些系统读取函数。这是调参的第一旋钮——每个游戏读输入的方式不同某位玩家没反应时先对照这些字段逐项开关排查。DrawMouse虚拟鼠标有玩家只带键盘时打开它程序会在游戏里为这个人画出一个独立的鼠标光标适合操作依赖鼠标的游戏。保存文件后重启主程序新配置就会出现在下拉框里。⚠️ 避坑指南五个高频问题与对策某位玩家输入完全没反应——多半是游戏读输入的方式和钩子开关不匹配比如游戏用 GetAsyncKeyState 读键盘而对应钩子没开。对照该游戏的 JSON 逐项开关Hook_字段。游戏只开出一个窗口、第二个实例被拦下——单实例锁在起作用。Source / GoldSrc 游戏靠 SourceEngineUnlocker 解锁其他游戏由 StartupHook 拦截 FindMutex 调用若仍被拦检查配置里相关项是否开启。两个鼠标互相打架或鼠标卡住不动——Windows 全局只有一个系统鼠标和游戏内鼠标冲突。打开 DrawMouse 画独立光标或启用“系统鼠标居中”选项让物理鼠标不再干扰。注入失败或游戏闪退——架构不匹配给 32 位游戏注了 64 位库或权限不足游戏以管理员运行而工具没有。让注入器版本和游戏架构对应游戏提权时工具也用管理员运行。独占全屏下分屏出现闪烁、撕裂——独占全屏绕过窗口管理器直接写显存。把游戏改成无边框窗口模式画面立刻稳定。社区与许可MIT 协议下怎么参与项目采用 MIT 许可版权归 2019 年的作者 Ilyaki可以自由使用、修改、再分发只需保留版权声明。参与方式有三种把遇到的兼容性问题提交为 issue、给还没人覆盖的游戏补一份 JSON 配置、或者直接提交代码修钩子、加功能。想要自己构建和参与贡献克隆开头给出的仓库地址、打开 .sln 即可。Universal Split Screen 目前能覆盖的玩法已经足够多缺的那个游戏配置往往就是下一个可以贡献的东西。【免费下载链接】UniversalSplitScreenSplit screen multiplayer for any game with multiple keyboards, mice and controllers.项目地址: https://gitcode.com/gh_mirrors/un/UniversalSplitScreen创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表