返回

文章详情

人工智能无法重现《推力》游戏(但它可以帮助你理解它)

Hacker News2026年7月10日 22:04

我请Claude在浏览器中为我重现经典1986年的游戏《推力》。它创建了一些杂乱的东西,但随后事情失控了。《推力》是我在BBC Micro上最喜欢的游戏之一——由Jeremy C. Smith编写,1986年发布,这是一款看似简单但实际上深邃的游戏,拥有惊人的物理效果和游戏玩法。你操纵一艘飞船在洞穴中飞行,收集燃料,避免炮塔的攻击,并在抵抗重力和动量的同时拾取一个舱室以获得额外分数。Jeremy随后与Peter Irvin合作创造了更棒的《放逐》,但不幸的是,他于1992年在一次事故中去世。他在写《推力》时大约是16到18岁。你可以在网上玩原版。我桌子旁边有一台BBC Master,我仍偶尔在上面运行《推力》,还有一些其他经典游戏。这是我不断回归的游戏之一,和《精英》、《放逐》和《洞穴探险》一起。我现在已经用不同的方式重现了其中的三个……第四个看起来越来越不可避免了。反正从杂乱开始。我想我最近在想《推力》,有一天早晨,我有些随意地请Claude Code在浏览器中为我创建它。我想我当时在阅读OpenAI和Anthropic的最新能力声明,所以我整理了一份相当全面的规格,给它访问原始反汇编源代码、截图,并说:“去为我重现《推力》。”它创建了一些东西,对于这个称呼“杂乱”的词都太仁慈了,它 vaguely 像《推力》——它有扫描线的东西,似乎是——但实在是糟糕透顶。重力甚至没处理好,飞船没有正确下落,控制感觉怪异,简直……惨不忍睹。在某种程度上,令人惊讶的是它创造了一些既能运作又有点像《推力》的东西,但这无法玩耍,远没有真实东西的优雅和美感。而这就是《推力》这样的游戏的特点。你可以很快制作出一些表面上相似的东西——只需以设备的帧速率运行,使用标准的增量时间物理,画一些洞穴。但它不会像《推力》那样的感觉。魔力在于特定的时机、飞船的重量、动量的积累。尤其是如果你玩过原版,那些细节就是一切,而一个根据文本描述工作的人工智能,甚至原始源代码也无法捕捉到它们。考古学但它让我很好奇。原版是怎么运作的?我发现开发人员使用的技巧使这些东西在8位机上运作非常吸引人,于是我进行了一段考古学的探索。我很快找到了Kieran Connell对原始源代码出色的注释反汇编,并将其输入Claude进行提问。这是事情变得有趣的地方。不是因为人工智能编写了代码——代码本身并不复杂,这是一个在32K RAM中运行的1986年游戏,而是因为Claude竟然成了一个调查6502汇编的非凡工具。我可以输入一块反汇编的源代码,问“关卡数据是怎么工作的?”或“物理模型在这里做什么?”并获得关于原始代码的详细、准确的解释。老实说,我是基于一些注释的反汇编源代码进行工作的,但即便如此,它能够从注释和汇编中提取信息,并提供关于游戏工作原理的详细描述。我觉得如果没有注释帮助聚焦在正确的地方,它可能会没那么有用——但即便如此,它确实让工作简化并更加愉快。是的,看起来我很可能会从代码中剥离注释,看看Claude做得如何。在此过程中我意识到可以用这些答案作为重现原始游戏的基础,开始请Claude为各种子系统创建规范。我生成的大部分规格可以在源代码的规格文件夹中找到。我可能会在某个时候好好写一写这些,但现在它们提供了对原版中的细微差别的好 insight——这里面有很多东西,比我意识到的要多。例如,我从来没有注意到如果你击中发电机,炮塔会停止发射一段时间,炮塔的发射角度中的细微之处只有在你阅读实际代码时才会显露出来。物理学物理学是我深入研究的最有趣领域之一。《推力》使用Q7.8定点算术——这是8位机上常见的技术,因为你没有浮点硬件。旋转系统使用32个步骤和查找表来表示力的分量。但真正棘手的部分是时机。我的第一次实现使用了来自反汇编的正确常量——相同的重力,相同的推力值,相同的阻力——但飞船速度过快,机动性过强。它没有正确的重量。常量和原版是相同的,所以肯定是时机问题。果然如此。原版在BBC Micro上运行物理时

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡