如何为游戏打上 Steam DRM 保护
🧐 什么是 Steam DRM
Steam DRM 是 Steam 平台的重要工具之一,其主要作用为校验玩家是否在 Steam 平台上进行了购买,以此保障游戏开发者权益。在完成了 Steam DRM 打包后,若玩家双击游戏,游戏将会在进行运行前进行启动 Steam 进行身份校验以此保护游戏免受盗版问题。
但请各位注意,Steam DRM 并非解决盗版问题的良方。由于Steam DRM 给游戏将会带来的仅为最基础的游戏保护,它将会能够避免你开发完成的游戏在没有任何保护的情况下轻轻松松地复制走,而非提供绝对的游戏保护。
🤔 Steam DRM 命令 drm_wrap
Steam DRM 包含在了 Steam CMD 的命令之中,Steam DRM 打包命令代码 drm_wrap
,该命令的组成部分为
drm_wrap [appid] [无 DRM 保护的源游戏执行文件] [打包完毕后的游戏执行文件] [打包工具] [flags]
各项目的含义为:
- appid: Steam 的游戏 ID
- 无 DRM 保护的源游戏执行文件:你可以使用绝对路径或相对路径,如果遇到文件名中含有空格的部分,请记得使用引号(’’)转义
- 打包完毕后的游戏执行文件:你可以使用绝对路径或相对路径,这一路径将会生成游戏打包完毕后的可执行文件。
- 打包工具:打包工具拥有两个版本
- drmtoolp: 新版
- drmtool: win32 旧版
- flags:表示打包模式
- 0:标准打包(保护能力最强)
- 6:兼容性打包
- 32:跳过 debugger 校验
- 38:使用兼容模式并跳过 debugger 校验(保护能力最差)
获得 Steam CMD
访问 Steamworks Documentation 文档库,在 Steamworks SDK 页面下找到 Download the latest version of the Steamworks SDK。
你也可以不用找,直接点击这里下载 SDK 文件
下载完成进行解压后,你就可以得到完整的 Steam 开发工具,而 Steam CMD 则位于 /sdk/tools/ContentBuilder/builder
文件夹中
🛠️ Steam DRM 打包使用示例
下面演示的是使用 Steam DRM 新版本标准模式下进行打包的方式, 头一次使用时有两个组成部分:
- 为打包创建
.bat
文件 - 双击运行该文件(或使用 CMD 或 PowerShell 打开)
1. .bat
文件创建
打开文本编辑应用(记事本或 Visual Studio Code 等任意代码编辑器),复制粘贴如下内容并保存至任意地址。
复制粘贴前你需要注意的内容为:
- 你将该 .bat 文件保存到了 Steamworks SDK 中 ContentBuilder 文件夹中
- 你的 Steam 开发账号为 steamaccount(该账号拥有此游戏的开发权限)
- 你的 Steam 开发账号密码为 steampassword
- 你的游戏 AppID 为 480
- 你的游戏源文件路径为
F:\game\game.exe
- 你打包完毕后的游戏路径为(我这边的选择为打包完毕后的游戏直接覆盖掉了源文件)
F:\game\game.exe
- 你决定叫这个 DRM 打包工具叫
drm.bat
!
在进行了以上内容选择后,drm.bat
文件内容如下,并保存到 ContentBuilder 文件夹中
builder\steamcmd.exe +login steamaccount steampassword +drm_wrap 480 "F:\game\game.exe" "F:\game\game.exe" drmtoolp 0
将
drm.bat
放到 ContentBuilder 文件夹中才可以保障该命令能够正常运行,若放到其他文件夹下则需要更改builder\steamcmd.exe
的部分
Tip: 你也可以在这一串文字后加上
+quit
来自动关闭窗口,但这一操作将不会给你带来诸如账号密码错误等任何错误反馈信息,你可以在确认以上指令可以正常继续后加上自动关闭的功能。
2. 双击 drm.bat
如果你看到如下反馈,则证明该打包工作成功完成了!恭喜!
🍎补充内容:为 macOS 游戏添加 DRM
上文所提及的 Steam DRM 工具并不适用于所有平台和所有的游戏执行文件,如果需要对 macOS 系统上的游戏添加 DRM, 可以调用以下两个 API 实现 Steam DRM 的主要功能
需要参考的 API 有:
- SteamAPI_RestartAppIfNecessary: 在游戏启动的时候使用 AppID 调用这条 API 能够保证游戏通过 Steam 客户端启用的是使用的这个 AppID
- ISteamApps::BIsSubscribedApp:在游戏里头使用 AppID 调用这一条 API 能够确保登陆 Steam 的用户拥有游玩这个 AppID 的权限。(这一条在保护游戏方面不是必须,但可以给游戏多一层保护)
后续步骤
在完成 DRM 打包后,接下来的操作便是进行游戏包上传了,关于游戏上传的部分你可以参考