Nyugdíjas mérnök szenzációs felfedezése: 55 éves hibát talált a legendás Lunar Lander játék kódjában


A Lunar Lander játék hibája, amely 55 évig rejtve maradt

Az Apollo holdkomp Eagle illusztrációja a Hold felett.

Pénteken egy nyugalmazott szoftvermérnök, Martin C. Martin bejelentette, hogy nemrégiben felfedezett egy hibát az eredeti Lunar Lander számítógépes játék fizikájának kódjában, miközben a szoftverrel foglalkozott. Ezt az ősi játékot egy 17 éves középiskolás diák, Jim Storer készítette 1969-ben. A játék csak szöveges állapotfrissítéseket jelenített meg egy teletípuson, de megalapozta a jövőbeli verziókat.

A legendás játékot, amelyet Storer egy PDP-8 miniszámítógépen fejlesztett FOCAL programozási nyelven, néhány hónappal azután készítette, hogy Neil Armstrong és Buzz Aldrin történelmi holdraszállásukat végrehajtották. A játékosoknak egy holdmodul leszállását kell irányítaniuk a Hold felszínére, miközben gondosan kezelik az üzemanyag-felhasználást, hogy finom leszállást érjenek el, tíz másodpercenként kritikus döntéseket hozva az üzemanyag elégetésének mennyiségéről.

2009-ben, nem sokkal az első holdraszállás 40. évfordulója előtt, elhatároztam, hogy megkeresem az eredeti Lunar Lander játék szerzőjét, amelyet akkoriban elsősorban grafikus játékként ismertek, köszönhetően az 1974-es grafikus verziónak és az 1979-es Atari arcade játéknak. Amikor felfedeztem, hogy Storer a legősibb ismert verziót teletípus játékként készítette, interjút készítettem vele, és megírtam a játék történetét. Storer később közzétette az eredeti játék forráskódját, amelyet FOCAL nyelven írt a weboldalán.

A teletípus kimenetének nyomtatott szkennelése az eredeti Lunar Lander játékból, Jim Storer jóvoltából.

Egy hiba felfedezése

2024-re Martin—egy mesterséges intelligencia szakértő, játékfejlesztő és volt MIT posztdoktori munkatárs—belebotlott egy hibába Storer középiskolai kódjában, miközben azt vizsgálta, hogy mi lehet az optimális stratégia a modul maximális üzemanyag-hatékonysággal történő leszállítására—a Kerbal Space Program rajongói körében „öngyilkos égetésként” ismert technika. Ez a módszer szabad esést jelent, hogy felgyorsuljon, majd az utolsó pillanatban beindítja a motorokat, hogy éppen elegendő sebességgel lassuljon le a biztonságos leszálláshoz. Emellett kipróbált egy másik megközelítést is—a gyengédebb leszállást.

„Nemrégiben felfedeztem az optimális üzemanyag-égetési ütemtervet, hogy a lehető leggyengédebben és maximális maradék üzemanyaggal szálljak le,” írta Martin a blogján. „Meglepő módon az elméletileg legjobb stratégia nem működött. A játék tévesen azt gondolta, hogy a landoló nem érte el a felszínt, amikor valójában igen. Mélyebbre ásva lenyűgözött a játékban alkalmazott kifinomult fizika és numerikus számítások. Végül találtam egy hibát: egy hiányzó ‘osztás kettővel’, amely látszólag közel 55 éve észrevétlen maradt.”

Az osztás kérdése

Annak ellenére, hogy alkalmazta a tankönyvi leszállási stratégiát, Martin azt tapasztalta, hogy a játék következetlenül jelentette, hogy a landoló teljesen elvétette a Hold felszínét. Az anomália felkeltette érdeklődését, és beleásta magát a játék forráskódjába, ahol felfedezte, hogy a leszállási algoritmus az időszakhoz képest rendkívül kifinomult fizikán alapult, beleértve a Tsiolkovsky rakétatörvényt és a Taylor-sorozat kiterjesztését.

Amint a fenti idézetben említettük, a probléma gyökere egy egyszerű számítási figyelmetlenség volt—a landoló pályájának kiszámításához használt képletben hiányzott az osztás kettővel. Ez a látszólag apró hiba nagy következményekkel járt, mivel a szimuláció alábecsülte az időt, amíg a landoló elérte a legalsó pályapontját, és rosszul számította ki a leszállást.

A hiba ellenére Martin lenyűgözte, hogy Storer, akkor még középiskolás diák, sikerült beépítenie a játékába az előrehaladott matematikai fogalmakat, ami még ma is lenyűgöző teljesítmény. Martin kapcsolatba lépett magával Storerrel, és a Lunar Lander szerzője elmondta Martinnak, hogy az apja fizikus volt, aki segített neki a játék szimulációjához használt egyenletek levezetésében.

Bár az emberek évekig játszottak és élvezték Storer játékát a hiba jelenlétében, ez azt mutatja, hogy a realizmus nem mindig a legfontosabb része egy vonzó interaktív élménynek. Szerencsére Aldrin és Armstrong valódi Apollo holdraszállási élménye nem szenvedett ugyanettől a problémától.

További izgalmas részleteket olvashat Martin hibakeresési kalandjáról a blogján.