给了详细规格、给了原始反汇编代码、给了截图,James Randall让Claude Code在浏览器里“重现”1986年BBC Micro上的经典游戏《Thrust》。结果他自己都懒得用“粗糙”来形容——重力算不对,飞船不会正常下坠,操控手感诡异,只是远远看着有点像。这不是一次简单的翻车,而是暴露了一个更值得记住的分界线:AI能不能造出一个东西,和它能不能读懂一个东西,是两种完全不同的能力。
从零生成失败之后,他换了个问法
《Thrust》是那种表面简单、内核极难复刻的游戏——飞船在洞穴里靠推力和惯性对抗重力,手感的精确程度几乎是这款游戏的灵魂所在。它由Jeremy C. Smith在16到18岁之间写成,运行在只有32K内存的8位机上。原作者后来又做出了更负盛名的《Exile》,1992年意外去世。
Randall没有停在“AI做不出好游戏”这个结论上,而是换了个用法:把开发者Kieran Connell做的带注释6502反汇编代码喂给Claude,逐段追问“这段物理是怎么算的”“关卡数据怎么存的”。这一步,效果完全不同。
手感的秘密:33.33Hz里只有6个生效槽位
Randall最初以为自己搬对了原版的重力、推力、阻力常数,可飞船依旧太快太灵。问题不在数值,在节奏。BBC Micro的画面刷新率是50Hz,但《Thrust》的物理循环并不是每帧都算一次——它先把节奏拉慢到约33.33Hz,再在每16个tick组成的窗口里,只挑出第0、3、5、8、11、13这6个特定槽位去真正推进重力和推力运算,其余tick只做位置累加。旋转指令也不是每帧生效,而是每4个tick里跳过一个。
AI能读懂时序,却造不出手感。
这套非均匀的调度,才是《Thrust》“粘滞感”的来源,X轴阻力比Y轴强得多,横向移动因此明显比纵向“黏”。这类细节不会写在任何设计文档里,也不会出现在一般的反编译注释里——它散落在几十行汇编指令的排列顺序中,Randall靠Claude逐段追问才把它翻出来。
这套“考古能力”有前提,别急着外推
Randall自己承认,Claude在这次考古里的高质量表现,很大程度上靠的是Kieran Connell预先写好的详细注释帮它锁定关键区域——没有这层注释,效果可能大打折扣。他也提到接下来要剥离注释、单独测试Claude面对裸汇编的表现,目前这个结论还只能算阶段性的。
- 提醒.这次实验的高准确度建立在别人已经做好注释的基础上,换成没有文档的遗留代码,结论未必成立。
这和另外两条线索能对上。Anthropic自己在文档里承认,浏览器端运行的Claude Code不适合需要反复试错、来回修正的任务,且运行在托管沙盒里,接不了本地自定义工具链。第三方测评则给出过一个看似矛盾的结论:Claude Code做的浏览器小游戏“看起来最完整”——但这评的是外观和结构,不是玩起来对不对,恰好印证了Randall的核心发现:“像不像”和“对不对”是两回事。
谁该盯着这件事
对靠AI工具做复古游戏复刻的爱好者来说,这次实验是一次预期校准:AI能很快搭出一个能跑的原型,但手感、时序这类“灵魂”部分,还得靠人钻进老代码里对着数。对企业里做遗留系统维护、老代码迁移的工程团队,这个模式或许更有参考价值——与其指望AI重写一套系统,不如先让它当阅读助手,把没人再看得懂的旧逻辑翻译成人话。
- 结论.判断一个AI编程工具好不好用,别只看它造出了什么,要看它能不能讲清一段代码为什么这样写。
接下来值得看的是Randall剥离注释后的复测结果,以及他是否会公开完整的规格文档——那会是检验“AI代码考古”这套方法论能不能复用到其他无文档老系统上的下一个信号。
