Show HN:将 Quake 移植到安全 Rust,可在浏览器中游玩
经典的 1996 年射击游戏 Quake 已从 C 移植到“安全” Rust,并编译为 WebAssembly,因此可以在现代浏览器乃至手机上流畅游玩。评论者既强调这一技术成就以及用于实现与原版几乎像素级一致的巧妙视觉差异比对工具,也讨论了在已有 C-to-WASM 方案的情况下,这个 Rust 移植是否真的具有实质价值。整个讨论进一步延伸到大型语言模型如何改变代码移植、游戏工具乃至逆向工程,既带来对新创作能力的兴奋,也引发对安全、欺诈以及传统编程技艺流失的担忧。
项目与技术细节
- Quake 1 引擎已从 C 移植到“安全” Rust(无
unsafe),随后编译为 WebAssembly,在浏览器中运行。 - 即使在手机上也能流畅运行;多条评论指出其性能和响应性出人意料地好。
- 提供了源代码和视频演示链接。为验证移植结果,使用了一个视觉差异“oracle”测试框架与原版进行比对,据称在测试中达到了像素级一致输出。
LLM 在移植过程中的作用
- 许多人认为,这次移植很大程度上甚至完全由 LLM 生成,由人类负责协调、提示和在数月内反复迭代。
- 有人强调真正的成就是整个生态:浏览器、WASM、Rust 以及工具链经过数十年发展,才使得“最后一公里”的 LLM 翻译成为可能。
- 也有人提到自己在游戏移植、渲染器和工具开发中使用了类似的 LLM 驱动工作流,并结合自动化演示回放和像素差异比对。
价值、“slop” 与 Rust 的使用
- 支持者认为这是一个有趣的业余项目,是当前工具能力的出色展示,也是 Quake 的一个很好的 Rust 参考实现。
- 批评者则认为这只是一个低价值的“slop”项目:机械式地将 C→Rust 翻译,没有惯用风格的重构,借助 LLM “任何人都能做”,而且相比 C→WASM 构建并没有实质上更安全。
- 对于将 LLM 辅助代码视为正当工作,还是视为空洞、消磨好奇心的产物,存在明显张力。
性能、浏览器作为平台与 WASM
- 有人认为浏览器不适合复杂游戏;也有人反驳说,WASM 能达到原生速度的约 50–70%,对一款 1996 年的作品来说已经绰绰有余。
- 几条评论将此视为更大趋势的一部分:越来越多的桌面应用(包括经典游戏)都可以交叉编译到 Web。
Rust、安全性与游戏 Bug
- 讨论澄清,Rust 主要防止内存安全问题以及某些类型的溢出/无效值 bug,但并不能避免游戏逻辑故障或物理表现异常。
- 关于“安全 Rust”是否被过度吹捧也存在争论:即使没有
unsafe,你仍然可以写出糟糕或易受攻击的逻辑。
更广泛的安全与逆向工程担忧
- 有人从这类 LLM 驱动的移植推及对复制专有或关键系统(银行、物流、HMI、工业控制)的担忧,认为这会降低欺诈或基础设施攻击的门槛。
- 也有人回应说,这主要暴露了“安全性来自模糊性”的脆弱性,并可能提升竞争,迫使系统转向更稳健、基于密钥的安全机制。