用 SteamEmulator 在无 Steam 客户端的环境下跑局域网联机:替换一个动态库让队友互相发现
2026/8/24 15:53:05 网站建设 项目流程

用 SteamEmulator 在无 Steam 客户端的环境下跑局域网联机:替换一个动态库让队友互相发现

【免费下载链接】SteamEmulatorMIRROR REPO - Credits : Mr. Goldberg. Steam emulator that emulates Steam online features. Lets you play games that use the Steam multiplayer APIs on a LAN without steam or an internet connection.项目地址: https://gitcode.com/gh_mirrors/st/SteamEmulator

SteamEmulator 是一个 Steam API 模拟器(emulator,指用软件模拟另一套系统的行为)。它顶替游戏目录里的steam_api.dll(Linux 下为libsteam_api.so),把游戏对 Steam 发起的"在线"调用——用户身份、DLC 检查、成就、房间匹配——全部在本地应答。游戏因此不再需要登录 Steam 账号,多人联机可以完全靠局域网广播完成。它适合想在无法访问外网的办公网络、宿舍环境里组队的玩家,也适合想把多人游戏与 Steam 的强依赖解耦的开发者。

项目同时覆盖 Windows 与 Linux,提供 32 位和 64 位构建,采用 LGPLv3+ 许可,直接使用无需公开自己的源代码。作者的设计取向是"不做 ini 配置文件":全局设置以一组小文本文件的形式存放,配好后整个游戏目录拷给朋友就能直接跑,不用再改任何东西。

这个模拟器替你做了哪些事

能力说明
Steamworks 接口模拟用户、应用、成就、远程存储、匹配等接口调用由模拟器本地应答,游戏无需感知 Steam 不在
局域网房间发现同一局域网内的玩家通过 UDP 广播互相发现并组队,不依赖任何外部服务器
网络套接字库额外提供steamnetworkingsockets动态库,覆盖改用 Steam Networking Sockets 进行玩家间通信的多人游戏
老游戏兼容对使用旧版 Steam API 的游戏,可用scripts/目录下的find_interfaces.sh脚本生成所需的接口版本清单

从源码到可用的动态库

获取源码只需两步,Windows 用户需要先在本地装好 Visual Studio 的 C++ 构建工具和 protobuf 依赖:

git clone https://gitcode.com/gh_mirrors/st/SteamEmulator cd SteamEmulator

构建方式取决于平台。Linux 下用发行版的包管理器安装 protobuf-lite 开发包和protoc编译器,然后在仓库根目录执行make(追加-j8可多核并行);Windows 下装好依赖后运行build_win_release.bat即可,CMake 方式的配置也在 CMakeLists.txt 中完整支持。

构建完成后会得到libsteam_api.sosteam_api.dll,把它拷进游戏根目录并替换原有的 Steam 动态库。接着确认游戏目录里有steam_appid.txt(内容为该游戏的 AppID):原来有就不用管,没有就新建一个写入 AppID,模拟器会优先从steam_settings文件夹、再按运行目录、动态库旁三个位置依次查找它。

三个最核心的配置项

全局设置存放在用户数据目录的Goldberg SteamEmu Saves/settings下,写一次对这台机器的所有游戏生效。想给某个游戏单独覆盖时,在模拟器动态库旁建steam_settings文件夹放入同名文件即可,仓库的 files_example/steam_settings.EXAMPLE 提供了全套样例。日常只需要关心下面三项:

  • account_name.txt→ 模拟器对外显示的玩家名,改这里所有游戏都生效
  • listen_port.txt→ 局域网发现使用的 UDP/TCP 端口,所有机器必须一致,否则互相发现不了
  • offline.txt→ 放进游戏的steam_settings文件夹,让模拟器对外表现成 Steam 离线模式,用于个别只在离线态下行为正常的游戏

哪些场景适合用它

  • 🏠 无外网的局域网聚会:宿舍、家庭网络或访问外网受限的办公网,只要大家在同一 IP 网段且端口一致,游戏里就能直接互相发现
  • 🛠️ 游戏去 Steam 化发布:开发者不想让多人游戏依赖 Steam 客户端、又不想重写网络层时,直接换成模拟动态库即可上线
  • 🧪 联机逻辑的本地验证:在没有真实 Steam 环境的机器上,完整跑通匹配、房间和玩家间通信的调试流程

连不上时按这个顺序排查

现象排查方向
互相发现不了玩家确认所有人处于同一 IP 网段,检查防火墙是否放行了监听端口
时好时坏、偶尔发现失败核对每台机器的listen_port.txt是否完全相同
老游戏直接无法启动原动态库签名时间早于 2016 年 5 月的,用scripts/里的脚本生成steam_interfaces.txt放到模拟器旁
联机中突然断线检查同一台机器是否同时启动了两个相同 AppID 的游戏,同一时刻只应跑一个(专用服务器除外)

这个项目的上手成本不高:替换动态库、写好 AppID,剩下的都交给默认行为。挑一个你手头的多人游戏,按上面的顺序把替换流程走一遍,局域网联机就能跑起来。工具本身面向测试与教育用途,不会破解任何 DRM,请确保你对所玩的游戏拥有合法使用权。

【免费下载链接】SteamEmulatorMIRROR REPO - Credits : Mr. Goldberg. Steam emulator that emulates Steam online features. Lets you play games that use the Steam multiplayer APIs on a LAN without steam or an internet connection.项目地址: https://gitcode.com/gh_mirrors/st/SteamEmulator

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

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

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

立即咨询