2 ポイント 投稿者 GN⁺ 2024-06-15 | 1件のコメント | WhatsAppで共有

55年前の最初のLunar Landerゲームのバグ発見

ゲームの歴史

  • 1969年、高校生のJim Storerが最初のLunar Landingゲームを開発した。
  • 1973年までに、このゲームは最も人気のあるコンピューターゲームになった。
  • ゲームはシンプルなテキストベースで、プレイヤーは月着陸船を操作し、燃料を消費しながら着陸を試みる。

最適な燃料消費戦略

  • 最小限の燃料で着陸するには、できるだけ短時間で着陸する必要がある。
  • 最初はエンジンを切って最大速度で降下し、最後の瞬間に全力で燃料を燃やして速度を0にする。
  • この戦略は「自殺燃焼」と呼ばれ、タイミングを合わせるのが難しい。

物理シミュレーション

  • Jim Storerは高校生だったにもかかわらず、非常に精巧な物理シミュレーションを使用していた。
  • ツィオルコフスキーのロケット方程式を使い、対数関数のテイラー級数を活用して精度を高めた。
  • 彼の父親は物理学者で、方程式の導出を手伝った。

着陸時の問題点

  • ロケット方程式は地面に到達する直前まではうまく機能する。
  • 着陸船が地面に触れる瞬間の衝突を正確に計算するのは難しい。
  • Jimのコードには、分母に平方根が含まれた誤った方程式があった。

バグの発見

  • Jimのコードでは、分母に入るべき2が抜けていた。
  • その結果、着陸時点が誤って計算され、着陸船が地面に到達していないと認識された。
  • このバグを修正すると、着陸速度は大きく改善される。

結論

  • 1969年に高校生が作ったゲームとしては、非常に印象的な成果だった。
  • このバグはほぼ55年間発見されなかった。
  • ゲームは今でも面白く、多くの人に楽しまれている。

GN⁺の意見

  • 歴史的価値: このゲームは初期コンピューターゲームの歴史的価値を持ち、当時の技術的限界を示している。
  • 教育的価値: 高校生が作ったゲームだが、複雑な物理学や数学の概念を含んでおり、教育的価値が高い。
  • バグの重要性: 小さなコードの誤りが大きな影響を与えうるという点で、ソフトウェア開発の重要性を強調している。
  • 現代ゲームとの比較: 現代のゲームと比べることで、当時の技術的限界と創造性を理解する助けになる。
  • 技術の進歩: このゲームを通じて当時と現在の技術の進歩を比較し、未来の可能性を探ることができる。

1件のコメント

 
GN⁺ 2024-06-15
Hacker Newsの意見
  • Jim Storerが最初のLunar Landerゲームの作者だったことを突き止め、インタビューを行った。その後ソースコードも提供してもらい、とても興味深かった。
  • Storerは高校卒業後、このゲームのことを忘れていた。数か月前にメールを受け取って初めて、自分が作ったゲーム以外にも別のLunar Landerゲームがあることを知った。
  • 1969年に高校生が作ったゲームだという点が印象的だ。宇宙時代に育った技術への関心が高い人たちに、大きな影響を与えたのだろう。
  • インタビューでは、Storerが微積分に長けていたことに触れられている。宇宙やロケットに興味があるなら、Lunar Landerゲームをプログラミングするのは自然なことだったはずだ。
  • 1970年代半ばに2DベクターグラフィックスベースのMoon Landerゲームを書いた。燃料が足りないか速度が出過ぎていれば墜落し、そうでなければアメリカ国旗が表示された。
  • ソースコードを捨ててしまったことを後悔している。歴史的に見て初期のグラフィックゲームであり、簡単なエミュレーションで復活できたはずだった。
  • 1973年までにLunar Landerは最も人気のあるコンピューターゲームになっていた。最初のプログラミング本でこのゲームに挑戦したが、多くのバグと複雑なロジックのせいで失敗した。
  • 燃料を最適化する着陸戦略を提案している。特定の時点で低推力を使って滑らかに着陸する方法を説明している。
  • 1976年にHP-25電卓でこのゲームを初めてプレイした。同じ式を使っていた。
  • 1960年代にPDP-1でSpacewarをプレイしたが、Lunar Landerゲームはなかった。Storerが最初だった。
  • 特別な式を使わず、毎フレームごとに質量と加速度を再計算する方法を提案している。フレームレートが低いほど精度は落ちる可能性がある。
  • 1970年代半ばにWang 2200 BASICへ移植されたゲームをプレイした。最大推力をかけるテクニックを学んだ。
  • PDP11用の紙テープを今でも保有している。誰に渡せばいいのかわからない。