- L’anecdote du « Thank you for playing Wing Commander » dans Wing Commander I raconte qu’un message d’erreur à la fermeture aurait été remplacé par édition hexadécimale, mais ce n’était pas un bug resté tel quel dans la version commercialisée
- La trace la plus proche de la source originale est un commentaire publié en 2009 sur Gamasutra, dans Dirty Coding Tricks, où Ken Demarest raconte avoir temporairement masqué, pendant le développement, une erreur de fermeture liée à EMM386
- Dans DOSBox, sur du matériel d’époque et via une recherche de chaînes dans les binaires, ce message n’apparaît pas lors d’une fermeture normale ; seul le chemin de sortie par le sas de la caserne affiche un message humoristique distinct
- Même dans le code source de Wing Commander I incomplet conservé par Electronic Arts, le message du sas a été confirmé comme du code de jeu normal, différent du cas d’édition hexadécimale du gestionnaire de mémoire
- Ken Demarest a répondu que le hack lui-même avait bien existé, mais qu’il l’avait retiré avant la sortie après avoir trouvé la cause de l’erreur : l’anecdote relève donc davantage d’une astuce d’ingénierie temporaire que d’un produit final bricolé
Origine de l’anecdote « Thank you for playing Wing Commander »
- L’histoire largement répandue affirme qu’un développeur de Wing Commander, incapable de corriger une erreur du gestionnaire de mémoire EMM386 à la fermeture du jeu, aurait remplacé par édition hexadécimale la chaîne d’erreur par « thank you for playing Wing Commander »
- Au cours des dix dernières années, cette anecdote s’est diffusée sur Internet comme exemple de « bidouille logicielle amusante », puis comme illustration d’un « dirty-but-functional hack »
- Certains fans de Star Citizen l’ont aussi reprise dans un contexte de critique des compétences de Chris Roberts
- Le lien avancé étant que Roberts, contrairement à d’autres CEO, continuerait aussi à coder sur Star Citizen
- Les fans de Wing Commander I ont mis en doute la capture d’écran qui circulait avec l’histoire
- Le chemin d’installation par défaut de Wing Commander I n’est pas
c:/wc1 - La version commercialisée du jeu n’affiche pas « Thank You for Playing Wing Commander! » à la fermeture
- Le chemin d’installation par défaut de Wing Commander I n’est pas
Le commentaire Gamasutra de 2009 est proche de l’original
- En remontant à l’origine de la formulation et de la capture d’écran, on retrouve un commentaire publié le 20 août 2009 sous l’article de Brandon Sheffield sur Gamasutra, Dirty Coding Tricks
- L’essentiel du commentaire est le suivant
- Dans Wing Commander 1, une exception du gestionnaire de mémoire EMM386 se produisait à la fermeture du jeu
- Quand l’écran était effacé, une ligne du type « EMM386 Memory manager error... » s’affichait
- Comme il fallait sortir le jeu rapidement, la chaîne d’erreur dans le gestionnaire de mémoire a été modifiée par édition hexadécimale en « Thank you for playing Wing Commander »
- Gamasutra était un site populaire auprès des développeurs de jeux et a été rebaptisé Game Developer en 2021
- L’article original existe toujours sur le nouveau site, mais les commentaires semblent avoir disparu lors de la migration
- L’auteur du commentaire était Ken Demarest
- Ken Demarest III a travaillé chez Origin Systems comme ingénieur logiciel sur le premier Wing Commander, avant de devenir lead programmer sur Ultima VII puis Director of Technology de l’entreprise
- Jeff George, scénariste de Wing Commander, a déjà estimé qu’en dehors de Chris Roberts, Demarest était la personne qui avait le plus contribué à permettre la sortie du jeu
Le malentendu créé par la version Reddit et la capture d’écran
- La version diffusée en 2015 sur Reddit
/r/shittyprogrammingdifférait du commentaire original de 2009 sur deux points- Le commentaire original ne contenait aucune capture d’écran
- Le texte du message de fermeture avait été légèrement modifié pour produire un retournement plus marqué
- La version Reddit semble avoir circulé via un partage LinkedIn effectué par un tiers en 2012
- La capture d’écran ajoutée plus tard donnait l’impression que ce bug se trouvait dans la version commercialisée, mais le commentaire original ne l’affirmait pas
- Ainsi, même si la source de l’anecdote originale paraît crédible, il restait à vérifier séparément s’il s’agissait bien d’une « erreur restée dans la version sortie »
Résultats de la vérification dans la version commercialisée de Wing Commander I
- Wing Commander I n’affiche pas « thank you for playing Wing Commander » lors d’une fermeture normale
- Des tests ont été effectués dans DOSBox et sur du matériel de l’époque
- Une recherche de cette chaîne dans l’ensemble des binaires du jeu n’a rien donné
- En appuyant sur
ALT-X, on revient simplement à l’invite DOS
- À titre d’exception, cliquer sur la porte du sas dans la caserne du Tiger’s Claw déclenche un autre flux de sortie
- Une invite de confirmation
y/napparaît - Le retour à DOS affiche un message commençant par « You step out of the airlock and into… »
- Cette phrase est une blague directement liée à ce mode de sortie
- Une invite de confirmation
- Ce message de sas existe réellement dans le binaire du jeu
- Ken Demarest est aussi associé à cet écran de caserne
- Il est connu comme la personne ayant implémenté l’effet de gouttes d’eau tombant dans un seau
- Cet effet est souvent cité comme exemple de la recherche d’immersion de Chris Roberts
Code source et réponse de Ken Demarest
- Le code source incomplet de Wing Commander I conservé par Electronic Arts a été utilisé pour la vérification
- Ces fichiers source ont servi au build de sortie de Wing Commander I, puis ont été transmis à l’équipe chargée du portage FM Towns
- Certains éléments, dont les routines de gestion mémoire, n’ont pas été conservés
- Le code restant suffit malgré tout à confirmer l’origine du message du sas
BARRACKS.Cconfigure les fonctions de l’écran de flux de jeu de la caserne- Le jeu décharge la mémoire, puis affiche le message du sas et un saut de ligne
- Cela correspond au comportement observé à l’exécution et ne relève pas d’une édition hexadécimale du gestionnaire de mémoire
- Un autre chemin de fermeture se trouve dans
COCKPIT.Cet n’affiche aucun message - Darren Xczek a suggéré la possibilité d’Ultima VII
- Ultima VII affiche un message « thank you for playing Ultima VII » lors du retour à DOS
- Ken Demarest était lead programmer d’Ultima VII
- Ultima VII était célèbre pour ses problèmes de gestion mémoire, au point que son système interne s’appelait « Voodoo Memory Manager »
- Après vérification directe auprès de Ken Demarest, le hack par édition hexadécimale a bien eu lieu pendant le développement
- Il a répondu qu’il aurait eu envie de sortir le jeu avec ce hack, mais qu’après avoir trouvé la cause de l’erreur, sa conscience ne lui permettait pas de le laisser
- Il a aussi indiqué que l’édition manuelle allongeait le temps de finalisation du build, ce qui la rendait inefficace
- Au final, cette anecdote était une astuce temporaire pendant le développement et n’est pas restée dans la version commercialisée
- Ce n’est pas la preuve qu’un produit bâclé a été vendu, mais plutôt un hack de développement temporaire supprimé avant la sortie
1 commentaires
Avis sur Hacker News
Cela me rappelle le hack que Traveller's Tales avait intégré dans Sonic 3D Blast pour Sega Genesis/Megadrive.
Si l’on secouait ou frappait suffisamment la cartouche en laissant la console allumée, l’écran de « secret level select » apparaissait. Pendant longtemps, cela a été considéré comme un easter egg, mais en réalité c’était un gestionnaire de crash personnalisé qui interceptait l’interruption d’erreur du CPU principal pour rediriger vers l’écran de sélection de niveau.
C’était un dispositif conçu pour éviter que le build soit refusé par le QA de Sega et que la sortie soit retardée ; comme le QA prenait plusieurs semaines, un seul crash obligeait à tout recommencer depuis le début. Secouer la cartouche provoquait une coupure momentanée du contact, ce qui déclenchait une erreur processeur.
Source, vidéo YouTube de 3 minutes : https://www.youtube.com/watch?v=ZZs2HUW9tDA
La chaîne YouTube « Coding Secrets » liée propose d’autres vidéos sur des hacks similaires, et ce que les développeurs de l’époque faisaient pour faire tourner leurs jeux malgré les contraintes matérielles et commerciales est vraiment impressionnant.
De nos jours, on a parfois l’impression que certains jeux AAA sautent même les quelques minutes de QA côté éditeur ou constructeur de console.
Il y a quelque chose de vraiment magique dans le fait de pouvoir remonter à une source de première main pour ce genre d’histoire.
Surtout quand, comme moi, on est séparé par l’âge ou la géographie : parfois, cela semble presque impossible.
J’ai grandi en Suède dans les années 80 et j’étais déjà complètement passionné par les ordinateurs. J’utilisais un Commodore 128, puis je suis passé à l’Amiga ; je jouais beaucoup en mode C64 et, bien sûr, « Uridium » [1] et « Paradroid » [2] étaient pratiquement des classiques incontournables que tout le monde connaissait.
Pourtant, leur développeur, Andrew Braybrook, apparaît dans mon fil Xitter [3], et le fait qu’il développe encore des jeux me paraît toujours étrange. À l’époque, il vivait au Royaume-Uni, avait plus de dix ans de plus que moi et ressemblait à une sorte de magicien lointain ; aujourd’hui, au moins professionnellement, il me semble être en quelque sorte un pair.
Ce genre de chose existait sans doute avant Internet, mais cela devait être beaucoup plus difficile et rare.
[1]: https://en.wikipedia.org/wiki/Uridium
[2]: https://en.wikipedia.org/wiki/Paradroid
[3]: https://twitter.com/UridiumAuthor
C’est vraiment chouette qu’il existe encore en 2023 un site d’actualité sur Wing Commander maintenu à jour.
J’ai déjà entendu l’histoire d’un développeur qui auditait du code de missiles. Il avait rapidement signalé des fuites mémoire un peu partout, mais il s’est avéré que c’était voulu : le missile effectuait en quelque sorte son propre garbage collection à la fin du vol.
Le problème de manque de mémoire aurait été géré en estimant au double l’utilisation mémoire prévue pendant le vol du missile.
Dans le fil Reddit lié, on trouve ce commentaire :
J’ai aussi beaucoup joué à Ultima VII, donc comme le dit l’article, mes souvenirs ont peut-être fusionné.
Ce genre de message de sortie n’était pas rare autrefois, et le simple fait de lire cette histoire suffit à créer un faux souvenir ou un souvenir mélangé.
Même si cette histoire s’est finalement révélée fausse, je me souviens avoir installé, en 1999/2000, un lanceur de jeux multijoueur pour Half-Life 1.
Quand on cliquait sur « install », une boîte de dialogue apparaissait et disait en gros : « Ne vous inquiétez pas si le programme d’installation indique que l’installation a échoué. Le programme a bien été installé. »
J’en avais même fait une capture d’écran que j’ai gardée pendant des années. Je l’ai perdue, ou elle se trouve peut-être quelque part sur un vieux PC chez mes parents, mais je pourrais jurer que c’était vrai.
Le message d’erreur est bien apparu, et le programme avait effectivement été installé correctement.
J’en ai parlé une fois sur Twitter, et quelqu’un m’a répondu que c’était un problème connu ; si ma mémoire est bonne, cela avait un rapport avec une mise à jour du registre de Windows 97.
En général, tout Program Files disparaissait.
C’est étrange, parce que j’ai vraiment l’impression de me souvenir avoir vu le message « Thank you for playing Wing Commander! » quand j’étais enfant. Je suis le seul ?
Avec le recul, j’ai joué à beaucoup de jeux DOS, donc il est possible que mes souvenirs se soient mélangés. Afficher quelque chose à la fermeture n’était pas si rare.
La façon dont une histoire se déforme peu à peu en se propageant peut être vraiment agaçante. Dans ce cas précis, ce n’est pas grave, mais quand même.
Je suis assez sûr que ce message existait, mais dans Wing Commander 2, pas dans l’original.