[TIL] 如何用 linux 玩遊戲

AlanZhang 發表於 2023-01-24
Linux

最近很想買個 Steam Deck 感受一下 linux 下的遊戲體驗,無奈老婆不批經費,就想試試能不能用家裡的老 mac 裝 linux 玩一下。

系統

裝置: Macbook Pro Retina Late 2013 13 寸
系統:ubuntu 22.10

  • 選 ubuntu 的原因是 steam for linux 說官方目前只支援 ubuntu LTS 版本(22.04)
  • 選 22.10 的原因是 22.04 的依賴裝起來有不少小問題,後面升級的 22.10

(踩過坑後的)推薦步驟

  1. 安裝系統,處理一些雞毛蒜皮的驅動問題、系統小 bug
  2. 安裝 lutris,會自動幫你安裝很多依賴
  3. 安裝 ProtonUp,用它給 lutris 安裝其他的相容層版本,預設 wine 有問題的情況下可以多換幾個試試,小白建議無腦全裝上,有問題一個一個換。
  4. 搞幾個想體驗的遊戲,在 lutris 中新增好,就可以啟動試試了

效果如何

試驗了將近十款遊戲,都是很輕量的,一款 3d。

少數需要折騰一些,最終都執行起來了,體驗屬於可以正常遊玩的程度。

個人感受是超出預期的,對 Steam Deck 的實際表現更加期待了。

名詞解釋

折騰過程中讀者可能會遇到大量新概念,這裡對我覺得比較關鍵的概念做簡單解釋:

  • directx、opengl、vulkan、metal

    • 都是圖形 API,同一類東西
    • directx 是 windows 下的
    • metal 是蘋果的
    • opengl 跨平臺
    • vulkan 比較新
  • dxvk、wined3d

    • dxvk 是指 DirectX VulKan,將 directx 的指令翻譯成 vulkan 的,做到本不支援的 directx 上的遊戲可以執行在 vulkan API 上
    • wined3d 同理,是把 directx 翻譯成 opengl,是 wine 內建的方案。優勢是相容性好。但現在基本全是用 dxvk
  • wine

    • 作用是在 POSIX 相容系統中執行 Windows 應用
    • 不是虛擬機器/模擬器,它的名字的由來就說了這點 “Wine Is Not an Emulator”
    • 原理也是翻譯,把 Windows API 翻譯成 POSIX。相對虛擬機器來說的優勢是效能很高,可以認為是原生效能在 linux 上跑 windows 應用
  • wineprefix

    • 使用 wine 執行 windows 應用的環境。不同的應用需要不同的環境,比如應用分 32/64 位。有些遊戲需要特定版本的依賴,高了/低了就崩潰,但另一個又需要另一個版本,兩邊就衝突了。為了兩個遊戲都能正常正常執行,可以讓它們在兩個相互獨立的環境中執行,各自用各自的依賴、配置,換不同的 wineprefix 就可以實現。
  • lutris

    • 開源的遊戲庫管理工具,可以新增 steam、gog、epic、本地等各種來源的遊戲,統一管理、檢視、啟動
  • mangohud

    • 遊戲中可以檢視 cpu gpu 記憶體 fps 等資訊的儀表盤

Q&A

  • 可以不用 lutris,直接執行 exe 麼

    • 可以,另外單獨裝 wine,然後 wine xxx.exe 即可
  • WINEARCH 建議用什麼

    • 建議 64(預設也是 64),因為 64 既可以跑 64 位應用,也可以跑 32 位。實在出問題跑不動再明確換成 32
  • WINEPREFIX 建議搞幾個

    • 網上看到有人每款遊戲一個 prefix,有點過了。。建議預設一個 prefix 即可,有遊戲需要獨立 prefix 的再單獨開
  • 建議普通玩家嘗試這個方案麼

    • 不建議,別想不開。沒有技術背景的普通使用者推薦步驟的第一步可能都走不通
  • nvidia、amd GPU 遇到問題咋辦

    • 沒試過,我是 intel 的板載 gpu,不是正經要用這個方案玩遊戲,純粹體驗一下而已
  • lutris 安裝依賴的時候出問題了

    • 具體問題千變萬化,自行搜尋解決
  • wine 日誌裡有一堆 fixme,需要關注麼

    • 可以忽略,有問題的時候只看 err 即可,fixme 可以理解成寫給開發者看的
  • 日誌有個 MESA-INTEL: warning: Haswell Vulkan support is incomplete 什麼意思

    • 我的裝置是 intel haswell 顯示卡,裝置太老了驅動中對 vulkan api 的支援不完整。不是說完全不能用,只是提醒你大機率踩坑
    • 實際使用中其實沒有遇到什麼問題,估計是因為我體驗的遊戲本身也都是老古董
  • 我想玩的遊戲啟動不了怎麼辦?

    • 1 換相容層,再試,不行再換,換完都不行繼續步驟 2
    • 2 檢視日誌,找到錯誤
    • 3 搜尋錯誤資訊,找解決方案
    • 個人體驗下來問題最少的相容層是 Proton GE
    • 有些錯誤不一定是相容層的問題,而是透過相容層執行的應用的報錯,所以如果查出來的解決方案和 wine 毫無關係也不要忽略。比如我測試的一款依賴了 chromium 的遊戲,報的錯搜尋出來全是瀏覽器相關的,按指導加執行引數就正常了
  • 想看遊戲的 fps

    • lutris 有這個選項,去遊戲配置裡找一下,叫做 mangohud fps 啥啥啥的
    • 可能只對部份遊戲有用,不行就不看了唄,能不能玩順不順自己上手試試就知道了嘛
  • 視窗很小怎麼辦

    • 在 lutirs 的遊戲配置裡啟用 DPI upscaling,調高 DPI
  • 調整完 DPI 沒有變化怎麼辦

    • 你的遊戲可能太老了,可以參考下面一條用“全屏顯示”
  • 如何全屏顯示所有遊戲

    • lutris 有這個選項,去遊戲配置裡找一下,叫做 enable gamescope 啥啥啥的
    • 如果選項是灰的,就自行搜尋先安裝上 gamescope
    • 然後下面兩個解析度的框的填寫格式是 1080x900 這樣,具體含義自行搜尋
    • 可能出現滑鼠速度變快/慢/卡的情況,我沒了解過怎麼解決
  • 我只要一切換視窗遊戲就會關閉怎麼辦

    • 同上,使用 gamescope 可以解決
  • 用 gamescope 全屏顯示了,還能視窗化麼

    • 可以,ctrl + alt + f 視窗化
  • 可以玩 steam 遊戲麼

    • 可以,ubuntu app store 搜尋 steam beta 安裝即可,裝起來比 lutris 方便多了
    • 裝完後,可以使用 ProtonUp 裝額外的相容層
  • 可以用 FSR 麼

    • 可以,lutris 預設開啟 FSR,在全屏模式中調低解析度即可