快轉到主要內容

使用SteamCMD + Goldberg Steam Emulator在Linux下載遊戲,免開Steam客戶端

分類   Linux系統 Linux玩遊戲
標籤   Steam Linux
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

本文介紹如何在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監控

來源:https://www.youtube.com/watch?v=hXp51MQnPEg

即使在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/

下載遊戲
#

  1. SteamCMD在啟動之後會進入自身的命令列。

  2. 使用login "使用者名稱" "密碼"指令登入Steam帳號。

  3. 在登入之後就可以用app_update 遊戲ID validate下載或更新遊戲。

加上參數 @sSteamCmdForcePlatformType可以模擬平台,強制下載Windows版遊戲。

加上參數force_install_dir "目錄"可以變更遊戲安裝路徑,不加的話就是預設路徑。

  1. 如何知道遊戲ID?到 Steam官網登入帳號,到收藏庫查看遊戲的商店頁面,網址上面的數字就是遊戲ID了。

  2. 範例:下載《IL-2 Sturmovik: 1946》遊戲

app_update 15320 validate @sSteamCmdForcePlatformType windows
  1. 接著使用app_run指令執行遊戲。但Linux無法直接執行exe,所以我們得手動用Wine啟動。
app_run 15320
  1. 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仍會以正常模式啟動。

相關文章

Linux版Steam新增非Steam的exe遊戲到收藏庫
分類   Linux系統 Linux玩遊戲
標籤   Steam Linux
精選數十款Linux玩遊戲的輔助程式,適用Windows與原生Linux遊戲
分類   Linux系統 Linux玩遊戲
標籤   Wine Steam Linux
如何在Linux系統玩Steam的Windows遊戲:Steam客戶端 + Steam Play安裝教學
分類   Linux系統 Linux玩遊戲
標籤   Steam Linux

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。