- La anécdota de “Thank you for playing Wing Commander” en Wing Commander I cuenta que se cambió con edición hexadecimal un mensaje de error al salir, pero no fue un bug que quedara tal cual en la versión publicada.
- El registro más cercano a la fuente original es un comentario de 2009 en Dirty Coding Tricks de Gamasutra, donde Ken Demarest dejó constancia de que, durante el desarrollo, ocultó temporalmente un error de salida de EMM386.
- En DOSBox, hardware de la época y búsquedas de cadenas en los binarios, ese mensaje no aparecía al salir normalmente; solo la ruta de salida por la esclusa de aire de los barracones mostraba un mensaje de broma separado.
- En el código fuente de Wing Commander I incompleto conservado por Electronic Arts, el mensaje de la esclusa también se confirmó como código normal del juego, distinto del caso de edición hexadecimal del administrador de memoria.
- Ken Demarest respondió que el hack en sí fue real, pero que lo eliminó antes del lanzamiento después de encontrar la causa del error, por lo que la anécdota se parece más a un truco temporal de ingeniería que a un producto final descuidado.
Origen de la anécdota de “Thank you for playing Wing Commander”
- La historia más difundida dice que un desarrollador de Wing Commander no pudo corregir un error del administrador de memoria EMM386 al salir del juego, así que cambió con edición hexadecimal la cadena de error por “thank you for playing Wing Commander”.
- Durante la última década, esta anécdota se propagó por internet como ejemplo de “hacks de software divertidos” y empezó a usarse como caso representativo de un “dirty-but-functional hack”.
- Algunos fans de Star Citizen también usaron este caso en contextos donde criticaban la capacidad de Chris Roberts.
- El punto de conexión era que Roberts, a diferencia de otros CEO, sigue programando en Star Citizen.
- Los fans de Wing Commander I sospechaban de la captura de pantalla que circulaba junto con la historia.
- La ruta de instalación predeterminada de Wing Commander I no es
c:/wc1. - La versión publicada del juego no muestra “Thank You for Playing Wing Commander!” al salir.
- La ruta de instalación predeterminada de Wing Commander I no es
Un comentario de Gamasutra de 2009 parece ser lo más cercano al original
- Al rastrear el origen de la frase y de la captura, se identificó un comentario publicado el 20 de agosto de 2009 en el artículo de Brandon Sheffield para Gamasutra, Dirty Coding Tricks.
- La idea central del comentario era la siguiente:
- En Wing Commander 1, al salir del juego se producía una excepción del administrador de memoria EMM386.
- Al limpiar la pantalla, aparecía una línea como “EMM386 Memory manager error...”.
- Como había que lanzar el juego rápido, editaron en hexadecimal la cadena de error dentro del administrador de memoria y la cambiaron por “Thank you for playing Wing Commander”.
- Gamasutra era un sitio popular entre desarrolladores de videojuegos y en 2021 cambió de marca a Game Developer.
- El artículo original sigue disponible en el nuevo sitio, pero los comentarios parecen haber desaparecido durante la transición.
- El autor del comentario era Ken Demarest.
- Ken Demarest III trabajó como ingeniero de software del primer Wing Commander en Origin Systems, y después fue programador líder de Ultima VII y Director of Technology de la compañía.
- El guionista de Wing Commander Jeff George llegó a evaluar que, excluyendo a Chris Roberts, Demarest fue la persona que más contribuyó a que el juego pudiera lanzarse.
El malentendido creado por la versión de Reddit y la captura de pantalla
- La versión difundida en 2015 en Reddit
/r/shittyprogrammingdifería del comentario original de 2009 en dos puntos.- El comentario original no incluía captura de pantalla.
- La redacción del mensaje de salida cambió ligeramente, haciendo que pareciera un giro más fuerte.
- La versión de Reddit parece haber circulado tras una publicación compartida por un tercero en LinkedIn en 2012.
- La captura de pantalla añadida después hizo parecer que este bug había llegado a la versión publicada, pero el comentario original no afirmaba eso.
- Por eso, aunque la fuente de la anécdota original fuera plausible, hacía falta verificar por separado si realmente fue un “error que quedó en la versión publicada”.
Resultado de la verificación en la versión publicada de Wing Commander I
- Wing Commander I no muestra “thank you for playing Wing Commander” al salir normalmente.
- Se probó en DOSBox y en hardware de la época.
- Se buscó esa cadena en todos los binarios del juego, pero no apareció.
- Al presionar
ALT-X, simplemente se vuelve al prompt de DOS.
- Como excepción, al salir haciendo clic en la puerta de la esclusa de aire de los barracones de Tiger’s Claw, se ejecuta otro flujo.
- Aparece un prompt de confirmación
y/n. - Al volver a DOS, muestra el mensaje “You step out of the airlock and into…”.
- Esa frase es una broma directamente vinculada con esa forma de salir.
- Aparece un prompt de confirmación
- Este mensaje de la esclusa sí existe realmente en el binario del juego.
- Ken Demarest también está vinculado con esa pantalla de barracones.
- Se lo conoce como la persona que implementó el efecto de las gotas de agua cayendo en el balde.
- Ese efecto se cita con frecuencia como ejemplo de la búsqueda de inmersión de Chris Roberts.
Código fuente y respuesta de Ken Demarest
- Para la verificación se usó el código fuente incompleto de Wing Commander I conservado por Electronic Arts.
- Esos archivos fuente se usaron para el build de lanzamiento de Wing Commander I y luego también se entregaron al equipo que desarrolló el port para FM Towns.
- Parte del material, incluidas las rutinas de administración de memoria, ya no se conserva.
- Aun con el código restante, fue posible confirmar el origen del mensaje de la esclusa.
BARRACKS.Cconfigura las funciones de la pantalla de flujo de juego de los barracones.- El juego descarga la memoria y luego imprime el mensaje de la esclusa y saltos de línea.
- Esto coincide con el resultado observado al ejecutarlo, y no es un caso de edición hexadecimal del administrador de memoria.
- Otra ruta de salida está en
COCKPIT.Cy no muestra ningún mensaje. - Darren Xczek sugirió la posibilidad de que fuera Ultima VII.
- Ultima VII muestra el mensaje “thank you for playing Ultima VII” al volver a DOS.
- Ken Demarest fue el programador líder de Ultima VII.
- Ultima VII era famoso por sus problemas de administración de memoria, al punto de que su sistema interno se llamaba “Voodoo Memory Manager”.
- Tras consultarlo directamente con Ken Demarest, se concluyó que el hack de edición hexadecimal sí ocurrió durante el desarrollo.
- Respondió que incluso tuvo ganas de lanzarlo con ese hack incluido, pero que, después de encontrar la causa del error, en conciencia no podía dejarlo así.
- También respondió que el proceso de editarlo a mano alargaba el tiempo necesario para completar el build y era ineficiente.
- En definitiva, esta anécdota fue un truco temporal durante el desarrollo y no quedó en la versión publicada.
- No es evidencia de que se haya vendido un producto descuidado, sino más bien de un hack temporal de desarrollo eliminado antes del lanzamiento.
1 comentarios
Opiniones en Hacker News
Me recuerda al hack que Traveller's Tales puso en Sonic 3D Blast para Sega Genesis/Megadrive.
Si sacudías o golpeabas el cartucho lo suficiente con la consola encendida, aparecía la pantalla de "secret level select"; durante mucho tiempo se consideró un easter egg, pero en realidad era un manejador de crashes personalizado que interceptaba la interrupción de error de la CPU principal y te mandaba a la pantalla de selección de nivel.
Era un mecanismo creado para evitar que Sega QA rechazara la build y se retrasara el lanzamiento; como QA tomaba varias semanas, un solo crash implicaba volver a empezar desde cero. Al sacudir el cartucho, el contacto se interrumpía momentáneamente y provocaba un error del procesador.
Fuente, video de YouTube de 3 minutos: https://www.youtube.com/watch?v=ZZs2HUW9tDA
El canal de YouTube "Coding Secrets" enlazado tiene más videos sobre hacks similares, y es realmente impresionante lo que hacían los desarrolladores de la época para que los juegos funcionaran dentro de las limitaciones de hardware y de negocio.
Hoy en día a veces parece que los publishers o los fabricantes de consolas se saltan incluso unos minutos de QA en los juegos AAA.
Poder llegar a una fuente primaria en este tipo de cosas tiene algo realmente mágico.
Sobre todo cuando, como en mi caso, hay una diferencia de edad o distancia geográfica; a veces parece casi imposible.
Crecí en Suecia en los 80 y ya entonces estaba totalmente metido en las computadoras. Usaba una Commodore 128 y después pasé a Amiga, pero jugaba mucho en modo C64 y, por supuesto, "Uridium" [1] y "Paradroid" [2] eran casi títulos imprescindibles que todos conocían.
Pero todavía se me hace raro que su desarrollador, Andrew Braybrook, esté en mi feed de Xitter [3] y que siga desarrollando juegos. En aquel entonces era como un mago lejano que vivía en Reino Unido y me llevaba más de 10 años; ahora, al menos profesionalmente, se siente en cierta medida como un colega.
Supongo que esto también pasaba antes de Internet, pero habría sido mucho más difícil y raro.
[1]: https://en.wikipedia.org/wiki/Uridium
[2]: https://en.wikipedia.org/wiki/Paradroid
[3]: https://twitter.com/UridiumAuthor
Me encanta que en 2023 todavía exista un sitio de noticias de Wing Commander que se mantiene actualizado.
Escuché una historia sobre un desarrollador que auditaba código de misiles. Rápidamente señaló que había fugas de memoria por todos lados, pero resultó que era un diseño intencional: el misil hacía su propia recolección de basura al final del vuelo, por decirlo así.
Dicen que el problema de quedarse sin memoria se manejaba calculando el doble del uso de memoria esperado durante el vuelo del misil.
En el hilo de Reddit enlazado hay un comentario que dice:
También jugué mucho Ultima VII, así que, como dice el artículo, tal vez los recuerdos se mezclaron.
Ese tipo de mensajes al salir no era raro antes, y el solo hecho de leer esa historia basta para generar un recuerdo falso o mezclado.
Aunque esta historia al final resultó no ser cierta, recuerdo haber instalado en 1999/2000 un launcher de juegos multijugador de Half-Life 1.
Al presionar "install", apareció un cuadro de diálogo que decía más o menos: "No se preocupe si el instalador dice que la instalación falló. El programa se instaló correctamente".
Incluso tomé una captura de pantalla y la tuve durante años. Quizá la perdí, o tal vez esté en alguna computadora vieja en casa de mis padres, pero puedo jurar que fue real.
Efectivamente apareció el mensaje de error, y el programa estaba instalado correctamente.
Una vez conté esta historia en Twitter y alguien respondió que era un problema conocido; si no recuerdo mal, tenía que ver con una actualización del registro de Windows 97.
Normalmente se llevaba puesto todo Program Files.
Es raro, porque siento que recuerdo con claridad haber visto de niño el mensaje "Thank you for playing Wing Commander!". ¿Soy el único?
En retrospectiva, jugué muchos juegos de DOS, así que quizá se mezclaron. No era tan raro que imprimieran algo al salir.
Puede ser realmente molesto que, a medida que una historia se transmite, se le vayan pegando pequeñas distorsiones. En este caso no hace daño, pero aun así.
Estoy bastante seguro de que el mensaje estaba en Wing Commander 2, no en el original.