在浏览器里玩《半条命 2》

查看原文 HN 讨论

文章摘要

这是一个把经典游戏《半条命 2》(Half-Life 2)完整移植到浏览器中运行的项目。打开网页后,用户看到的是一个带有 HL2 标志的加载界面,游戏随即开始流式下载并在浏览器内运行——无需安装客户端、无需高端硬件,只要一台能跑现代浏览器的设备即可游玩。

从技术实现上看,这类项目通常依赖一整套现代 Web 技术栈:用 WebAssembly(WASM) 来编译运行性能敏感的游戏引擎代码,用 WebGL 进行 3D 图形渲染,并以 JavaScript 作为整体运行时的胶水层。将一款原生桌面游戏搬进浏览器,最大的挑战在于把原生代码翻译成浏览器能执行的形式,同时高效管理内存、并适配与桌面平台截然不同的图形 API。

根据 HN 上开发者和玩家的讨论,这个移植版本采用了资源流式加载(asset streaming)技术,玩家无需下载整个游戏即可开始游玩,这大大降低了进入门槛。不过移植并非完美:出于兼容性原因,角色动画被禁用了,导致游戏中缺失对口型(lip-sync)和眼球转动等细节;进度条实现上也有小 bug(接收的是 0-1 的归一化数值,却错误地以 300 作为最大值);部分玩家还反映在特定场景(尤其是走出进入城市广场时)会发生崩溃,说明某些章节的稳定性仍待打磨。Firefox 用户则会遇到性能下降和多标签页限制的问题。总体而言,这是一个展示浏览器游戏潜力、同时承载怀旧情怀的有趣实验。

HN 评论精华

怀旧与可及性:许多用户为”无需昂贵硬件就能重温经典”而兴奋。一位评论者感慨自己当年”攒钱买 ATI Radeon 9600 XT”才玩上 HL2,如今却能”在一台破笔记本的浏览器里玩”,引发了关于游戏保存(preservation)与可及性的热烈讨论。

浏览器游戏生态:讨论很快扩展到一整片浏览器移植作品,评论者纷纷分享了 Quake 3、虚幻竞技场、Doom 3、《侠盗猎车手:罪恶都市》、RuneScape 2、毁灭公爵 3D、传送门、反恐精英等浏览器版本的链接。有用户提到自己在维护一个浏览器版的《网络创世纪》(Ultima Online),并获得官方服务器的”授权”支持。

WASM 与 WebGPU 技术讨论:社区探讨了为何主流游戏引擎不优先支持 Web 导出。原因包括 WebGL 的特性集过于陈旧、WebGPU 在浏览器中支持仍不完整,以及 WASM 翻译带来的额外开销。有人指出虚幻引擎 5 的 Web 支持目前只能通过 SimplyStream 等第三方方案实现。

Firefox 兼容性问题:用户 doodpants 提出了 Firefox 的兼容性担忧。开发者 notsentient 解释说,Firefox 不支持 FileSystemFileHandle 的锁定模式,并且在 File System Access API 的实现上持”负面标准立场”,导致性能下降和多标签页运行受限。

性能边界:评论者普遍认为,浏览器游戏目前能很好地承载 HL2 这类老游戏,但难以胜任动辄 60-100GB、需要纹理流式加载和高要求图形 API 的现代 3A 大作——这些能力在 Web 平台上尚不可用。