Steamworks 文獻庫
Steam DRM

總覽

Steam DRM(數位版權管理)包裝函式是 Steam 平台極為重要的一部分,它能用來確認遊戲的所有權,並能以開啟遊戲前先啟動 Steam 的方式確保 Steamworks 功能正常運作。

單單 Steam DRM 包裝函式並非防範盜版的解決方案。 Steam DRM 包裝函式能夠防範非常隨意的盜版行為(意即從另一台電腦複製所有遊戲檔案),並造成一定混淆,但任何蓄意的攻擊者都能輕易將其移除。

我們建議使用與非法複本不相容的 Steamworks 功能提升您遊戲的合法複本的價值(如線上多人遊戲、成就、排行榜,交換卡片等)。

有關同時使用 Steam DRM 包裝函式和其他 DRM 或防竄改解決方案的進一步資訊,請見使用 Steam 包裝函式包裝其他 DRM段落。

自動 Steam DRM 包裝函式

Steam 包裝函式可經由 SteamPipe 上傳指令碼進行包裝。 從已登入的用戶端將初始化要求傳給 Steam 伺服器,然後經由 HTTP 將純文字的執行檔放至 Steam 的後端。 包裝會在伺服器上進行,然後 steamcmd 便會下載包裝完成的執行檔。

如要使用 SteamPipe 包裝 DRM,您需要登入指令碼後,輸入 drm_wrap 指令:
drm_wrap [appid] [input filename] [output filename] [toolname] [flags] [<destination>]

參數:
  • appid - 以數字組成的應用程式 ID
  • input filename - 輸入純文字執行檔時的相對或絕對路徑。 如果路徑中有空格,請記得以引號框住路徑!
  • output filename - 輸出已包裝執行檔的相對或絕對路徑
  • toolname -「drmtoolp」為目前唯一支援的 toolname 參數
  • flags - 代表下列工具行為數字旗標的位元遮罩
    • 0 - 一般包裝(防護最高)
    • 6 - 相容模式(不進行混淆)
    • 32 - 略過偵錯檢查
    • 38 - 相容模式並略過偵錯檢查(防護最低)
  • destination, optional parameter - 「cloud」或「local」。 目前的預設為「cloud」。 正常不需要「local」選項,除非使用 cloud 選項時遇到任何問題

以下是執行 run_build.bat 指令碼登入、套用 DRM、建立組建並上傳至 Steam(應用程式 ID 為 480)的範例:
builder\steamcmd.exe +login mysteamaccount +drm_wrap 480 "D:\src\steamworkssdk\steamworksexample\release\steamworksexample.exe" "D:\src\steamworkssdk\tools\ContentBuilder\content\windows_content\SteamworksExample.exe" drmtoolp 0 +run_app_build ..\scripts\app_build_480.vdf +quit

手動 Steam DRM 包裝函式

若要快速地用 Steam 包裝函式包裝 exe,使用 Steamworks 應用程式資料管理員包裝遊戲的主要 exe 。

  1. 前往應用程式管理員頁面,選擇您希望新增 DRM 的遊戲
  2. 在應用程式管理員頁面中,選擇技術工具下方的「編輯 Steamworks 設定」
  3. 選擇「安全性」分頁下的「DRM」
  4. 上傳遊戲的主要 exe - 更多有關工具執行選項的說明,請見上方的自動包裝段落
  5. 將 exe 下載至您的本機機器上
  6. 將 exe 重新命名回原來的檔名
  7. 將 exe 複製至內容工具 Depot 的來源位置中
  8. 建立一個新版本的 Depot 組建
  9. 在您的本機內容伺服器上測試 Depot

使用 Steam 包裝函式包裝其他 DRM

Steam 包裝函式能夠,並且也應該與其它 DRM 方案一起使用。 方法是在套用其他任何 DRM 前,先使用 Steam 包裝函式的相容模式, 便不會干擾到其它的 DRM 解決方案。 相容模式將會關閉包裝函式的 DRM 功能。

從 Steamworks 頁面中的下拉式選單中點選相容模式,或選擇自動 drmtool 中對應的旗幟,即可以相容模式包裝 exe。

常見問答

問: 我的 My C# / .Net 遊戲包裝後便無法執行。
答: Steam 包裝函式不支援 .Net 應用程式。 請使用 SteamAPI_RestartAppIfNecessary 代替 DRM 包裝函式。

問: 我的遊戲在套用 Steam DRM 包裝函式便無法執行。
答: Steam 包裝函式可能會損壞其他 DRM 工具。 有關可能的衝突,請見使用 Steam 包裝函式包裝其他 DRM

問: 每次建立新組建都需要在 exe 上套用 DRM 嗎?
答: 是的,每個您希望發佈的組建都需要使用 Steam 包裝函式進行包裝。 您可使用上述的 Steam 自動包裝函式。

問: 在套用 Steam DRM 包裝函式後,防毒軟體供應商檢測到我的二進位檔並視為含有病毒。 我該怎麼辦?
答: DRM 植入過程中用以修改二進位檔的方式與病毒可能使用的入侵方式相同,因此就有可能發生這樣的誤判情況。 您可聯繫供應商,或改使用 API 代替 Steam DRM 包裝函式。