1 puntos por GN⁺ 2023-09-21 | 1 comentarios | Compartir por WhatsApp
  • 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.

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/shittyprogramming diferí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.
  • 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.C configura 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.C y 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

 
GN⁺ 2023-09-21
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.

    • Es significativo que incluso en una época en la que la estructura de los juegos era mucho más simple que ahora, QA fuera un proceso de varias semanas.
      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.
    • Estos videos son refrescantes porque son cortos. Siento que todos los canales de YouTube a los que estoy suscrito últimamente hacen videos de 45 minutos.
  • 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.

    • "Memoria insuficiente en el misil, cambiando a cañón".
    • Sinceramente, cuesta creerlo.
  • En el hilo de Reddit enlazado hay un comentario que dice:

    Recuerdo que la primera vez que ejecuté Wing Commander I jugué durante horas... al salir después de una sesión larga, leí esa frase y pensé: "ah, qué amable".
    Ahora que sé la verdad, me pregunto si es mentira o si simplemente lo recuerda mal.

    • Probablemente sea el efecto Mandela. Yo también recuerdo ese mensaje que, según dicen, en realidad no existe.
      También jugué mucho Ultima VII, así que, como dice el artículo, tal vez los recuerdos se mezclaron.
    • Podría revisar si mis disquetes todavía funcionan y ver si difieren de la versión de GOG/Kilrathi Saga. Aunque lo más probable es que no funcione.
    • Obviamente lo recuerda mal. La memoria es notoriamente poco confiable y mucho más inestable de lo que creemos.
      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.
    • Es muy probable que esté usando un lanzamiento mucho más posterior. Las versiones más fáciles de conseguir en línea salieron bastante después.
  • 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.

    • Si desinstalabas las Sierra Utilities incluidas con Half-Life 1, borraban el directorio un nivel por encima de donde las habías instalado.
      Normalmente se llevaba puesto todo Program Files.
    • Windows 97
      Creo que encontramos el problema.

  • Es raro, porque siento que recuerdo con claridad haber visto de niño el mensaje "Thank you for playing Wing Commander!". ¿Soy el único?

    • Creo que ese mensaje de "thank you for playing" en realidad estaba en Wing Commander 2.
    • A mí también me resultó muy familiar cuando lo leí por primera vez.
      En retrospectiva, jugué muchos juegos de DOS, así que quizá se mezclaron. No era tan raro que imprimieran algo al salir.
    • Yo también recuerdo claramente haber visto esa frase de agradecimiento. Obviamente viene a la mente el efecto Mandela, pero el recuerdo es tan vívido que da escalofríos.
  • 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.