本文介紹如何在Linux系統,透過SteamCMD與Goldberg Steam Emulator玩Windows遊戲的用法。
SteamCMD是Valve官方推出的命令行程式,讓玩家不用開Steam客戶端也能登入帳號下載購買的遊戲。
我看很多Windows用戶都用SteamCMD下載特定遊戲的伺服器程式,繞過需要開Steam客戶端的麻煩。
不過,SteamCMD還能用來下載遊戲主程式檔案,拿到exe就可以直接遊玩了!
對Linux用戶來說,SteamCMD在某些極端狀況下非常有用:
- 嫌Linux版的Steam官方客戶端太癰腫,不爽開(Nvidia+Wayland環境問題一堆….)
- 想在Android 用exe模擬器跑Steam遊戲
- 想脫離Steam玩遊戲,不給Steam監控
即使在Linux系統,也可以用SteamCMD強制下載Windows版的exe。
不過,SteamCMD並不會幫你處理Proton依賴,下載後的exe需要手動用其他 Wine工具來執行。
至於需要依賴Steam API才能啟動的遊戲,SteamCMD本身無法處理這個問題,必須使用Goldberg Steam Emulator繞過。
1. 安裝SteamCMD#
Windows版到
官網下載,解壓縮點進目錄,點選steamcmd.exe
就會初始化,並將遊戲下載到該目錄。
於該目錄開啟終端機,輸入./steamcmd.exe
執行指令。
提示:Windows版的steamcmd.exe也可以用Linux Wine轉譯執行。
Linux版SteamCMD請參考 官網說明,透過套件管理員安裝。
例如Arch Linux可從AUR安裝:
yay -S steamcmd
此外,Linux版SteamCMD尚能透過 Flatpak版Steam取得。steamcmd指令附帶於Flatpak套件中,使用以下指令執行:
flatpak run --command=steamcmd com.valvesoftware.Steam
2. SteamCMD指令操作#
資料路徑#
SteamCMD預設路徑位於~/.local/share/steamcmd/
或~/.local/share/Steam/steamapps/
Flatpak版SteamCMD預設路徑位於~/.var/app/com.valvesoftware.Steam/.local/share/steamcmd/
下載遊戲#
SteamCMD在啟動之後會進入自身的命令列。
使用
login "使用者名稱" "密碼"
指令登入Steam帳號。在登入之後就可以用
app_update 遊戲ID validate
下載或更新遊戲。
加上參數 @sSteamCmdForcePlatformType
可以模擬平台,強制下載Windows版遊戲。
加上參數force_install_dir "目錄"
可以變更遊戲安裝路徑,不加的話就是預設路徑。
如何知道遊戲ID?到 Steam官網登入帳號,到收藏庫查看遊戲的商店頁面,網址上面的數字就是遊戲ID了。
範例:下載《IL-2 Sturmovik: 1946》遊戲
app_update 15320 validate @sSteamCmdForcePlatformType windows
- 接著使用
app_run
指令執行遊戲。但Linux無法直接執行exe,所以我們得手動用Wine啟動。
app_run 15320
- SteamCMD的資料目錄結構與Steam客戶端相仿,遊戲會放到
steamapps
目錄,只要找到exe,就可以用 Wine指令執行了。
cd ~/.local/share/Steam/steamapps/common/遊戲目錄
wine "遊戲主程式.exe"
指令稿#
如果你想在bash script使用SteamCMD,那麼你可以傳指令參數給steamcmd。記得每個參數要加上+號。
#!/bin/bash
steamcmd +login "使用者名稱" "密碼" +app_update 15320 +validate +@sSteamCmdForcePlatformType windows +quit
SteamCMD尚支援txt格式的指令稿檔案:
cat <<EOT >> commands.txt
login "使用者名稱" "密碼"
app_update 15320 validate @sSteamCmdForcePlatformType windows
quit
EOT
steamcmd +runscript "commands.txt"
3. Steam Emulator解決無法啟動遊戲的問題#
SteamCMD無法處理需要依賴Steam客戶端的遊戲(注意Steam API跟DRM保護是不同的東西),硬要啟動會遇到Steam API Initialize Failed
錯誤。Goldenberge Steam Emulator可幫你解決這個問題。
到
作者的Gitlab取得最新檔案,解壓縮,將裡面的steam_api.dll
放到遊戲目錄下,取代原本的steam_api.dll。
如此一來遊戲便可以用Wine啟動了。
參考資料#
SteamCMD詳細用法參考官方Wiki: SteamCMD - Valve Developer Community
分享: Steam TUI是dmadisetti開發的SteamCMD命令行前端,可以幫你啟動Steam遊戲,也可以在必要的時候於背景開一個最小化的Steam客戶端,協助遊戲通過DRM驗證。故SteamTUI需要依賴Linux版Steam官方客戶端才可以啟動。不過,2024年4月實測,這個程式似乎已經無效,Steam仍會以正常模式啟動。