NAVIGATING HISTORY: UNEARTHING A 55-YEAR-OLD COMPUTING ENIGMA IN THE LUNAR LANDER GAME

Thanks to the curiosity of one game-playing retired software engineer, a decades-old bug hiding in the code of one of the first computer games has been unearthed – a discovery that took us back to the humble days of video gaming, as well as the enduring utility of debugging in the digital age.

THE BACKDROP OF AN ICONIC GAME

This game came from the intersection of a historic human achievement and the ingenuity of a teenage boy. Lunar Lander was first released in 1969 by Jim Storer, then 17 years old, as a player-controlled simulation of the decisions Apollo astronauts made while landing on the moon. The game was little more than a series of text status updates to which the player responded, again using text, to navigate the lunar module safely to the surface. The game was written on a PDP-8 minicomputer as a salute to the epochal moonwalk of Neil Armstrong and Buzz Aldrin being glimpsed through the programming language’s own textual medium of FOCAL.

A DISCOVERY DECADES IN THE MAKING

Jump forward to the present age of digital preservation. Born in 1948, a retired engineer with graduate studies in AI, and experience developing games for Apple IIE, Martin C Martin approached the original Lunar Lander source code out of equal parts nostalgia and scholarly inquiry. Spurred by his interest in ‘suicide burn’, a landing manoeuvre revered by space sim enthusiasts as the pinnacle of daring efficiency, Martin set forth into the past. But what he found surprised him: applying the theoretical optimal approach, against which he had empirically benchmarked other techniques, failed in the game. This failure resulted in a landing that the game did not recognise.

UNVEILING THE STATUS QUO OF A 55-YEAR-OLD BUG

This difference was the reason why Martin had been asked to look into the problem in the first place. Buried in Storer’s now antiquated code, he unearthed a missing divisor-by-two operation that had quietly changed the game’s landing equations over decades. The bug had flown under the radar for decades in that crucial piece of the flight physics engine – the software that calculated the lunar module’s trajectory down to the surface of the Moon. It’s the impressive – and the frustrating – part of early computing.

THE COMPLEXITY BEHIND THE SIMPLICITY

This bug’s discovery highlights the surprisingly complex physics embedded in the Lunar Lander’s game design. Storer’s code is, superficially, a kind of functional math. But in its few scattered lines he embeds sophisticated mathematical models – in particular, the Tsiolkovsky rocket equation – along with basic numeric computation. Surely this sophistication, even in the earliest days of video gaming, is more than the work of a geeky teenager.

THE ESSENCE OF GAMING: BEYOND STATUS AND REALISM

And as an intriguing case study of the history of game design and debugging, the bug that unveiled the Lunar Lander tells us an important truth about gaming: play is often more compelling than realism. Lunar Lander was an amazing little game. Despite its glitch, it was a rudimentary but evocative interface to deep space.

LEARNING FROM THE LEGENDS: THE CONTINUED SIGNIFICANCE OF STATUS IN DEBUGGING

With Martin’s Lunar Lander entry into the annals of gaming history, the technological and creative leaps of the past are not just of historical record – they also provide today’s bug-fixers with a reminder of the eternal relevance of debugging. With increasing complexity of software systems, the rereading and reworking of past codes provides lessons in the careful practice of the all-important ‘debugger’ juggling act of efficiency versus accuracy.

REFLECTING ON STATUS: THE HEART OF DEBUGGING

Code, design and function are intricately interrelated, and when shifts take place – adding or subtracting code, or shifting design parameters – there can be unforeseen consequences. The status of a project is a complex indicator, and tracking it is an essential part of debugging. That is what status assessment and status enhancement work is: code that executes frequently, and is therefore extremely accessible, can be stimulated and adjusted. It is an essential part of the iterative process through which something that might work can transform into something that really does work. Debugging is, from this perspective, the core of all technological invention. It looks and sounds like innovation, but it is in fact debugging, because debugging is the engine of technological innovation. The long-hidden bug is thus, in an ironic twist, a discovery that foregrounds the timeless nature of debugging as the essential moving piece of technological invention.’

This dissonance between a simple videogame and the complicated business of sending people to space gets at the enduring promise of videogames as a pathway to the boundaries of human achievement. As long as we continue to play the classics and explore the lessons of the old pros who came before us, debugging will persist as an integral aspect of software making, and we will be reminded that the ultimate launch assured is an intentional one, where success can only be earned after careful trial, error, and correction.

Jun 15, 2024
<< Go Back