第六章:Gabe Newell 的越獄行動
2026 年 3 月,Steam 的月度硬體調查報告裡,Linux 的市佔率悄悄爬上 5.33%——歷史新高。這個數字看起來微不足道。但它背後站著超過五百萬台 Steam Deck——一台掌上型遊戲機,跑的是 Arch Linux,卻能玩 Steam 上超過十萬款 Windows 遊戲。
你在上面玩《艾爾 登法環》。按下「開始」,畫面出來了,手把震動了。你不知道你在用 Linux。你不知道在你按下按鈕的那一瞬間,有一座看不見的翻譯機器在底下全速運轉——把遊戲發出的每一個 DirectX 指令,即時轉換成 Linux 的 Vulkan API,再送進 AMD 的開源驅動,最後才變成螢幕上的像素。
整條管線,沒有用到一行微軟的原始碼。沒有任何一份授權合約。沒有任何人的許可。
第二章講過:DirectX 是一把鎖。它把整個 PC 遊戲生態鎖死在 Windows 上,鎖了三十年。每一個用 Direct3D 寫引擎的工作室,都是那道牆的一塊磚。
打開這把鎖的人,恰好是當年幫微軟裝上這把鎖的人之一。
I. 作案動機
2012 年 7 月 25 日,西雅圖 Casual Connect 遊戲研討會。Gabe Newell 走上台,說了一句讓全場靜下來的話:
「Windows 8 對 PC 生態裡的每一個人來說,都是一場災難。」
這句話從別人嘴裡講出來,是牢騷。從 Newell 嘴裡講出來,是宣戰。
因為 Newell 比在場所有人都清楚微軟接下來要做什麼。他在微軟待了十三年——他自稱是「Windows 前三個版本的製作人」。1996 年,他還是 Windows 95 團隊裡那位飛去德州,把 id Software 拉進 DirectX 陣營的年輕產品經理。第二章記錄過那筆交易。他親手幫微軟贏了那一局。
他離開微軟之後創辦 Valve,做了 Half-Life、做了 Counter-Strike、做了 Portal。但他真正改變產業的不是遊戲——是 Steam。
2003 年上線的 Steam,是 PC 遊戲的數位發行平台。十年之內,它吃下了 PC 遊戲市場超過七成的銷售額。每一筆交易,Valve 抽三成。到了 2012 年,Steam 上有超過兩千五百款遊戲,全球活躍帳號數以千萬計。Valve 從一家遊戲開發商,變成了一家收租的平台商。
但 Steam 有一個致命的弱點——它跑在 Windows 上。
Valve 的整個商業帝國,建立在微軟的地基上。微軟隨時可以改規則。而 2012 年,微軟準備做的,恰好就是改規則。
Windows 8 引入了 Windows Store——一個整合在作業系統裡的應用商店。介面仿照 iPad、交易流程仿照 App Store、抽成模式同樣仿照 Apple。微軟的意圖不需要猜:如果所有 Windows 軟體都通過 Windows Store 發行,微軟就能像 Apple 一樣,對每一筆交易抽成,而 Steam 就會從「唯一的通道」降格為「眾多商店之一」。
Newell 看穿了這步棋。不是因為他比別人聰明,是因為他在微軟待過十三年,親眼看過那個組織怎麼運作。微軟不會一夜之間封殺 Steam——那太粗暴,會引發反壟斷訴訟。微軟會慢慢來。先是在 Windows Store 裡提供獨佔內容。然後是讓 Store 的 app 在系統層面享有安裝優先權。然後是讓第三方安裝包多一個「你確定要安裝來路不明的軟體嗎?」的警告彈窗。然後是把那個彈窗的「確認」按鈕藏得越來越深。
溫水煮青蛙。Newell 見過微軟用這套手法對付 Netscape、對付 Java、對付 OpenGL。他自己就是那口鍋裡出來的人。
所以他在台上接著說了第二句話:「我們要把 Steam 上所有兩千五百款遊戲,帶到 Linux。」
這句話聽起來像空話。2012 年的 Linux 桌面市佔率不到 2%,遊戲生態幾乎是零。但 Newell 不是在講市佔率。他在講的是——逃生門。
他要讓 Steam 可以不需要 Windows。不是明天,不是明年。是在微軟收緊繩索之前,把門打開。
上一章講過,AI 研究員早在這之前就已經逃往 Linux——他們需要的自由度,Windows 的封閉架構給不了。Newell 要做的事,是讓第二批難民 跟上去:遊戲玩家。
II. 武器鍛造
要在 Linux 上跑 Windows 遊戲,正統的做法是請每一家遊戲工作室出一個 Linux 原生版本。
這條路走不通。原因在第二章已經解釋過了:DirectX 鎖定效應。一個用 Direct3D 寫了五年的引擎,移植到 Linux 的成本等於從頭寫。沒有工作室願意花這個錢,也沒有工作室看得到 Linux 上有足夠多的玩家來回本。
Newell 選了一條完全不正統的路:不修改任何一行遊戲的原始碼,在 Linux 底下架一座翻譯機器,把遊戲發出的每一個 Windows API 呼叫——包括 DirectX——即時轉換成 Linux 聽得懂的東西。
這個想法不是 Valve 發明的。它的起源可以追溯到 1993 年——一個叫 Wine 的開源專案。Wine 的全名是 "Wine Is Not an Emulator"。它的目標是在 Linux 上實作 Windows API 的行為,讓 Windows 程式以為自己跑在 Windows 上,實際上底下是 Linux 核心在幹活。
Wine 做了二十年。它能跑一些 Windows 的辦公軟體、簡單的工具程式。但遊戲——尤其是 3D 遊戲——幾乎不可能。因為 3D 遊戲不只呼叫 Windows API,它還重度依賴 Direct3D,而 Direct3D 的行為深深纏繞在 Windows 專屬的 GPU 驅動架構裡。Wine 早年的做法是把 Direct3D 翻譯成 OpenGL——但 OpenGL 的設計太高階,翻譯 Direct3D 那些貼近硬體的低階操作時,開銷大到吃掉效能。一款在 Windows 上跑到六十幀的遊戲,經過 Wine 翻譯之後剩不到一半。
突破口出現在 2017 年。一位網名 doitsujin 的開發者 Philip Rebohle 啟動了一個叫 DXVK 的專案。DXVK 做一件事:把 DirectX 9、10、11 的 API 呼叫,翻譯成 Vulkan——那套由 Khronos Group 維護的新一代跨平台繪圖 API。Vulkan 和已經死去的 OpenGL 不同:它是從零設計的,有完整的 Linux 驅動支援,效能逼近原生。
如果 DXVK 能做到足夠精準的翻譯,理論上,任何一款 DirectX 遊戲都可以透過這條管線跑起來:
遊戲發出 DirectX 呼叫 → DXVK 即時翻譯成 Vulkan → Linux 的開源 GPU 驅動接手 → 像素出現在螢幕上。
理論上。
實際上,DirectX 有無數沒有寫在文件裡的行為。Shader 編譯的邊界情況、記憶體對齊的隱含假設、多執行緒渲染的時序依賴、某些遊戲引擎針對特定 NVIDIA 驅動版本做的 hack——每一款遊戲都可能踩到不同的地雷。DXVK 的開發者必須逆向工程這些行為,一個一個修。
Valve 看到了 DXVK,做了一件決定性的事:直接贊助 Rebohle 全職開發。 然後把 DXVK 連同修改版的 Wine、加上一堆效能補丁和相容修正,打包成一個東西,內建到 Steam 客戶端裡。
這個東西叫 Proton。
2018 年 8 月 21 日,Proton 正式發佈。首批認證的遊戲只有 27 款——其中包括《Doom》(2016)和《Quake》。但它的設計哲學才是關鍵:玩家不需要知道 Wine 是什麼,不需要知道 DXVK 是什麼,不需要設定任何東西。 在 Steam 上按下「安裝」,按下「開始」。Proton 在底下默默運轉。
Valve 同時僱用了 Wine 和 Mesa(Linux 的開源 GPU 驅動堆疊)的核心開發者,把他們從社群志願者變成 Valve 的全職員工。它資助 CodeWeavers——一家專門做 Wine 商業化的公司——加速修復相容問題。它還開放了 ProtonDB,一個社群驅動的相容性資料庫,讓全球玩家回報哪些遊戲能跑、哪些有問題、怎麼繞過。
Valve 在做的事,換一個說法就是:出錢養一支軍隊,逆向工程微軟三十年來在 DirectX 上累積的所有行為。
但翻譯只是管線的上半段。下半段——把翻譯好的 Vulkan 指令送進 GPU——要靠驅動程式。而 Valve 在這裡做了一個影響整個越獄計畫成敗的選擇:它選了 AMD,不選 NVIDIA。
表面上看,這很反直覺。NVIDIA 在效能上壓著 AMD 打。一台掌機要在最小的功耗範圍內擠出最大的畫面品質,用 NVIDIA 不是更合理嗎?
不是。因為 NVIDIA 的 Linux GPU 驅動是閉源的。
閉源意味著 Valve 的工程師碰不到驅動的原始碼——不能改、不能修 bug、不能針對 Proton 的翻譯行為做深度優化。你把 DirectX 翻譯成 Vulkan 已經是一層精密手術了;如果手術做完之後,最後一段管線是一個你完全看不見內部的黑箱,任何問題都只能等 NVIDIA 自己出更新——這場越獄就永遠是半成品。
AMD 走了完全相反的路。它主動公開 GPU 硬體文件,支持 Mesa 專案裡一個叫 RADV 的開源 Vulkan 驅動。RADV 不是 AMD 自己寫的——它是開源社群寫的,而社群裡最活躍的貢獻者,恰好就是 Valve 的員工。Valve 的工程師甚至嫌 AMD 原廠的 shader 編譯器不夠快,自己寫了一個叫 ACO 的替代品塞進 RADV 裡。效能比 AMD 自家的還好。
2025 年,AMD 做了一個歷史性的決定:正式停止自家的 Linux Vulkan 驅動,把所有資源轉移到社群的 RADV。換句話說——AMD 官方承認,Valve 工程師維護的驅動比 AMD 自己寫的更好。
這就是 Valve 選 AMD 的真正原因。 Proton 負責上半段(翻譯 DirectX → Vulkan),RADV 負責下半段(Vulkan → GPU 指令)。兩段都是開源的,兩段都由 Valve 的工程師深度參與。整條管線從頭到尾透明——沒有任何一個環節是黑箱。
如果中間夾了一個 NVIDIA 的閉源驅動,端到端的優化就做不到。Steam Deck 那個「按一個鍵就玩」的體驗,就永遠差最後一哩。
這個選擇有一個更深的意涵,但要到 第七章才能完成結算。NVIDIA 的閉源策略讓它輸掉了 Linux 遊戲硬體——Valve 不要它。但同一套閉源策略,在另一個戰場上——AI——卻讓 NVIDIA 贏得徹底。為什麼?因為遊戲的鎖和 AI 的鎖,深度完全不同。
但那是後話。
III. 第一次突圍
但 Proton 不是 Valve 的第一次嘗試。它是第二次。
第一次是 2013 年。Newell 在「災難」演講的一年後,公佈了一個野心勃勃的計畫:SteamOS——Valve 自己的 Linux 作業系統;Steam Controller——Valve 自己的手把;Steam Machine——由第三方硬體廠商製造、跑 SteamOS 的客廳遊戲主機。
這個計畫的邏輯很清楚:如果 Windows 是牢房,那就造一台不需要 Windows 的遊戲機,放到消費者的客廳裡。
2015 年 11 月,第一批 Steam Machine 上市。Alienware、Zotac、CyberPowerPC——好幾家廠商推出了自己的型號。
七個月後,總銷量不到五十萬台。
失敗的原因,在事後看來殘忍地清晰。2015 年的 SteamOS 沒有 Proton——因為 Proton 還不存在。當時 Linux 上能跑的 Steam 遊戲不到一千款,全部是原生移植,大部分是獨立小品。一個消費者花了跟 PlayStation 差不多的錢,買回一台只能玩十分之一 Steam 遊戲庫的機器——有什麼理由不退貨?
到了 2016 年,幾乎所有硬體廠商都停產了自己的 Steam Machine。Valve 在 2018 年把 Steam Machine 的頁面從商店首頁移除。Steam Controller 在 2019 年停產清倉。
以任何商業標準來衡量,這是一場徹底的失敗。
但有一件事沒有停。
Valve 對 Linux 的投資從未中斷。 Steam Machine 死了,SteamOS 繼續開發。Wine 的贊助繼續。Mesa 的工程師繼續領 Valve 的薪水。DXVK 在 2017 年冒出來的時候,Valve 第一時間伸手。
這裡有一個細節值得停下來看:Valve 是一家私人公司。沒有上市,沒有股東,沒有華爾街分析師每季盯著你的財報問「Linux 投資的 ROI 在哪裡」。如果 Valve 是上市公司,Steam Machine 失敗之後,Linux 計畫會在下一次董事會上被砍。
它沒有被砍。因為唯一需要說服的人,是 Gabe Newell 自己。而 Newell 看得比一個季度更遠。
Newell 自己在 2020 年回顧時說過:「我們當時推的硬體,在那個時候是極不完整的。」
他知道 2015 年太早了。但他也知道,如果不先把錢撒下去——養工程師、養社群、養開源生態——等到時機對了,他手上什麼都沒有。
所以他等。等到 DXVK 出現。等到 Proton 能把六成以上的 Steam 遊戲翻譯到可玩的程度。等到 AMD 的 APU 成熟到可以塞進一台掌機裡。
然後,他出第二手。
IV. 越獄
2022 年 2 月 25 日,Steam Deck 上市。
一台掌上型遊戲機。7 吋螢幕、AMD 的客製 APU——Zen 2 CPU 加 RDNA 2 GPU、16GB RAM。定價 399 美元起。跑的是 SteamOS 3.0——基於 Arch Linux,不再是 2015 年那個半成品的 Debian。
它能玩 Steam 上超過八成的 Windows 遊戲。不是原生 Linux 遊戲,是 Windows 遊戲,通過 Proton 即時翻譯,在 Linux 上跑。
玩家不知道自己在用 Linux。他們只知道按下按鈕,遊戲就出來了——跟 Nintendo Switch 一樣。
到了 2025 年中,Steam Deck 累計出貨超過五百六十萬台,佔據掌上型遊戲 PC 市場近半的份額。Proton 的相容遊戲數量從 2018 年首發的 27 款,增長到超過十萬款 ——Steam 遊戲庫的九成。
這是 PC 遊戲史上第一次,有一台商業成功的硬體裝置,證明了一件事:
PC 遊戲不需要 Windows。
微軟花了三十年建起來的那道 DirectX 之牆——第二章記錄了它的每一塊磚、每一根樁——被 Valve 繞過去了。不是翻過去的,是在牆下面挖了一條地道。地道的材料全部是開源的:Wine、DXVK、Mesa、Vulkan、Linux 核心。沒有一行程式碼需要微軟的許可。
更諷刺的是:Proton 翻譯的那些 DirectX 遊戲,它們的開發者甚至不知道自己的遊戲正在 Linux 上被玩。他們沒有出 Linux 版、沒有簽任何合約、沒有做任何額外的工作。Proton 繞過了微軟,也繞過了他們。
而 Valve 不是唯一一個在 Linux 上跑 Windows 遊戲的人。連 NVIDIA 自己的雲端遊戲服務 GeForce NOW,伺服器的底層也是 Linux——只是它的做法更直接:在 Linux 上面開一台 Windows 虛擬機,讓遊戲在裡面跑,跑完就關掉。Windows 在那裡的角色,已經不是業主,而是一間隨開隨關的臨時房。這個畫面的意義,要到終章才能完成結算。
V. 結案陳詞
但這裡要停一下,問一個不舒服的問題。
Valve 是英雄嗎?
從反壟斷的角度看,是。Valve 證明了平台鎖定不是永恆的。三十年的 DirectX 圍牆,可以被一群執著的工程師、用開源工具、不花一分錢授權費、不碰一行微軟原始碼,硬生生挖穿。這是本書到目前為止,第二章那個 pattern 的第一次反擊。
但 Valve 自己呢?
Steam 抽三成。每一款通過 Steam 賣出的遊戲,不論平台,Valve 拿走 30%。這個數字跟 Apple App Store 一模一樣——就是 第二章提到的那個讓獨立開發者痛恨的「平台稅」。Steam Deck 的玩家確實不再被鎖在 Windows 上——但他們被鎖在 Steam 上。你在 Steam 買了五百款遊戲,你會離開 Steam 嗎?你的存檔、你的社群、你的好友名單、你十年來的遊戲庫——全部綁在這個平台上。
而且那五百款遊戲,法律上不屬於你。2024 年,加州一條新法迫使 Steam 在購物車頁面加上一行字:「購買數位產品即獲得該產品在 Steam 上的授權。」你買的不是遊戲,是一張使用許可。從卡帶到光碟到數位下載到雲端串流,每一步都用便利交換了擁有權——Valve 是業主,你是租客,只是這位業主目前對你很好,所以你不覺得自己在租房。
Valve 拆掉了微軟的牆,然後在原地蓋了一道自己的牆。
那個 pattern 又出現了。只是這一次,它穿了不同的衣服。
第二章的 pattern:用 DirectX 的便利吸引開發者 → 開發者被鎖進 Windows → 消費者跟著被鎖。
Valve 的 pattern:用 Steam 的便利吸引消費者(海量遊戲、低價促銷、一鍵安裝)→ 用龐大的用戶基數吸引開發者(你不上 Steam 等於不存在)→ 用 30% 的抽成和用戶庫的黏性鎖住整個生態。
方向從開發者端翻轉到消費者端。結果一樣——圍牆依然存在,只是換了業主。
這是本書那個核心 pattern 的第四次變奏——也是第一次出現在「反抗者」身上。 打破一道鎖的人,往往會在掙脫的過程中,發現自己手裡握著的,是打造另一道鎖的工具。
但這裡要加一句冷水。
Valve 能撬開 DirectX 的鎖,是因為那是一把淺鎖——它只鎖了一層 API。API 的行為大部分有文件,輸入輸出是確定性的,一個足夠執著的人就可以逆向工程。Philip Rebohle 一個人啟動了 DXVK。Valve 投錢把它做大。鎖被撬開了 。
不是所有的鎖都這麼淺。
下一章要講的 CUDA,鎖住的不是一層 API。它鎖住了硬體指令集、運算函式庫、AI 框架、以及全世界每一間大學的 GPU 計算課程——四把鎖疊在一起,每一把都比 DirectX 更深。AMD 的 ROCm 追了十年,至今沒有撬開。那把鎖和這把鎖之間的差距,就是「反擊成功」與「反擊失敗」之間的分界線。
VI. 贓物仍在被瓜分
回到那台 Steam Deck。
它之所以能存在——一台 Linux 掌機跑九成 Windows 遊戲——是因為 Proton 的工程師做到了一件極其不正常的事:在沒有原始碼的情況下,逆向工程了微軟三十年來在 DirectX 上累積的所有行為。每一個 shader 編譯器的邊界情況、每一個未文件化的 GPU 記憶體行為、每一條 Windows 驅動與遊戲引擎之間的隱含約定——他們一個一個挖出來、一個一個翻譯。
這種工作需要什麼樣的人?
需要同時理解 DirectX 的 state machine、Vulkan 的 pipeline 架構、Linux 核心的記憶體管理、Mesa 開源驅動的 shader 編譯器、以及遊戲引擎在硬體極限上做的每一個 hack 的人。他們橫跨硬體與軟體。他們看得穿整個 stack。他們不是「用 API 做事」的人,他們是「理解 API 為什麼長這樣」的人。
舉一個具體的例子。Valve 的工程師嫌 AMD 原廠的 shader 編譯器在 Linux 上太慢,自己從頭寫了一個叫 ACO 的替代品。要寫這樣一個東西,你必須同時理解三件事:AMD GPU 的原生指令集架構、Vulkan 規格裡每一條 shader 操作的語意、以及 Linux 核心排程 GPU 任務的方式。這三件事分屬三個不同的專業領域。一般公司裡,這是三個不同部門的工作。Valve 的工程師一個人全包。寫出來的東西,比 AMD 自家幾百人團隊維護的編譯器還快。
Proton 能夠存在,是因為這種工程師還存在。
他們大多是九十年代在 Linux 社群裡長大的——那個年代,要在 Linux 上跑任何東西,你都得自己編譯核心、自己寫驅動、自己搞清楚每一層 stack 的行為。他們和 Carmack 屬於同一個時代、同一種訓練。
但那個時代已經結束了。
今天的 CS 畢業生可以用 Cursor 搭建整個 app、用 Hugging Face 呼叫預訓練模型——從頭到尾不需要知道 GPU 怎麼排程指令、不需要知道記憶體怎麼對齊、不需要知道驅動程式怎麼跟核心溝通。他們不是不聰明。他們只是從未被迫碰過那些東西。
如果有一天 Proton 壞了——不是壞在表層的 UI,而是壞在 DirectX 翻譯層與某張新 GPU 的 Vulkan 驅動之間那個接縫——還有人修得了嗎?
這個問題不只是 Valve 的問題。它是整個科技產業的問題。因為 Proton 不是唯一一個依賴「橫跨全 stack」工程師才得以存在的系統——CUDA 的驅動堆疊是、台積電的製程 co-optimization 是、AMD 同時供應三大主機的半客製晶片設計也是。
這些系統的共同特徵是:它們不可能由一個只懂 API 的人建造,也不可能由一個只懂 API 的人修復。 但我們的教育體系,正在批量生產只懂 API 的人。
這個矛盾,是本書走到一半必須正面回答的問題。
正文暫停。接下來的篇幅,不再講企業、不再講商戰。要講的,是一種正在消失的人。
