Proton

Proton 是 Valve 在 Steam Linux 客戶端中新加入的工具,它本質上是一個特製版的 Wine,而目的即是讓玩家可以在 Linux 上安裝及執行 Windows 遊戲。進一步的操作說明可參閱本站更新的 How-To 文件,至於官方的公告消息則可參見以下連結:

 

自從 Steam 開始支援 Linux 後,DR 確實一直希望 Linux 客戶端能夠直接整合 Wine,讓客戶端不僅可用於安裝 Linux 遊戲,玩家也可以嘗試安裝及執行 Steam 上的 Windows 遊戲。如今 Valve 不僅實現了這項功能,而且做得更多,積極地對 Wine 等相關專案投注資源。自 Proton 公佈之初,可順利支援的二十餘款遊戲裡,除了使用 OpenGL/Vulkan API 的《毀滅戰士》(Doom,2016)外,還有純粹的 DirectX 11 遊戲《尼爾:自動人形》(NieR:Automata,2017),特別就後者而言,標誌著相容性技術的顯著突破。

 

將 Wine 整合到 Steam 裡,對 Wine 這項專案本身來說也是一項重要的里程碑。Wine 是一項歷史悠久的開放原始碼專案,自 1993 年便問世,後由 CodeWeavers 公司主導開發,及提供商業性支援。其宗旨是在 Unix-like 平台上提供 Windows 應用程式的軟體相容層,而其中的工程便包含了重新實作 Windows API 及 DirectX 等技術。

 

雖然 Wine 對於 DirectX 的實作一直有在默默地進行,也可以順利執行一些遊戲。不過長年以來,DirectX 及 Windows 遊戲支援並非是 CodeWeavers 主打的服務項目。而這點也反映在 CodeWeavers 起初的產品名稱「CrossOver Office」上,表示主力項目是對於 Windows 辦公軟體的支援。

 

起初將 Wine 大幅應用在遊戲領域的反而是另一間公司 TransGaming,他們的產品名為 WineX(後更名為 Cedega),是以 Wine 為基礎的封閉原始碼軟體。不過這項舉動,也使得 Wine 在 2002 年將許可證從 MIT 變更為 LGPL,來限制這類使用其原始碼、卻無須開放自身原始碼的情形 。

 

WineX 的產品功能標榜針對 DirectX 相容性改進、以及取得授權來解決 DRM 問題,而這兩點即是當年用 Wine 玩遊戲主要會面臨的問題。以前者來說,Wine 對 Direct3D 的支援尚不成熟;後者則主要是光碟保護的問題,使用 Wine 執行的遊戲經常會有插入光碟,卻無法通過檢查的問題。

 

當年 DR 最早認識到 WineX 這款軟體,是來自 Tom's Hardware 網站的一篇文章《Windows Gaming In Linux With WineX 2.0》。雖然這篇 2002 年的文章,如今已經看不到裡面的圖片了,不過至少顯示 WineX 確實能夠執行《英雄本色》(Max Payne,2001)這款 DirectX 8 遊戲,而這是同一時期的 Wine 所無法做到的。

 

然而隨著時間的推移,Wine 逐漸有迎頭趕上之勢。其中一項重要的里程碑,是能夠順利執行 PC 大作《魔獸世界》(World of Warcraft,2004)。儘管這項成就,部份需要歸功於遊戲自身的設計,比方說因為它是 MMORPG,所以沒有 DRM 的問題;以及遊戲本身即支援 OpenGL 繪圖模式(不過預設為 Direct3D)。但仍然足以促使 CodeWeavers 調整他們的產品定位,於是自 2007 年起,Wine 的商業版本 CrossOver Office 便更名為 CrossOver,宣告著對 Windows 遊戲的支援已納入在其產品項目裡。

 

另一方面,WineX/Cedega 的發展卻開始跟不太上 Wine 的腳步,甚至後來結束了整個事業,消失在 Linux 遊戲玩家的視野前。相反地,Wine 的散佈方式則出現新的發展。除了仍舊以開放原始碼的形式提供給 Linux 使用者,以及包含在商業版本的 CrossOver 外,Steam 及 GOG.com 上開始有遊戲是以 Windows 版本再捆綁 Wine,來提供對 Linux 平台的支援。

 

不過,直至目前為止 Wine 也仍然面臨著許多挑戰,因為仍然有為數眾多的熱門 Windows 遊戲,是沒有辦法順利透過 Wine 執行的,這也使得許多遊戲玩家很難認真地把 Wine 當作是一個解決方案。但如今 Valve 的最新舉措,再次顯示 Wine 在 Linux 遊戲發展上仍有著相當重要的職責。

 

在此之前,其實 Valve 已經做了許多努力,來設法提高 Linux 遊戲的數目。首先,他們推出了 Steam 客戶端的 Linux 版,並且以身作則,將旗下所有遊戲及引擎皆移植到 Linux;他們也提供了 Steam runtime,來免除開發者應付 Linux 發行版函式庫差異的痛苦;以及 SteamOS,一款專用於玩遊戲的 Linux 發行版。

 

但即便有了這些努力,現況對 Linux 玩家而言仍然可說是好壞參半。好的部份,是的確有越來越多遊戲支援 Linux,這些貢獻者包含 Feral InteractiveAspyrVirtual Programming 以及多位獨立工作者等。但壞的部份,則是仍然有許多遊戲公司,對於是否支援 Linux,顯得缺乏意願。甚至偶然會聽聞某些遊戲將移植到 Linux 的消息,最後卻又黯然取消。顯示出開發 Linux 遊戲的支付成本與經濟回饋,在許多遊戲公司的觀點裡,仍然不是一個正面的結果。

 

在此情況下,可以想見為何 Valve 會探索以 Windows 軟體相容層為基礎的方案,來進一步提高 Steam 上可支援 Linux 的遊戲數目。同時,將 Wine 整合到 Steam 裡,也表示 Valve 已認真地將它視為是一項解決方案。

 

由於 DR 平日對原生 Linux 遊戲的關注較多,所以當首次在 Steam 裡透過 Proton(Wine)來安裝及執行 Windows 遊戲時,其效果及整合程度著實讓 DR 有些驚訝。DR 直接測試了手上的兩款 Windows 遊戲,分別是 2016 年的《Killing Floor 2》(以下簡稱 KF2)和 2017 年的《Rising Storm 2: Vietnam》(以下簡稱 RS2),而兩款遊戲的執行結果恰好分別反映了 Proton 現有的優勢與障礙。

 

 

除了一些程式穩定性的問題外,KF2 這款 DirectX 11 遊戲的執行結果算是順利,甚至讓 DR 初次體會到 DXVK 的威力。DXVK 是以 Vulkan API 重新實作的 Direct3D 10、11 轉譯層,而不同於 Wine 原先以 OpenGL API 實作的轉譯層(wined3d)。在 Proton 預設啟用 DXVK 的情況下,不僅 KF2 玩起來相當順暢,DR 也沒有發覺與原生 Windows 環境相比,有任何畫面效果上的差異。反之倘若刻意切換至 wined3d,則遊戲畫面就會有很明顯的失常。

 

另一款遊戲 RS2 也可以執行,同樣在畫面上也沒有可見問題。但不同於 KF2,RS2 存在一項致命問題:加入遊戲伺服器沒多久就會被踢出去,換言之,多人遊戲是沒辦法玩的。這是因為遊戲使用了 Easy Anti-Cheat(EAC)防作弊工具,而這支工具在 Wine 底下無法正常運作。由於絕大多數的 RS2 伺服器都啟用了 EAC,因此這實際上會導致 LInux 玩家完全與多人遊戲無緣,只能在單人靶場裡練練靶而已。

 

 

前述的這兩項測試案例,首先突顯出 Vulkan 看起來真的會是 Linux 遊戲的未來,同時也是更好的選擇。多年來 Linux 遊戲開發者一直掙扎於如何妥善地從 Direct3D 移植到 OpenGL,但以較低階的 Vulkan 來實作,似乎是更好的解套方案。例如先前的一項消息,是 Tripwire 中止了為 KF2 開發 Linux 版的計畫(見《Killing Floor 2 for Linux is 'indefinitely on hold' as they can't find a developer》一文),原因是成本考量與繪圖方面的困難。但如今這款遊戲無須原生移植,就能夠在 DXVK 轉譯層下順暢執行,可謂直接印證了 Vulkan 的效益。

 

測試案例的另一方面,則顯示防弊工具已成為 Linux 遊戲一個重大的絆腳石。若稍微在網路上搜查一下,會發現不只是 RS2,有許多遊戲都可以成功透過 Proton/Wine 執行,卻因為 EAC 而無法在 Linux 上進行多人遊戲。然而有些防弊工具本身即支援 Linux,也有些防弊工具在 Wine 底下運作良好。因此最終來說這不應該視為是一個無法排除的技術障礙,而是取決於防弊工具的開發者,是否願意為 Linux 平台設下一個合適的判別條件,或是變更實作方式。

 

總結來說,儘管 DR 仍然希望增加的是 Linux 原生遊戲的數目,但 Proton 的出現,無論如何對於 Linux 作為一個遊戲平台的發展都是有益的。不僅是提高 Linux 玩家安裝及執行 Windows 遊戲的便利性,或許也能夠激勵遊戲公司,去思考以 Wine 為基礎的 Linux 支援方案。畢竟如果一款 Windows 遊戲,只要經過少部份的微調,就能夠在 Wine 上完善執行的話,那麼其成本應該會比完整的遊戲移植還要低廉許多。

 

 

分類: