AI代写代码的GTA重制:任务精确但物理跑偏,一个WebGL实验

原创
alex 48分钟前 阅读数 1 #头条

AI代写代码的GTA重制:任务精确但物理跑偏,一个WebGL实验

背景与动机:一个Chrome工程师的怀旧sideproject

如果你也在1997年蹲在电脑前,对着像素小人开车撞人,那你大概能理解Bramus为什么要在2026年做这件事。他当时14岁,发现了view-source,从此一头扎进Web里没出来过。如今他是Google的Chrome开发者关系工程师,工作内容天天围着浏览器转,但他在博客里说,这只是一个他“把tokens花在上面”的sideproject来源:Bram.us。

项目的地址是gtajs.wtf。他用JavaScript和WebGL重新实现了1997年《侠盗猎车手》的引擎。Bramus没有打算把它包装成一个完整的产品,甚至没有打算先做完再发布。他在博客里写道,自己当时正在机场,准备去度假,觉得不如把已经做出来的部分先放出来看看。所以这个项目目前不是一个成品,但已经可以玩了来源:Bram.us。

HN上有人把这条帖子提交上去,标题是“Gta.js, a reimplementation of the 1997 GTA engine in JavaScript and WebGL”。但截至我写这篇文章时,它只有1点、0条评论。HN社区还没怎么发现它,也可能是因为发布时间点恰好赶上了作者去机场的路上来源:Hacker News。

技术实现与差异:不是模拟器,而是重新实现

Bramus在博客里特意强调了一件事:这不是一个DOSBox包装器,不是模拟器,也不是反编译出来的版本。它是一个重写。这意味着很多底层行为跟原版不一样,比如某些物理表现和动画,他明确承认与原版1997年的游戏存在差异。但任务引擎是准确的,因为这部分有公开文档mtd.doc可以依据来源:Bram.us。

最有意思的是他交代了代码的来源。他说自己请Gemini实现了大部分东西,做法是把Gemini指向开源的重实现、公开文档和社区笔记,或者干脆直接告诉它自己当年是怎么玩这个游戏的,以及当时是怎么编辑它的。他不是让AI凭空写,而是把记忆里的东西当作输入喂给模型。这大概解释了为什么他说“tokens”,而不是说“hours”来源:Bram.us。

项目目前还缺不少东西。警察,也就是cops,还没实现。但核心玩法已经能跑了。技术上,整个东西跑在JavaScript和WebGL上,没有任何模拟层。这意味着你在浏览器里看到的东西,不是某个老引擎的截图,而是一个现代Web技术栈把1997年的游戏逻辑重新搭出来的结果来源:Bram.us。

多源对比与启示:原始游戏、HN反应与Web性能

拿这个版本跟1997年原版比,差异集中在物理和动画层面。Bramus说得很直白:物理行为有差异,动画有差异,但任务引擎是精确的。所以如果你在乎的是开车手感,可能会觉得不对头;如果你在乎的是任务的触发和流程,那它很可能跟原版对得上。这种分裂感是重写类项目绕不过去的坎,因为你没法同时做到逐字节兼容和现代Web原生实现来源:Bram.us。

HN的帖子摘要跟博客标题一致,但博客正文提供了更多技术细节,比如非模拟器的定位和Gemini的参与程度。这个差距说明,HN上的标题只是入口,真正的内容在作者的博客里。而“1 point, 0 comments”的状态,让我怀疑这个提交是不是刚被贴上去,或者干脆就是作者自己在机场顺手发的。毕竟他既然有空在机场写博客,那顺手提交到HN也不是不可能来源:Hacker News。

这个项目的意义不在于它能不能替代原版,而在于它证明了WebGL和JavaScript在2026年有能力承载一个1997年的完整游戏引擎,不需要模拟器,不需要插件,甚至不需要专门的游戏框架。Bramus在Google做Chrome开发者关系工程师,他对Web性能的理解比普通开发者更深。他说“already quite a lot”,这句话可能不是谦虚,而是在暗示这个引擎跑起来比他预想的要顺畅来源:Bram.us。

gtajs.wtf是唯一可玩的入口,没有商业公司背景,没有赞助商,就是一个前端工程师的怀旧项目。我不知道这个项目接下来会不会被更多人发现,也不知道警察系统什么时候能加上去。但至少它现在能玩,而且任务引擎是准的。对一个在机场等飞机的人说,这已经是一份很体面的交代了。


原文:

Gta.js, a reimplementation of the 1997 GTA engine in JavaScript and WebGL · 来源:Hacker News

作者:itfan123 值班编辑 · 发布于 2026年10月31日

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除