Goldberg Steam Emulator 补丁流程
Goldberg Steam Emulator(GSE)通过替换游戏的 steam_api(64).dll,让游戏不依赖 Steam 客户端也能运行。游戏调 Steam API 时实际走的是模拟器,模拟器返回伪造响应,游戏以为 Steam 在跑。
原版项目已经不怎么更新了,社区现在主要用 GBE Fork,一个活跃维护的分支。另外还需要 Steamless 来去除 exe 自带的 DRM。
相关项目:
1. 用 Steamless 处理 exe
Steamless 去掉的是 exe 上的 SteamDRM Wrapper(也叫 Steam Stub)。无论 exe 有没有被加密,都可以直接跑一次 Steamless——没 DRM 的文件会被安全跳过,不会损坏。
下载 Steamless 之后,打开 Steamless.exe,选游戏主 exe,点解包。处理完会在同目录生成一个 .unbind 文件。原 exe 备份一下,把 .unbind 重命名成原 exe 的名字替换就行。
大 exe(超过 100MB)可能要花几分钟。
2. 找 steam_api(64).dll
在游戏文件夹里搜 steam_api*.dll。
结果有两种情况。
只有一个 DLL: 通用/Unity 引擎游戏,替换这个 DLL,steam_settings 文件夹放它旁边。
有两个 DLL(Unreal Engine 游戏):
<GameDir>\Engine\Binaries\ThirdParty\Steamworks\Steamv157\Win64\steam_api64.dll
<GameDir>\<GameName>\Binaries\Win64\steam_api64.dllUE 引擎启动时从 Engine 目录加载 steam_api64.dll,不是从游戏主目录。替换 Engine 目录的那个,steam_settings 也放 Engine 目录。游戏主目录的 DLL 保持原版,不要动。
3. 备份原版 DLL
找到要替换的 DLL 之后,复制一份,重命名成 steam_api64.dll.old。后续生成接口文件要用到这个备份。
4. 替换成模拟器 DLL
从 GBE Fork 发布包里,把对应架构的 DLL 复制过去覆盖原版:
- 64 位游戏:
regular\x64\steam_api64.dll - 32 位游戏:
regular\x86\steam_api.dll
模拟器 DLL 大约 7–11MB,原版大约 200–400KB,差别很明显。
如果是 UE 引擎游戏,游戏主目录的 DLL 保持原版不动。
5. 创建 steam_settings 目录
在模拟器 DLL 同级创建一个 steam_settings 文件夹。UE 引擎放 Engine 目录,通用引擎放游戏 exe 同级。
6. 放 steam_appid.txt
在 Steam 商店页面的 URL 里找 AppID:store.steampowered.com/app/<数字>/。
新建 steam_settings\steam_appid.txt,只写纯数字 AppID。比如 3683770。
7. 生成 steam_interfaces.txt(推荐)
接口版本不匹配会导致崩溃或功能缺失。用 GBE Fork 里自带的 generate_interfaces_x64.exe(或 x86 版),对备份的原版 DLL 跑一次。
把备份的 steam_api64.dll.old 拖进工具窗口就行。工具会在当前目录生成 steam_interfaces.txt,把它移到 steam_settings\ 里。
必须对原版 DLL 跑,不能用模拟器 DLL。
8. 可选:配置 INI 文件
steam_settings.EXAMPLE\ 里有模板,按需复制到 steam_settings\,去掉 .EXAMPLE 中缀。
关键配置:
configs.user.ini:local_save_path=./path/relative/to/dll,让存档存到游戏目录而非全局%appdata%configs.user.ini:account_name=Player,改游戏里显示的名字configs.user.ini:language=english,语言configs.main.ini:offline=0,离线模式configs.app.ini:unlock_all=1,解锁所有 DLC
不配 INI 也行,模拟器有合理的默认值。
常见问题
游戏闪退或无法启动,按这个顺序排查:exe 有没有跑过 Steamless,DLL 有没有换对位置(UE 引擎看仔细),steam_settings 是否和 DLL 同级,steam_interfaces.txt 是否从原版 DLL 生成。
默认存档在 %appdata%\GSE Saves\。想改成游戏目录本地存档,在 configs.user.ini 里设 local_save_path。
UE 引擎游戏只替换 Engine 目录的 DLL,游戏主目录的 DLL 不要动。steam_settings 也放 Engine 目录。
恢复原版:把 steam_api64.dll.old 改回 steam_api64.dll,删掉 steam_settings 文件夹和 steam_appid.txt。
steam_interfaces.txt 生成在运行工具的当前目录,不是工具本身的位置。建议先切到模拟器 DLL 所在目录再跑,生成的文件直接移到 steam_settings\。
自动化工具
不想手动操作的话,有两个社区工具:
ARMGDDN Autocracker,基于 GBE Fork,装好后在游戏文件夹上右键就能自动完成补丁。仓库: https://github.com/KaladinDMP/ARMGDDN-Autocracker。作者 GitHub 账号曾被封过,最新版可能要从 Telegram 找。
SteamAutoCracker,内置调用 Steamless 和 Goldberg,一键处理 DRM 去除和 DLL 替换。仓库: https://github.com/BigBoiCJ/SteamAutoCracker。