
Half-Life 2 入 browser 過 100FPS:免安裝點樣跑起
WebGL 2、Wasm、IndexedDB 撐起呢個非官方 port
Browser 已經好似一個細遊戲 runtime
Half-Life 2 跑入 browser,聽落似懷舊玩笑,但今次有技術含量。Tom's Hardware 報道呢個由 Slqnt 同 98006 做嘅非官方 port,遊戲喺本機跑,畫面交畀 WebGL 2,舊 C/C++ 引擎邏輯經 WebAssembly 變成 browser 可執行嘅碼。講白啲,你部機嘅 GPU 同 CPU 真係做緊工,遠端 server 冇幫你玩完再播返條片。

圖片:slqnt.dev
點解而家做得到
關鍵係舊 PC game 同現代 web stack 嘅交位啱啱好。開發者 blog 講到,佢係由 weliveinhell 嘅 Portal webport 起步,再接住 nillerusr/source-engine 入面嘅 ToGLES / OpenGLES 路徑;Emscripten 可以幫呢類 GLES call 轉去 WebGL 2,所以唔使由零開始寫 renderer。MDN 同 Khronos 講法都清楚,WebGL 2 係 browser canvas 入面嘅 OpenGL ES 3.0 類 rendering context;配合 Wasm,C/C++ code 可以用接近 native 嘅形式喺 browser 入面跑。Half-Life 2 係 2004 年遊戲,硬件要求本來低過現代 3A 好多,所以成件事先現實。

圖片:slqnt.dev
Save 同 cache 先係隱藏工程
另一個好多人忽略嘅位係 save。Tom's Hardware 寫話 port 會用虛擬 file system 分段拉壓縮 asset,第一次開要等 cache 建起,.sav 就留喺 browser cache 或 IndexedDB。開發者自己都話 saving/loading 要同 Emscripten IDBFS 整合;Emscripten 文件講得好直接,IDBFS 只喺 browser 入面用,跑 FS.syncfs() 先會寫落 IndexedDB。呢個設計好聰明,但亦好脆:你清 site data、開私密視窗、公司 IT policy 定期掃 browser 儲存,save 就有機會冇咗。用公司 notebook 或 Chromebook 試呢類頁面,先諗清楚部機係咪自己管。

圖片:slqnt.dev
效能有驚喜,但唔好當完成品
效能方面,以下只係 Tom's Hardware 同 Club386 嘅實測資料,TechLab 未有自己試機。Tom's Hardware 用 Ryzen 7 7700X / RX 6700 XT 桌面 PC 全屏兼最高設定,話可以過 100FPS;Club386 亦用 cl_showfps 1 見到過 100fps。不過 Tom's Hardware 試 OnePlus 12 同 Android Switch 版本時冇跑起,Club386 同開發者 blog 都提到載入新場景有窒、貼圖漏、面部動畫有問題,開發者甚至為咗穩定而關咗 face morphing。呢啲 bug 唔奇,因為 Source Engine 入面仲有物理、script、NPC logic 同大量舊 asset pipeline。browser 已經跑到,唔代表每個 cutscene 都會正常。
Episode 支援先打個問號
仲有個位要拆清楚:Tom's Hardware 寫呢個 port 包完整主線同兩個 episodic DLC,但 Slqnt 6 月 24 日 blog 自己寫,休息後先會做 Episode One 同 Episode Two。兩邊講法未對齊,所以 Episode 支援暫時要標 [待確認]。Valve 20 周年版本身已經連埋 Episode One/Two,喺 Half-Life 2 主 menu 打開;browser port 有冇跟足呢件事,唔應該靠估。
授權位係最大問號
最要小心係授權。Tom's Hardware 話呢個 port 仍然係非官方,有機會食 DMCA;VideoCardz 同 Club386 都留意到,而家版本似乎冇要求玩家提供自己嘅 Half-Life 2 檔案。再睇開發者 blog,底層基礎牽涉 nillerusr/source-engine 呢個由 2020 TF2 Source Engine leak 改出嚟嘅 repo,法律灰位唔止一層。即使 Valve 過往有唔少 fan project,Half-Life 2 仍然係 Valve 嘅商業作品,呢個 port 唔應該當免費正版入口。真係想長玩,Steam 正版先穩陣。
下一步睇 browser 點收科
呢單更似 browser 遊戲技術示範,多過單純遊戲新聞。低儲存空間電腦、Chromebook、冇 admin 權限裝 Steam 嘅 notebook,瀏覽器 port 真係有吸引力;對學校同公司 IT,佢亦提醒咗:block installer 已經唔等於 block 到大型互動內容。Half-Life 2 呢個非官方頁面未必長命,但如果下一批舊 PC game 改行「玩家自己帶正版檔案、browser 本機跑」,呢條路會乾淨好多。
參考來源
- Tom's Hardware — You can now play Half-Life 2 right inside your browser at over 100 FPS with save states & console support — Ingenious port recreates the entire game campaign using WebGL 2 — original report
- slqnt: porting half life 2 to the browser — 開發者 blog,交代 port 由 Portal webport 起步、GLES/WebGL 路徑、IDBFS save、face morphing bug 同 Episode 後續講法。
- Club386: You can now play Half-Life 2 directly from your browser — 另一個 hands-on 來源,確認 browser 本機跑、cl_showfps 1 過 100fps、載入同貼圖問題。
- VideoCardz: Half-Life 2 is now playable through WebGL 2 in an unofficial browser port — 補充授權風險,指出而家版本似乎冇要求玩家提供自己嘅遊戲檔案。
- Emscripten documentation: File System API — Emscripten 官方文件,確認 IDBFS 點同 IndexedDB 同步,解釋 save 點樣留喺 browser 儲存。
- MDN: WebGL2RenderingContext — MDN 技術背景,確認 WebGL 2 同 OpenGL ES 3.0 rendering context 嘅關係。
- MDN: WebAssembly — MDN 技術背景,確認 Wasm 點支援 C/C++ 等 code 喺 browser 跑。
- Valve: Half-Life 2 20th Anniversary Update — Valve 官方頁,確認 20 周年版 Half-Life 2 已連埋 Episode One/Two。
本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。







