快轉到主要內容

Linux系統玩Windows遊戲:Steam Proton V.S. VFIO Windows虛擬機,孰勝孰負?

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

Gaming on Linux with Steam Proton, or gaming in Windows VM with GPU passthrough on Linux Host?

最近幾年我一直在研究Linux系統玩Windows遊戲的方法,在嘗試了各種方案後,逐漸有了答案。

這裡有二個前提:

  1. 主力用Ubuntu Linux,我拒絕雙系統開機的模式,所以便剩下Steam Proton和VFIO Windows虛擬機的方案。

  2. 我知道很多遊戲是有跨平台版本的,比如Minecraft,但是大部分開發者依然只在乎Windows,所以只要遊戲玩得多了,遇到Windows限定的遊戲是不可迴避的問題,「拒玩」不是選項,也無「替代品」可尋。

1. 名詞定義
#

Steam Proton指透過Proton遊玩Steam上架的Windows遊戲。由於近年來Valve大力投資Linux軟體開發,甚至出了Steam Deck,使得玩Steam遊戲基本上是開箱即用。但是Proton不是Valve獨立開發的,它延伸自開源的Wine專案,所以其實不需要Steam,你可以用其他遊戲啟動器搭配Wine轉譯玩Windows遊戲。不過Steam的界面設計確實是最無腦的,所以我用Steam Proton代稱用Wine轉譯Windows遊戲的玩遊戲方式。


VFIO Windows虛擬機 (VFIO Gaming VM),這個名詞來自於歐美玩家的稱呼,指的是依賴QEMU/KVM技術建立Windows虛擬機玩遊戲的方式。光是建立虛擬機是不夠的,還要透過Linux核心的VFIO技術將GPU直通給虛擬機,使其能夠負載3D運算。最後設定Looking Glass或Moonlight + Sunshine服務,就能從Linux桌面低延遲的存取Windows桌面。由於虛擬機是完整的Windows系統環境,所以執行起來跟實機幾乎沒有差別。

或許你會跟我爭論說,在Windows虛擬機玩遊戲根本就不是在Linux玩遊戲了呀!但這個Windows虛擬機還是跑在Linux上、且依賴Linux的KVM虛擬化技術才有的結果呀!

2. 二者的不確定因素
#

Steam Proton的不確定因素:

  • 遊戲開發者重視Linux的程度
  • Proton轉譯的穩定性
  • 輸入法
  • 驅動程式問題
  • 反作弊程式相容性
  • 安裝第三方模組、外掛、中文化的難易度

VFIO Windows虛擬機的不確定因素:

  • 架設虛擬機環境的難易度
  • 反作弊程式偵測虛擬機
  • 虛擬化的硬體性能損耗
  • 存取虛擬機的容易度

3. 現在傾向使用VFIO Windows虛擬機方案
#

以前,我認為VFIO Windows虛擬機的方案只是對Steam Proton的補充,真有無法執行的遊戲程式再使用VFIO。但是,現在卻覺得應當反過來了。

如果要比較的話,我覺得Steam Proton的問題比較大。因為變數太多了。

遊戲開發者要怎麼展現對Linux系統用戶的誠意呢?至少推出原生版的程式吧!很可惜這是幾乎不可能的事情,市面上半數遊戲開發商依然只會推出Windows版的遊戲。Windows遊戲可以透過Proton跑不代表就完美無缺的說。而且很多時候是玩家以第三者的角度認為Proton轉譯讓遊戲可以玩,但遊戲開發者根本就不在乎這方面問題,你能玩只是運氣好而已。

再者,安裝遊戲之後如果不需要特別打模組那倒還好,直接體驗原作內容。但,要使用第三方程式的遊戲就會很痛苦了,需要調整一堆有的沒的WINE環境,還得注意有哪些.Net的依賴套件要裝。

最糟糕的情況是Proton轉譯後遊戲有莫名的bug,無法在Windows重現,此時就只能依賴玩家社群尋求解方。若是遊戲太小眾根本找不到解答,所以tweak Wine的環境很多時候是在自虐。每當有一款遊戲能在Linux成功執行,就好像發現寶藏一樣的感覺,問題是失敗的例子也很多啊。

這裡有個想法強化了支持VFIO虛擬機的論點:「我是來玩遊戲的,你們要幹什麼?點一下按鈕就該開玩,不要跟我說要打指令打patch什麼碗糕的!」

我沒有貶低Linux社群開發者的努力,輔助工具越來越多,Linux玩遊戲越來越方便了,但就2024年的現狀來看,Steam Proton還是很吃腦力的玩遊戲方式。

Steam Proton安裝起來很容易,但後續的問題還多著呢,屬於是先甘後苦。


相較之下,VFIO Windows虛擬機環境一旦架設起來了,至少軟體部份不會有太多變數。唯一的問題大概就反作弊程式擋虛擬機的問題,這個有很多解法能繞過。

至於硬體損耗問題,Linux的虛擬機是跑在KVM上的,遊戲執行效率的確會比實機差一些,但是不會到性能變成一半的誇張情況。假若硬體強度足夠支撐,那麼這點損耗可以忽略不計,例如一台電腦有8核心CPU,分一半核心數給Windows虛擬機就足夠輕度遊戲了吧。

圖片引用自Mental Outlaw的影片:https://www.youtube.com/watch?v=KVDUs019IB8

那麼,如何存取虛擬機的問題,我講過了,Looking Glass或者Moonlight + Sunshine都能簡單的解決「從Linux桌面存取虛擬機桌面」的問題。

VFIO初期繁雜的問題搞定了之後,往後的遊戲執行都不會有太大問題。算是先苦後甘。

所以,我選擇進入虛無。

補充一點,身為Linux用戶,我依然會關注Steam Proton未來的開發進展,但由於VFIO綁定GPU直通,宿主機無法測試遊戲,那麼我就只有兩種選擇:

第一種,手動GPU直通切換,視需要分配給給宿主機或虛擬機,這個應該能用libvirt hook達成。參見: 虛擬機直通Nvidia GPU後讓Linux宿主機重新使用GPU

第二種,將Linux玩遊戲的環境也虛擬化,也就是另外開一個Linux虛擬機,分配GPU給虛擬機,再用Sunshine存取該虛擬機的桌面。參見: Sunshine裝在QEMU/KVM虛擬機裡,從Linux宿主機串流玩遊戲

類似討論
#

相關文章

如何在Windows虛擬機玩遊戲 ~ Linux QEMU/KVM雙GPU直通 + Looking Glass安裝過程
分類   Linux系統 Linux玩遊戲
標籤   GPU Passthrough QEMU-KVM Linux Windows
Sunshine裝在QEMU/KVM虛擬機裡,從Linux宿主機串流玩遊戲
分類   Linux系統 Linux玩遊戲
標籤   Moonlight Game Streaming QEMU-KVM Cloud Gaming GPU Passthrough
Steam Link + Linux版Steam遠端玩遊戲 ~ 效能測試
分類   Linux系統 Linux玩遊戲
標籤   Cloud Gaming Steam Linux Remote Desktop

留言板

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

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

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