Un ingénieur à la retraite découvre un bug vieux de 55 ans dans le code du jeu informatique Lunar Lander

Agrandir / Illustration de l’atterrisseur lunaire Apollo Eagle au-dessus de la Lune.

Vendredi, un ingénieur logiciel à la retraite nommé Martin C. Martin a annoncé qu’il avait récemment découvert un bug dans la version originale. Atterrisseur lunaire code physique du jeu vidéo tout en bricolant le logiciel. Créé par un lycéen de 17 ans nommé Jim Storer en 1969, ce jeu primordial représentait l’action uniquement sous forme de mises à jour de statut textuelles sur un télétype, mais il ouvrait la voie aux versions futures à venir.

Le jeu légendaire, développé par Storer sur un mini-ordinateur PDP-8 dans un langage de programmation appelé FOCAL quelques mois seulement après que Neil Armstrong et Buzz Aldrin ont effectué leurs promenades historiques sur la Lune, permet aux joueurs de contrôler la descente d’un module lunaire sur la surface de la Lune. Les joueurs doivent gérer soigneusement leur consommation de carburant pour réaliser un atterrissage en douceur, en prenant des décisions critiques toutes les dix secondes pour brûler la bonne quantité de carburant.

En 2009, juste avant le 40e anniversaire du premier alunissage, j’ai entrepris de retrouver l’auteur de l’original. Atterrisseur lunaire jeu, qui était alors principalement connu comme un jeu graphique, grâce à la version graphique de 1974 et à un titre d’arcade Atari de 1979. Lorsque j’ai découvert que Storer avait créé la plus ancienne version connue sous forme de jeu de télétype, je l’ai interviewé et j’ai rédigé une histoire du jeu. Storer a ensuite publié le code source du jeu original, écrit en FOCAL, sur son site Web.

Une numérisation de la sortie imprimée du télétype du jeu original <em>Lunar Lander</em>, fournie par Jim Storer. » src= »https://cdn.arstechnica.net/wp-content/uploads/2024/06/lunar_lander_teletype_output-640×524.jpg » width= »640″ height= »524″ /><figcaption class=
Agrandir / Une numérisation de la sortie imprimée du télétype à partir de l’original Atterrisseur lunaire jeu, fourni par Jim Storer.

Jim Storer

Avance rapide jusqu’en 2024, lorsque Martin, expert en IA, développeur de jeux et ancien associé postdoctoral au MIT, est tombé sur un bug dans le code du lycée de Storer alors qu’il explorait ce qu’il pensait être la stratégie optimale pour faire atterrir le module avec une efficacité énergétique maximale – un technique connue parmi Programme spatial Kerbal enthousiastes comme la « brûlure du suicide ». Cette méthode consiste à tomber librement pour prendre de la vitesse, puis à allumer les moteurs au dernier moment possible pour ralentir juste assez pour atterrir en toute sécurité. Il a également essayé une autre approche : un atterrissage plus doux.

« J’ai récemment exploré le programme optimal de consommation de carburant pour atterrir le plus doucement possible et avec le maximum de carburant restant », a écrit Martin sur son blog. « Étonnamment, la meilleure stratégie théorique n’a pas fonctionné. Le jeu pense à tort que l’atterrisseur n’atteint pas la surface alors qu’en réalité c’est le cas. En creusant, j’ai été étonné par la physique sophistiquée et l’informatique numérique du jeu. Finalement J’ai découvert un bug : une « division par deux » manquante qui était apparemment passée inaperçue pendant près de 55 ans. »

Une question de division

Schéma du système d'évacuation de lancement au-dessus de la capsule Apollo.
Agrandir / Schéma du système d’évacuation de lancement au-dessus de la capsule Apollo.

NASA

Malgré l’application de ce qui aurait dû être une stratégie d’atterrissage classique, Martin a constaté que le jeu rapportait de manière incohérente que l’atterrisseur avait complètement raté la surface de la Lune. Intrigué par l’anomalie, Martin a fouillé dans le code source du jeu et a découvert que l’algorithme d’atterrissage était basé sur une physique très sophistiquée pour l’époque, notamment l’équation de la fusée Tsiolkovsky et une extension de la série Taylor.

Comme mentionné dans la citation ci-dessus, la racine du problème était une simple erreur informatique : une division par deux manquante dans la formule utilisée pour calculer la trajectoire de l’atterrisseur. Cette erreur apparemment mineure a eu de lourdes conséquences, car la simulation a sous-estimé le temps nécessaire pour que l’atterrisseur atteigne son point de trajectoire le plus bas et a mal calculé l’atterrissage.

Malgré le bug, Martin a été impressionné par le fait que Storer, alors lycéen, ait réussi à incorporer des concepts mathématiques avancés dans son jeu, un exploit qui reste impressionnant même selon les normes actuelles. Martin a contacté Storer lui-même, et le Atterrisseur lunaire L’auteur a dit à Martin que son père était un physicien qui l’avait aidé à dériver les équations utilisées dans la simulation du jeu.

Alors que les gens ont joué et apprécié le jeu de Storer pendant des années avec le bug en place, cela montre que le réalisme n’est pas toujours la partie la plus importante d’une expérience interactive convaincante. Et heureusement pour Aldrin et Armstrong, la véritable expérience d’atterrissage lunaire d’Apollo n’a pas souffert du même problème.

Vous pouvez en savoir plus sur la passionnante aventure de débogage de Martin sur son blog.

Source-147