7セグメントLEDで表示された「3600.012000」という数字を見て、月着陸船を想像できるだろうか? 1970年台の終わり、筆者の目には、この数字が時速3600マイルで高さ120マイルという月着陸船の状態に見えていた。これは、プログラム電卓で実行したLunar Landerというゲームの表示だ。

1969年にアポロ11号が月に着陸した直後、Lunar LanderというゲームがDEC社のPDP-8というコンピュータの上で動き始めた。Lunar Landerは、速度と高さが与えられ、10秒単位でゲームが進む。10秒ごとに燃料消費量を入力して、月着陸船(Lunar Module:LM)を一定速度以下で月に着陸させるゲームである。使われた言語はFOCAL。1文字のコマンドと小数点を持つ行番号を使う奇妙な言語だが、のちに普及するBASICと似た部分があった。

このLunar Landerは、その後、多くのコンピュータに移植される。1970年台に入るとマイクロプロセッサが登場し、やがて個人でもコンピュータを所有することが可能になる。その頃に出版されたのが「BASIC Computer Games」という本で、ここにBASICに移植されたLunar Landerが掲載された。もともと、DECが101 BASIC Computer Gamesというタイトルの冊子を販売しており、これを一般向けの書籍にしたものだ。当初はDECのBASIC向けだったが、その後普及したMicrosoft BASIC向けに書き換えられて再版される。この本は、各国で翻訳され、日本でもアスキー出版から「Basic computer games : マイクロコンピュータゲーム集 日本語版」(1979年)が出版されている。筆者が電卓でLunar Landerをやったのもこの頃。BASICのプログラムを自分のプログラム電卓に移植した。

また、1979年には、Atari社がアーケードゲーム「Lunar Lander」を開発した。AsteroidやStar Warsと同じくベクターグラフィックスのゲームで、さらに宇宙船の姿勢が加わった2次元(上下と左右)のゲームである。日本国内にも入っていたので、ゲームセンターで見たことがある人もいるだろう。

Lunar Landerがゲームになったのは、実際の降下の過程をシミュレーションしていたからで、適当な数値では、ぜんぜん着陸ができない。プログラムは、高さと速度しか表示しないが、相手にするのは、月の重力加速度とエンジンによる加速度である。加速度を時間で積分すると速度になり、速度を積分すれば降下距離となる。ゲームとしては、10秒単位での制御になるため、降下距離や速度と入力する燃料消費量の関係が簡単にはわからない。当時は、紙のリストを見て、「マイコン」に打ち込んでいたため、単純なゲームは、振る舞いがわかってしまう。しかし、Lunar Landerは計算が複雑なので、ソースコードを見ても、簡単に振る舞いを予測できるわけではない。

現実と同じく、燃料消費量は、8が最小、最大値が200という制限もあった。そのほか、移植時にパラメーターが変わっている、言語仕様が異なるなどから、プラットフォームにより「正解」が異なることがあった。ゼロメートルで時速5マイル以下でないと、衝突と判定され、どのぐらい深い穴を掘ったのかを教えてくれる。

実際、アポロ11号のLMでは、降下上昇用の自動パイロットシステム「PGNCS」(Primary Guidance, Navigation, and Control System)が搭載されていた。このあたりに関しては、NASAの公開資料Apollo Experience Reportsがある。このうち、“TN D-6846 Mission Planning for Lunar Module Descent and Ascent”に、LMの制御や実際の着陸などについての記述がある。アポロ11号のPGNCSは、着陸時にエラーメッセージを出し、手動操作が行なわれた。これをシミュレーションするのがLunar Landerなのである。

Lunar Landerのソースコードは、いくつかインターネットで見つかる(たとえば、GitHubのlunar-lander-1969)。Webブラウザで動くエミュレーターもある(写真01)。このあたりの資料は、以下のサイトにまとまっている(TTYでの印字写真もある)。

・Jim Storer - Lunar Landing Game Related Documents

https://www.cs.brandeis.edu/~storer/LunarLander/LunarLander.html

写真01: Webブラウザで遊べる「LUNAR LANDER SIMULATOR」。冒頭にコントロールセンターから手動操作で着陸しろとの命令が下る。ユーザーは燃料消費量Kを入力して10秒間噴射を行ない、一定速度以下で着地しなければならない。燃料がなくなると、地上に激突したときの速度と、それにより作られたクレーターの深さを教えてくれる

今回のタイトルネタは、ハインラインの「月は無慈悲な夜の女王」(ハヤカワ文庫 SF収録。原題The Moon Is a Harsh Mistress、1965)である。月を舞台にした作品には、ベルヌの「月世界旅行」(原題De la Terre à la Lune、Autour de la lune)もあれば、クラークの「渇きの海」(同A Fall of Moondust)もある。しかし、HAKUTO-R計画の着陸船のことを考えて、このタイトルを選んだ。Lunar Landerは、数字を入れるだけの単純なゲームだが簡単ではない。しかし、実際の月着陸はもっと難しい。