《極限競速:地平線 6》(Forza Horizon 6) 結束搶先體驗並於今日正式上市,但在 Linux 與 Steam Deck 平台上的首批玩家卻迎來了極度不穩定的體驗。Valve 工程師、VKD3D-Proton 主要維護者 Hans-Kristian Arntzen 近日在 GitHub 的一則草稿 Pull Request 中直言,這款遊戲的底層渲染邏輯「極度毀損 (extremely broken)」,迫使開源社群必須導入一系列「醜陋的妥協 (horrible workarounds)」,且這些修補措施目前仍處於草稿階段尚未合併。
荒謬的記憶體調度:先使用,後分配
根據 Arntzen 的分析,《極限競速:地平線 6》在圖形資源的管理上存在著令人難以置信的缺陷。最嚴重的問題之一,在於遊戲會出現「使用前未分配 (use-before-alloc)」的荒謬行為。具體來說,遊戲引擎會在向 GPU 提交渲染指令後,才開始分配對應的資源並寫入描述符(Descriptor)。
這種在 GPU 運算期間任意改寫描述符堆積的「瘋狂行徑」,完全違反了現代圖形 API 的常理,可能引發不可預期的 GPU 崩潰,但開發者目前尚未確認此問題已確實造成 hang。諷刺的是,開發團隊指出前作《極限競速:地平線 5》也存在類似的邏輯問題,顯示這可能是該遊戲引擎長久以來的歷史共業。

RDNA 架構災情與相應修補手段
針對 AMD 的 RDNA3 與 RDNA4 架構,《極限競速:地平線 6》觸發了記憶體別名(Aliasing)錯誤。遊戲會先寫入一個影像描述符,隨後卻將其當作普通緩衝區讀取,導致在上述架構下產生 16-bit 偏移讀取錯誤,直接破壞畫面渲染。這類影像與緩衝描述符混用的問題在 VKD3D-Proton 開發社群中早已是已知的潛在風險,而此次是它在真實遊戲中首度引發實際問題。
Arntzen 表示,針對描述符堆積路徑的對應修補相對容易實作。不過,目前這批修補仍處於草稿 Pull Request 階段,尚未合併進 VKD3D-Proton 主線。若想在 Linux 上順利跑完遊戲的基準測試,玩家需同時滿足三個條件:手動套用此草稿 PR、使用最新的 Mesa git 版本驅動,並加入啟動參數 RADV_EXPERIMENTAL=heap radv_wait_for_vm_map_updates=true %command%。
系統生態系邊緣的開發代價
Valve 官方也迅速做出反應,將《極限競速:地平線 6》的相容層強制切換至 Proton Experimental 分支,而 NVIDIA 陣營也預計在即將到來的 Linux 驅動更新中修復相關崩潰問題。
這起事件深刻突顯了 Linux 遊戲生態系的隱憂。由於 Linux 用戶市占率仍不足以讓部分 3A 遊戲開發商投入足夠的相容性測試資源,Valve 與開源社群往往必須承擔「擦屁股」的責任。隨著未來的 Steam Machine 與 VR 頭顯 Steam Frame 問世(目前兩者因記憶體供應問題發布時程未定),加上仍在開發中的次世代 Steam Deck,關鍵或許仍在於 Linux 用戶市占率能否持續成長,進一步讓開發商有動力投入相容性測試資源。
- 參考資料:GamingOnLinux
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!