Half-Life 2 入 browser 過 100FPS:免安裝點樣跑起
3C 產品

Half-Life 2 入 browser 過 100FPS:免安裝點樣跑起

圖片:via Tom's Hardware — https://www.tomshardware.com/video-games/pc-gaming/you-can-now-play-half-life-2-right-inside-your-browser-at-over-100-fps-with-save-states-and-console-support-ingenious-port-recreates-the-entire-game-campaign-using-webgl-2
TechLab 編輯部(譯)·

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 冇幫你玩完再播返條片。

開發者早期用 chunk asset 測試 Half-Life 2 browser port 嘅截圖

圖片: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 好多,所以成件事先現實。

G-Man cutscene face morphing 測試圖,開發者用嚟講面部動畫問題

圖片: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 試呢類頁面,先諗清楚部機係咪自己管。

Half-Life 2 browser port 跑到 credits 嘅截圖

圖片: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 本機跑」,呢條路會乾淨好多。


參考來源

本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。

分享:WhatsAppThreadsTelegramFacebook