如果只关心登月的真伪,这样的故事就不会发生。

1969年7月20日,阿波罗11号载人航天计划的成功,代表了人类探索的脚步首次踏足了月球的土地。

我们暂时先抛开最近漫长且无休止的、关于人类登月事件真实性的相关争论,把时间拨回到50年前。

1969年,美国一位17岁的高中生Jim Storer和其他人一样,通过电视直播见证了这一历史性的瞬间。

而且几乎可以肯定的是,这位高中生当时一定没有想过去质疑这件事的真实性,因为深受启发的他随后利用当时流行的PDP-8计算机和FOCAL汇编语言设计出了人类历史上的第一款登月游戏《月球登陆器》(Lunar Lander)。

当然,虽说是“游戏”,但《月球登陆器》和如今我们所理解的游戏还是有很大区别,比如它既没有画面也没有声音:

《月球登陆器》游戏画面

在60到70年代,由于当时的计算机没有图形界面,所以诞生了不少只使用代码和文字来呈现的游戏作品。

《月球登陆器》虽然出自高中生之手,但它以文字的形式精确模拟了飞行器登陆月球时需要进行的操作。作为玩家,你需要同时考虑飞船高度、速度、引力、燃料量等多个因素,才能控制飞船在月球上平稳着陆。

以当时的眼光看,这款游戏题材和操作模式都非常新颖,后续也曾在不同类型的计算机和平台上出现过复刻和模仿者,甚至在1979年,著名的雅达利公司还以它为概念设计了带有图形的街机版本,获得了更大的成功。当然,这些都是后话了。

1979年的雅达利街机版

之所以要介绍这款老游戏,是因为最近一位来自麻省理工学院的博士后研究员,意外发现了在《月球登陆器》中存在了55年,一直都没有人注意到的物理Bug。

曾担任过软件工程师、AI研究员的Martin C. Martin最近在利用这款游戏研究飞行器着陆时的最佳燃料使用方案时,发现《月球登陆器》在源代码中使用的物理计算公式,少了一个关键性的“除以二”。

虽然《月球登陆器》只是款游戏,虽然作者当时只是高中生,但它在设计飞行器的着陆轨道时,使用的却是相当严谨复杂的数学公式,其中就包括了被视为现代空间飞行器基础原理的“齐奥尔科夫斯基火箭方程”,完全参照了现实中飞行器着陆的原理设计。

这就使得玩家可以通过真实里的数学公式来计算游戏的最优解,而当Martin参照现实中的着陆方案,经过一连串数学计算并将其在游戏中付诸实践时,却突然发现本应显示“完美着陆”的时机,结果却变成了“无法着陆”。

于是抱着工程师的探求心态,Martin再次细致地研究了游戏所使用的公式和代码,最后他发现尽管游戏背后所涉及的知识非常专业,但作者还是在一个非常简单的地方出现了失误——在一个公式平方根内部的分母中少算了一个“2”。

为什么会有这样的低级失误?Martin猜想是因为60年代计算机的代数系统和计算尚未成熟,作者可能依旧需要在纸上用笔进行整个公式的推导,因此出现了基础失误。

尽管如此,Martin依旧惊讶于一个高中生能够掌握如此复杂的火箭知识,随后他联系到了游戏的作者Jim Storer,如今已经是布兰代斯大学计算机教授的Jim表示:

“在高中时期我就对微积分等概念非常感兴趣,而父亲当时是就一位物理学家,他帮助我推导出了这些数学公式。

Jim不会想到,当初仅仅是因为对登月感兴趣而创作的简单程序,会在之后的时间里影响如此多的玩家;更不会想到因为这款游戏,让两位科学的探寻者完成了一场跨越了55年的对话。

友情提示

本站部分转载文章,皆来自互联网,仅供参考及分享,并不用于任何商业用途;版权归原作者所有,如涉及作品内容、版权和其他问题,请与本网联系,我们将在第一时间删除内容!

联系邮箱:1042463605@qq.com