▍前言
就在著手寫下這篇文字的前一天,我剛剛在《死亡擱淺導演剪輯版》中獲得了全部 63 個成就,而使用的設備,就是一台運行著 Linux 系統的 ROG Ally 掌機。所以是的,真的有人會用 Linux 系統打遊戲。

去年八月份我入手了 ROG Ally 掌機,也是在那時,對 Windows 已經基本上「斷舍離」的我,才第一次用上了 Windows 11。從一個 Linux 用戶的角度來看,Windows 11 真是槽點不打一處來。
如今快十個月過去了,我在這台掌機上折騰了很多不同的系統,最終安頓在了 Bazzite;也打了不少遊戲,可以說過去幾個月我的遊戲時間,比之前幾年加起來都多。在這篇文章中,我打算以一個不同的視角,結合 Linux 系統在 ROG Ally 掌機上的體驗,聊一聊我對 Linux 遊戲現狀的一些個人見解。
▍Steam 遊戲
可能是害怕被微軟「卡脖子」,Valve 在 Linux 遊戲領域已經耕耘多年了,SteamOS 從一開始基於 Debian,到如今的基於 Arch;從早期失敗的 Steam Machine 和 Steam 手柄,到如今大獲成功的 Steam Deck。同時 Valve 也沒有閉門造車,SteamOS 的重要組件 GameScope 與 Proton,是直接開源並且所有 Linux 系統都可以直接用的;對核心與驅動程序的改進,也是直接貢獻到上游的。Valve 幾乎是憑著一己之力盤活了整個 Linux 遊戲的生態。
對於 Steam 平台的遊戲,雖然原生支持 Linux 的遊戲並不多,但是 Proton 已經足夠好用。按照我的經驗,其實大部分情況下都不用關心兼容層的問題,只要你能設法安裝 Steam,接下來的事情就和在 Windows 下差不多,只要點擊下載然後遊玩就行了。
如果實在不放心遊戲的兼容性到底如何,也可以在 protondb 網站上查看所玩遊戲的兼容性,在上面搜索想要查看的遊戲,可以看到玩家對遊戲給出的兼容性評級,以及對可能存在的問題的解決方案。
當然前面這一切的前提是所玩的遊戲不是需要反作弊支持的多人遊戲,反作弊支持會在後面的章節中談到,或者是遊戲開發商直接拒絕遊戲在 Linux 上運行,這種情況也只能 F**k them 了。
Steam 遊戲在 Linux 下還有一個特色功能是 Vulkan 著色器預緩存更新,它的大概原理是具有相同硬體的玩家之間相互共享構建好的 Vulkan 著色器緩存,從而減少遊戲過程中著色器緩存構建對性能的消耗,可以很大程度上增加遊戲幀率的穩定性。
我測試了古墓奇兵崛起這款遊戲,720p 中畫質預設,加 FSR 上採樣,15W TDP,運行遊戲自帶的性能測試,Steam 版本的遊戲平均幀數有 51 幀,而 Epic 版本的遊戲,在第一次運行性能測試時,平均幀數只有 45 幀,期間幀數波動也比較明顯,再一次運行性能測試,因為同樣的場景已經加載過一次,著色器緩存已經構建好了,幀數表現好了一些,有 49 幀,但還是相比於 Steam 版本的遊戲差了一些。
具體到實際的遊戲體驗,在加載新場景時,如果沒有著色器緩存,就會導致幀數發生較大的波動,而如果是之前加載過的場景,幀數波動就不會那麼明顯。

Steam 的著色器預緩存更新效果雖然是很好,但也存在一些問題:
首先是額外占用空間且不可以移動,雖然安裝遊戲時可以選擇安裝到不同的分區裡面,但著色器緩存是會統一放在家目錄裡面的,不可以更改,有些遊戲的著色器緩存占用可能有好幾個 G,這對於主硬盤空間吃緊的用戶來說很不友好,比如 64G 版本的 Steam deck 用戶,雖然將 mesa 更新到 24 版本後,構建的著色器緩存占用空間小了一些,但也沒有解決根本的問題;
另一點是更新頻繁,幾乎每天我第一次打開 Steam 時,都會發現有一兩個遊戲需要更新,並不是常規的內容更新,而是著色器預緩存更新,一般情況下不會超過幾百兆,按照一般人家的網路速度也就是多等幾分鐘的事,按理來說也可以接受,但它與常規遊戲更新最大的區別就是折磨人的下載速度,大部分情況下前 90% 的下載速度還算正常,但往往一旦過了 90% 的下載進度,網路速度就會逐漸走低,有時甚至會卡在最後一兩 MB 更新不完,需要等上好久才能下載完並啟動遊戲;
當你以為著色器緩存終於下載完了,終於可以進入遊戲了,點擊啟動遊戲後,往往會發現會有下一個進度條在阻攔著你,那就是遊戲需要處理下載好的著色器緩存,這個過程又需要一段時間。
這個時間取決於機器的性能和遊戲本身,通常是是遊戲安裝完成後第一次啟動,或是在遊戲進行過一次大更新後,處理緩存的時間會格外漫長,雖然可以選擇跳過這個步驟,但是會導致在遊戲時產生較嚴重的性能問題。一個比較極端的例子是《最後生還者第一部》剛剛登陸 PC 時,博主 GameingOnLinux 在 Steam Deck 上測試這個遊戲,第一次啟動花了差不多一個小時才完成著色器緩存的構建。
整體來說,Steam 遊戲在 Linux 下的體驗,已經足夠好,即使是什麼也不懂的新手,也可以順利遊玩,但是,相比於在 Windows 下 Steam 遊戲的體驗,還是有所欠缺。當然 SteamOS 的遊戲模式與 Steam Input 針對手柄操作的體驗是獨一檔的,這是其他廠商在 Windows 下達不到的體驗。
▍非 Steam 遊戲
如果說 Steam 遊戲是傻瓜式的遊玩體驗,那麼要想在 Linux 下遊玩其他平台的遊戲就需要一些知識水平了。如果遊戲平台原生支持 Linux,倒無需擔心太多,比如 Java 版的 Minecraft;而如果遊戲平台不支持 Linux,就要麻煩許多了,要想讓這些平台在 Linux 上運行,往往需要了解不同版本的兼容層的區別與如何使用,遇到問題要如何解決等等,雖然現在有很多工具嘗試簡化這些問題,但相比於 Steam 平台,還是要困難很多;更是有一些平台遊戲無論如何也無法支持在 Linux 上運行,比如 Xbox Game Pass,這類平台的遊戲只能通過雲遊戲來遊玩了。
因為我從 Epic 平台白嫖了不少遊戲,所以下面主要談一下我在 Linux 下遊玩 Epic 平台遊戲的經驗。
首先是 Heroic Games Launcher,這是我目前用的最多的一個工具,支持 Epic、GOG 和 Amazon 平台,也可以手動添加遊戲。具體到 Epic 平台的支持,是基於 Legendary 實現的,支持了原版 Epic 遊戲啟動器的絕大多數功能,包括雲存檔支持和 EOS Overlay 支持等等,另外還可以下載 Wine-GE 與 Proton-GE 的兼容層,並為每個遊戲單獨指定不同的兼容層和不同的啟動選項。

不過我目前用下來,Heroic Games Launcher 還是存在一些問題,比如要啟用 EOS Overlay 需要一些額外配置,我自己實際測試下來還發現只有用 Wine-GE 兼容層才能實際啟用 EOS Overlay,Proton-GE 就不行。
還有遊戲需要在 Heroic 啟動器內啟動才能聯網,如果將遊戲快捷方式添加到 Steam 然後直接啟動遊戲,那遊戲是多半無法聯網的,單機遊戲還好,需要聯網的遊戲就比較難受了,像《死亡擱淺》這樣將聯網作為一種玩法的遊戲,雖然我是在 Epic 平台免費領取的,折騰到最後我還是在 Steam 又買了一份。
為了讓 Epic 遊戲能正常聯網,可以將 Heroic 啟動器本體添加到 Steam,在 Steam 的遊戲模式中啟動 Heroic,再在啟動器里啟動遊戲。這樣雖然可以解決遊戲無法聯網的問題,但這樣無法為每個遊戲設定專屬的 TDP 預設。另外由於 Steam 遊戲模式下 Gamescope 的特性,在 Heroic 啟動器中為遊戲配置啟動項時,會使下拉菜單不可用。Heroic 雖然也支持手柄操作,但操作邏輯實在有點反人類,你永遠不知道按方向鍵是選擇下一個選項還是直接回到上一級菜單。所以大部分時候安裝與配置遊戲還是需要回到桌面模式,在遊戲模式下,稍微複雜點的操作都會讓人血壓飆升。
接下來要提的是 Lutris 和 NonSteamLaunchers,為什麼把這兩個放在一起說呢,因為這兩個工具運行 Epic 平台的遊戲實現原理都差不多,就是通過兼容層安裝並啟動官方 Windows 版的 Epic 遊戲啟動器,免去了命令行運行 Wine 繁瑣的步驟,全程下一步確定就好。
Lutris 是一個相對比較老牌的工具,除了支持安裝並登陸很多平台的遊戲啟動器外,其官方網站上還有很多社區維護的遊戲安裝腳本,可以說是在 Linux 下僅次於 Steam 的第二大遊戲社區了。不過也正因為這樣,Lutris 並沒有專門為 SteamOS 進行適配,大部分遊戲安裝與配置都需要在桌面模式完成,其基於 GTK 的軟體界面也有些老舊,操作也有些不太直觀。

NonSteamLaunchers 是一個專門為 SteamOS 適配的第三方遊戲工具,它實質上只是一個腳本用來啟動並運行第三方遊戲平台,還能自動添加到 Steam 中,開發者還提供了一個 Decky 插件,目前需要切換到 Decky Loader 測試版商店才可以安裝,實現了不用切換到桌面模式就可以遊玩到第三方平台的遊戲。

Lutris 和 NonSteamLaunchers 都是通過兼容層運行的 Windows 版啟動器,正是因為這樣,無法像 Heroic 那樣為不同遊戲指定不同的兼容層與啟動選項,這也是它們的缺點之一吧。
最近我又發現了一個工具 Junk Store,這是一個 Decky 插件,目前只支持 Epic 平台,和 Heroic 一樣是基於 Legendary 實現的,在體驗上我認為它是這幾個工具裡面最好的了,安裝好插件後,按照提示安裝依賴和反作弊運行時,登陸賬號就可以直接使用了,全程不需要切換到桌面模式,遊戲管理也媲美原生 SteamOS 的體驗。甚至在 Heroic 上一些需要額外配置的遊戲,比如《糖豆人》,在 Junk Store 上直接下載無需配置就能運行。

但是它在功能上有些缺失,Epic 平台的雲存檔功能目前還不支持,對於其他平台的支持目前也在開發中,目前可以通過贊助作者的 Patreon 來獲得支持 GOG 平台的測試版。在作者最新的博客中提到他們打算休息兩周,在這兩周時間裡不會有新代碼提交,也不會提供任何支持,但對與已經贊助過的用戶依舊會提供支持。
▍Wine 與 Proton
在 Linux 下運行 Windows 遊戲,兼容層是必須的,Proton 是 Valve 開發的 Windows 兼容層,它實質上是基於的 Wine,並打包了 dxvk、vkd3d 等遊戲必備組件,所以理論上使用 Wine 配合 dxvk 也可以正常運行大多數遊戲,但是原版的 Wine 並沒有對遊戲進行優化,可能會導致一些運行問題。這就不得不提 Wine-GE 與 Proton-GE 了,這是 GloriousEggroll 針對遊戲優化並構建的 Wine 與 Proton,也是除了官方的 Wine 與 Proton 之外被用的最多的兼容層了。
至於到底要選什麼兼容層,我個人有一套經驗。如果是 Steam 平台的遊戲,直接默認就可以正常運行遊戲的話,那就不用關心,因為默認的兼容層就可以正常運行了,而如果遇到了一些問題,可以先在遊戲屬性中嘗試將兼容層切換到 Proton Experimental,而如果 Proton Experimental 依然存在問題,最後再嘗試 Proton-GE,另外也可以嘗試多切換幾個不同版本的 Proton,因為有些老遊戲用比較老版本的兼容層可能運行會更好。
而如果是非 Steam 遊戲,比如在 Heroic 裡面運行 Epic 遊戲,不太推薦使用原版的 Proton,因為用原版 Proton 運行非 Steam 遊戲無法獲取到對開發者有用的排錯日誌,比較推薦優先使用 Wine-GE 與 Proton-GE,而在這兩者中,更推薦先嘗試 Wine-GE,存在問題就換到 Proton-GE,實在不行再嘗試用原版 Proton。另外需要注意,Wine 與 Proton 默認處理 Prefix 的路徑不同,如果遊戲兼容層從 Wine 切換到 Proton,或是從 Proton 切換到 Wine,遊戲數據可能會不互通。
使用兼容層難免會造成一些性能損失,但是按照我的經驗,雖然兼容層存在性能損失,但 Windows 系統後台的額外開銷又彌補了這一部分,所以大部分情況同款遊戲在 Linux 與 Windows 下性能表現相差不大。一個不太嚴謹的對比,筆吧評測室在對 ROG 掌機的評測影片中,Windows 環境下,運行《古墓奇兵暗影》自帶的性能測試,30W TDP,1080P 高畫質預設,平均幀率 41,而我在 Linux 下,用 Proton Experimental 兼容層運行,同樣的畫質與 TDP 設定,平均幀率也是 41。這個遊戲是有原生 Linux 版本的,在 Linux 版本下,同樣的測試,平均幀率有 42,好一點,但不多。

另外我還聽說一些微軟第一方遊戲在 Linux 下性能會差一點,這個我無從查證,但是前兩天我在玩《極限競速地平線 5》的時候卡出一個 BUG,車輛穿進地形裡面了,甚至還一直往下掉,可能這確實是來自競爭對手的惡意吧。
另外如果一個遊戲有原生 Linux 版本,我個人也更傾向於用兼容層運行 Windows 版本,因為一些遊戲開發商雖然會為 Linux 做原生適配,但對後期維護並不上心,導致實際體驗不如 Windows 版本。
上文提到的《古墓奇兵暗影》,雖然其 Linux 版本性能稍好,但少了一些畫質選項,甚至不能調整窗口和全屏,手柄控制也有些問題,我遇到過手柄抽風一直震動個不停,甚至退出遊戲了還在震動。另外還有之前 Steam 免費送出的《地鐵最後的曙光》,這個遊戲有 Linux 版本,但我根本無法讓它正常運行,只有用 Proton 運行 Windows 版本才能正常打開。還有一些老遊戲,Linux 版本無法顯示中文,用 Proton 運行就可以正常顯示中文了。
不過 Steam 對兼容層的使用有一個頗為惱人的點,Wine 和 Proton 有一個概念叫 Prefix 路徑,這個路徑相當於正常 Windows 的 C 盤,一般在運行程序時為了防止衝突,會為每個程序指定一個不同的 Prefix 路徑,但 Steam 對遊戲的 Prefix 路徑藏的非常深,在用戶主目錄下的 ~/.local/share/Steam/steamapps/compatdata,裡面的一堆數字命名的文件夾就是遊戲的 Prefix 路徑了。這對於需要修改遊戲文件的操作就很不友好,因為幾乎無法分辨這一堆數字文件夾到底哪個是要找的路徑。
我之前將遊戲《死亡擱淺》升級到導演剪輯版時就遇到了這樣的困擾,遷移存檔時,因為兩個遊戲的 Prefix 路徑不同,導演剪輯版是無法識別到原版的存檔的,需要手動將原版 Prefix 路徑中的遊戲存檔複製到導演剪輯版的 Prefix 路徑中,面對這一堆數字組成的文件夾,我傻了眼。不過倒也不是沒有解決方案,使用 Protontricks 這個軟體,打開後會顯示 Steam 目前安裝了哪些遊戲以及遊戲對應的數字 id,這個 id 就和 Prefix 路徑是一一對應的。
▍反作弊現狀
前面所講的內容幾乎只針對於大多數單人遊戲或是不需要反作弊系統的遊戲,一個原因是我個人其實幾乎不玩多人遊戲,另一個原因是 Linux 下的反作弊支持確實需要單獨拿出來講一下。作為測試我在 Epic 平台安裝了糖豆人,在 Heroic 上雖然需要一些額外配置,但最終還是可以正常啟動,沒有彈出反作弊警告,不過不知是不是因為我沒有開加速器,始終連接不上伺服器。
在 Linux 平台下可以正常使用的反作弊系統據我所知有 Easy Anti-Cheat、BattlEye 還有 V 社自家的 VAC,當然前提是遊戲開發商願意為它們做適配,而現實情況是,大部分的多人遊戲在 Linux 下的反作弊支持有些一言難盡。
Are We Anti-Cheat Yet? 這個網站收錄了一個多人遊戲列表,並對它們在 Linux 下對反作弊支持的情況做了兼容性評級。根據這個網站的數據,在他們收錄的 380 款遊戲中,目前有 160 款是已知可以完美支持反作弊的,有 46 款在進行一些配置後也可以讓反作弊系統正常運行,只有 3 款遊戲開發商表示在未來會對 Linux 做適配;在這之外,有 143 款遊戲是已知由於反作弊系統而完全無法在 Linux 上運行,甚至還有 28 款遊戲的開發商明確表示拒絕適配 Linux。這個列表中有將近一半的遊戲無法支持 Linux 反作弊系統,這個現狀還是相當讓人失望的。
▍手柄外設支持
Linux 系統的外設支持一直都挺一言難盡的,因為大多數外設廠商幾乎不會為 Linux 開發驅動軟體,外設支持只能靠逆向工程和開源驅動,不過在 V 社的努力下,Steam 的遊戲手柄支持還是很不錯的。
我的 ROG Ally 掌機在默認情況下,一套 Xbox 布局的按鍵會被識別為一個 Xbox 360 手柄,大部分功能也可以正常工作,但正面額外兩個按鍵,背面兩個背鍵,還有陀螺儀是無法正常使用的,不過我用的 Bazzite 系統預裝了 Handheld Daemon 這個軟體,可以將手柄按鍵、額外按鍵以及陀螺儀合併模擬成一個 Dualsense 手柄,左面按鍵被映射成 Playstation 按鍵,和 Steam Deck 左邊的 Steam 鍵和 Xbox 手柄中間的西瓜鍵功能一樣,右面按鍵被映射成快捷菜單按鍵,兩個背鍵被模擬成 Dualsense 手柄的左右觸摸板按壓,陀螺儀可以正常使用,甚至兩個 RGB 圓環也被模擬成了 Dualsense 手柄的 RGB 燈帶,可以說這個手柄支持已經近乎完美了。另外值得一提的一點是,ROG 掌機左面的額外按鍵在硬體上就不支持長按,所以一些需要長按的操作會不支持,Handheld Daemon 提供了一個選項可以讓正面兩個額外按鍵與 select、start 鍵上下互換,從而變相支持了長按操作。
在這之外,我還買了一個 Xbox Seres X 手柄,在到貨前我還專門看了下 xone 與 xpadneo 的文檔,擔心手柄會在 Linux 下支持不好,不過到貨後我發現所有功能都可以開箱即用,在有線、接收器與藍牙模式都可以完美識別,正面的截圖按鍵與下面的耳機孔都可以使用,對於支持扳機震動的遊戲,在禁用 Steam Input 後,也可以正常識別並使用扳機震動。我唯一遇到的問題,就是有時 Bazzite 系統更新並首次重啟後,一些禁用了 Steam Input 的遊戲會無法識別到 Xbox Series X 手柄,啟用了 Steam Input 後就可以正常識別了,關機並長按開機鍵 10 秒,再次開機後就沒問題了,不知道是 Bazzite 的問題還是手柄的問題。
在理論上,其他御三家的第一方手柄,比如 Dualsense 和 Switch Pro 手柄,應該也是可以完美支持的,我在網上也看到過有人用這些手柄在 Linux 上打遊戲,但對於其他的第三方手柄,在 Linux 下的支持效果那就是未知數了,可能一些基本功能可以用,需要廠商驅動軟體來配置的功能就有點難搞了。
另外,Steam Input 的功能十分強大,除了正常的手柄操作以及將手柄映射為鍵鼠以外,還支持很多高級操作,比如自定義按鍵層級,自定義虛擬菜單等等,這個影片對 Steam Input 的高級功能做了一些簡單介紹,至於能靠這些功能實現什麼操作,就靠自己的摸索和想像力了。
▍後記
回到標題的問題,真的會有人用 Linux 打遊戲嗎?答案可能會比較複雜了,Linux 遊戲支持已經很好,但對多數人來說還不夠好,Steam 的硬體調查中 Linux 系統的占比只有可憐的百分之二,這還是在 Steam Deck 大獲成功的影響下。所以,真的會有人用 Linux 打遊戲,但用 Linux 打遊戲的人,可能大多是像我這樣沒有朋友的偏執狂,我相信,任何一個正常的普通人,都不會考慮用 Linux 打遊戲,甚至可能都不會知道 Linux 是什麼,可如果有人真的看到了這裡,大概他也是和我一樣偏執的同道中人吧。