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

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 annoncé qu’il a récemment découvert un bug dans l’original Atterrisseur lunaire code physique du jeu vidéo tout en bricolant le logiciel. Créé par un Jim Storer, lycéen de 17 ans en 1969, ce jeu primordial rendait l’action uniquement sous forme de mises à jour du statut du texte sur un télétypemais cela a ouvert la voie aux futures versions à venir.

Le jeu légendaire, développé par Storer sur un PDP-8 mini-ordinateur 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 avant tout connu comme un jeu graphique, grâce à la version graphique de 1974 et un Titre d’arcade Atari de 1979. Quand 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 écrit une histoire du jeu. Stockeur plus tard a publié le code source au jeu original, écrit en FOCAL, sur son site Internet.

Lire aussi  Le Japon envisage des avions de ligne à hydrogène pour ses liaisons régionales • -
Atterrisseur lunaire jeu, fourni par Jim Storer.”>Une numérisation de la sortie imprimée du télétype à partir de l'original <em>Atterrisseur lunaire</em> jeu, fourni par Jim Storer.” src=”https://cdn.arstechnica.net/wp-content/uploads/2024/06/lunar_lander_teletype_output-640×524.jpg” width=”640″ height=”524″ srcset=” https://cdn.arstechnica.net/wp-content/uploads/2024/06/lunar_lander_teletype_output-1280×1047.jpg 2x”/></a><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 le Équation de la fusée Tsiolkovsky et un série Taylor expansion.

Lire aussi  La fin des vaccins Covid à la « vitesse de distorsion »

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 l’aventure passionnante de débogage de Martin sur son blog.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Recent News

Editor's Pick