快轉到主要內容

樹莓派玩Windows遊戲,Box86+Steam安裝教學

· 民國113年甲辰年
·
切換繁體/簡體
分類 Linux系統 Linux玩遊戲
標籤 Steam Box86 Box64 Raspberry Pi
目錄

本文Ivon討論如何在ARM架構的樹莓派跑x86架構的Steam客戶端,遊玩x86架構的Windows遊戲。

這裡講的不是安裝Steam Link遠端串流,而是真正在樹莓派直接跑遊戲。嗯?這塊小板子的硬體撐得住嗎?可以的,樹莓派4代以後就能玩2D遊戲了,5代要玩些3D小遊戲更是沒問題。

圖例:在Raspberry Pi 5遊玩《Helltaker》遊戲

圖例:在Raspberry Pi 5遊玩《POSTAL 2》遊戲

同樣是Linux系統,樹莓派的Steam安裝過程會比在一般Linux電腦複雜,因為Steam的遊戲大部分都是x86架構,就連Steam客戶端本身也只支援x86架構,那麼在以ARM為主的樹莓派Linux系統便會遇到無法執行的難題。

所幸現在有了轉譯方案,我們可以透過ptitSeb研發的開源Box86與Box64程式,讓x86架構的遊戲程式能在ARM架構的系統上執行,效能還不會損失太多!

1. 測試環境
#

  • Raspberry Pi 5 8GB
  • Raspberry Pi OS 12 Bookworm
  • Box86 0.3.6
  • Box64 0.3.0

玩遊戲建議接上實體螢幕與鍵鼠操作。若要用遠端桌面請使用支援GPU加速的RustDesk。

2. 安裝Box86與Box64
#

請先安裝Box86與Box64,記得向binfmt註冊。

Linux版Steam客戶端本身是32位元程式,所以必須用Box86安裝。但是很多Steam遊戲都是64位元的,所以你得裝Box64。

3. 安裝Steam客戶端
#

  1. 利用Box86原始碼儲存庫提供的指令稿即可完成安裝
cd box86

./install_steam.sh
  1. 執行Steam,Box86會自動跳出來轉譯
steam
  1. 等待依賴套件裝完。如果Steam啟動的時候崩潰,嘗試停用Steam Client WebHelper的GPU加速。

  2. 開啟後就能下載遊戲了。具體能跑什麼遊戲呢?因為這裡是用Box86轉譯執行的,請先看Box86相容性清單,再參考電腦ProtonDB的資料。

    Screenshot_20241013_123647.webp

  3. 如果Steam下載原生支援Linux系統的遊戲,執行的時候box86會自動跳出來轉譯。若下載Windows遊戲,請參考Linux版Steam使用教學,到Steam設定「強制啟用相容性工具」,Steam就會在下載Winows遊戲的時候自動幫你裝好Proton相容層。

  4. 遊戲若是打不開,請觀察Steam終端機輸出的訊息,然後到Github搜尋錯誤訊息。我有遇到Steam無法按右鍵的bug,這個時候配合Shift一起按就能解決。


這裡提供另一個啟動Steam的方法,以下指令僅會開啟收藏庫的遊戲迷你列表,如此一來可減少Steam客戶端佔用的系統資源。

steam steam://open/minigameslist

另一種方法是用命令行啟動遊戲:

steam steam://rungameid/1289310

4. 3D遊戲的Vulkan問題
#

Steam的2D遊戲玩起來應該沒問題,但3D遊戲就會牽扯到Vulkan驅動。

Wine在執行Windows exe的時候會透過WINED3D將DirectX的繪圖指令轉成OpenGL;而Steam Proton因為內建DXVK,會將DirectX轉成Vulkan提供更好的效能。

Box86會自動使用宿主機Vulkan驅動,讓轉譯的遊戲支援GPU加速。

  1. 安裝以下套件取得Vulkan驅動
sudo apt install libgdm1:armhf libudev1:armhf libgl1-mesa-dri:armhf libglapi-mesa:armhf libglu1-mesa:armhf libglx-mesa0:armhf mesa-va-drivers:armhf mesa-vdpau-drivers:armhf mesa-vulkan-drivers:armhf libsdl1.2debian:armhf libegl-mesa0:armhf

sudo apt install mesa-vulkan-drivers
  1. 確認宿主機Vulkan驅動狀態
vulkaninfo --summary
  1. 可惜的是,根據Box86開發者所述,Raspberry Pi 4、Raspberry Pi5的Vulkan驅動目前尚不支援Steam Proton內建的DXVK,故需要對Steam收藏庫的遊戲按右鍵 → 內容,編輯啟動選項,設定環境變數PROTON_USE_WINED3D=1 %command%,改回使用WINED3D,也就是將DirectX轉譯為OpenGL的作法。如此遊戲才能開啟。
    Screenshot_20241013_192633.webp

另一種可能讓DXVK跑起來的方式:加入環境變數MESA_LOADER_DRIVER_OVERRIDE=zink,使用Mesa的Zink驅動,它能將OpenGL的指令轉譯成Vulkan。不過這個尚屬於實驗性驅動。

  1. 若Raspberry Pi的OpenGL版本太低,Unity遊戲可能不給跑,或是出現缺少DirectX的錯誤。這時得在啟動遊戲的環境變數加上MESA_GL_VERSION_OVERRIDE=3.2,強制覆寫系統的OpenGL版本。

  2. 如果原生支援Linux的遊戲開不起來,請讓Steam強制下載Windows版本(相容性 → 強制啟用相容性工具)再用Proton跑。

儘管做了以上措施,我發現還是有些遊戲無法執行,且把OpenGL版本提昇過高會造成遊戲圖形錯誤。

5. 安裝Protontricks與ProtonUp-QT
#

ProtonUp-QT是下載第三方維護的Proton的工具。

使用Python虛擬環境安裝:

git clone https://github.com/DavidoTek/ProtonUp-Qt.git

cd ProtonUp-Qt

python3 -m venv venv

source venv/bin/activate

pip3 install -r ./requirements.txt

sudo apt install libxcb-cursor0

執行程式:

python3 -m pupgui2

指定要下載的Proton-GE就行。

Screenshot_20241013_221556.webp

雖然Protontricks讀不到經由Box86 Steam安裝的遊戲,但是下載好Proton-GE後便能在Steam客戶端切換。

Screenshot_20241013_222112.webp


Protontricks功能等同Winetricks,方便我們安裝字體與打patch。

用pipx安裝:

sudo apt install pipx

pipx install protontricks

再用以下指令啟動:

protontricks --gui --no-bwrap

選取要修改的遊戲即可操作。

Screenshot_20241013_221817.webp

參考資料
#

相關文章


此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

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