On Friday, a retired software program engineer named Martin C. Martin introduced that he lately found a bug in the unique Lunar Lander computer game’s physics code whereas tinkering with the software program. Created by a 17-year-old highschool scholar named Jim Storer in 1969, this primordial game rendered the motion solely as textual content standing updates on a teletype, nevertheless it set the stage for future variations to come back.
The legendary game—which Storer developed on a PDP-8 minicomputer in a programming language referred to as FOCAL simply months after Neil Armstrong and Buzz Aldrin made their historic moonwalks—permits gamers to manage a lunar module’s descent onto the Moon’s floor. Players should fastidiously handle their gasoline utilization to realize a mild touchdown, making essential choices each ten seconds to burn the correct quantity of gasoline.
In 2009, simply wanting the fortieth anniversary of the primary Moon touchdown, I got down to discover the creator of the unique Lunar Lander game, which was then primarily referred to as a graphical game, because of the graphical model from 1974 and a 1979 Atari arcade title. When I found that Storer created the oldest recognized model as a teletype game, I interviewed him and wrote up a historical past of the game. Storer later launched the supply code to the unique game, written in FOCAL, on his web site.
Fast ahead to 2024, when Martin—an AI knowledgeable, game developer, and former postdoctoral affiliate at MIT—stumbled upon a bug in Storer’s highschool code whereas exploring what he believed was the optimum technique for touchdown the module with most gasoline effectivity—a way recognized amongst Kerbal Space Program fanatics because the “suicide burn.” This technique includes falling freely to construct up velocity after which igniting the engines on the final attainable second to decelerate simply sufficient to the touch down safely. He additionally tried one other strategy—a extra light touchdown.
“I lately explored the optimum gasoline burn schedule to land as gently as attainable and with most remaining gasoline,” Martin wrote on his weblog. “Surprisingly, the theoretical finest technique didn’t work. The game falsely thinks the lander doesn’t contact down on the floor when in truth it does. Digging in, I used to be amazed by the delicate physics and numerical computing in the game. Eventually I discovered a bug: a lacking ‘divide by two’ that had seemingly gone unnoticed for practically 55 years.”
A matter of division
Despite making use of what ought to have been a textbook touchdown technique, Martin discovered that the game inconsistently reported that the lander had missed the Moon’s floor fully. Intrigued by the anomaly, Martin dug into the game’s supply code and found that the touchdown algorithm was based mostly on extremely subtle physics for its time, together with the Tsiolkovsky rocket equation and a Taylor collection enlargement.
As talked about in the quote above, the foundation of the issue was a easy computational oversight—a lacking division by two in the method used to calculate the lander’s trajectory. This seemingly minor error had huge penalties, inflicting the simulation to underestimate the time till the lander reached its lowest trajectory level and miscalculate the touchdown.
Despite the bug, Martin was impressed that Storer, then a highschool senior, managed to include superior mathematical ideas into his game, a feat that continues to be spectacular even by at the moment’s requirements. Martin reached out to Storer himself, and the Lunar Lander creator informed Martin that his father was a physicist who helped him derive the equations used in the game simulation.
While folks performed and loved Storer’s game for years with the bug in place, it goes to point out that realism is not all the time a very powerful a part of a compelling interactive expertise. And fortunately for Aldrin and Armstrong, the actual Apollo lunar touchdown expertise did not endure from the identical concern.
You can learn extra about Martin’s thrilling debugging journey over on his weblog.