Super Mario Bros

Commander Keen

Aunque desde el punto de vista de un programador de hoy en día, el avance tecnológico que posibilitó la creación de Commander Keen pueda parecer irrisorio y prácticamente trivial, teniendo en cuenta las complejas tecnología desarolladas para mejorar el aspecto de los juegos, en su día supuso una revolución en el campo del videojuego para PC, y la creación de id Software.

Commander Keen 1

Gamer's Edge

Corría el 1990 cuando los futuros fundadores de id Software todavía trabajaban en la sección de videojuegos (Gamer's Edge) de Softdisk, una empresa de software. Por aquella época, lo último en videojuegos era el Super Mario Bros. 3, con unos gráficos que sólo podía mover una consola, gracias al hardware dedicado. Ni siquiera el mejor ordenador de la empresa, un 386 a 33Mhz, era capaz de generar un scroll horizontal tan fluído como el que generaba la NES.

Por aquel entonces, Carmack trabajaba en un scroll vertical para las tarjetas EGA (Enhanced Graphics Adapter), utilizando un truco con la dirección de comienzo del CRTC (Cathode Ray Tube Controller). El scroll horizontal no era posible, al menos hasta que John Carmack, el cerebro de Id, dio con una manera de hacerlo realidad.

En un juego, la imagen se dibujaba ensamblando un array de cuadrados 16x16 pixeles llamados tiles. Primero se dibujaban los tiles que correspondían al fondo, y sobre ellos se dibujaban los personajes y otros elementos activos de la escena. Sólo el fondo podía llevar unos 200 tiles, y su dibujo llevaba una cantidad de tiempo considerable, por lo que era imposible redibujar toda la pantalla con la frecuencia necesaria para mover fluidamente un juego con scroll horizontal.

Curioso efecto de iluminación.

Las tarjetas EGA, novedad en 1990, tenían más memoria que las estandarizadas CGA (Color Graphics Adapter), y además podían dibujar 16 colores a la vez en pantalla, en lugar de 4. Para Carmack, la memoria extra de las EGA era especialmente conveniente. Por una parte, las EGA habían sido diseñadas para soportar altas resoluciones, mientras que Carmack seguía desarollando juegos a una resolución de 300x200, por lo que la memoria sobrante podría valerle para almacenar más de una pantalla de juego a la vez. Cambiando la dirección de un puntero, la tarjeta podía elegir qué imagen mandar a la pantalla alrededor de 60 veces por segundo, lo que permitía una animación muy fluída. Por otra parte, la tarjeta podía mover información dentro de su memoria mucho más rápidamente que si tuviera que copiarla de la memoria principal del ordenador a la suya, eliminando así un molesto cuello de botella.

Carmack explotó ambas características intensivamente, basándose en una técnica usada en los años 70 para desplazarse sobre imágenes grandes, tales como fotografías de satélite. Primero, dibujaba la pantalla completa, con todos los tiles, con una borde adicional de tiles fuera de la pantalla. Si el jugador se movía un pixel en una dirección, el motor gráfico movía el origen de la imagen que mandaba a pantalla un pixel en la misma dirección. No era necesario dibujar nuevos tiles. Aún cuando el jugador se movía hasta el fin de unos de los bordes extra almacenados en memoria, no era necesario volver a cargar toda la escena, ya que la mayor parte permanecía constante, y se podía copiar, dentro de la propia memoria de video, a otra posición, añadiendo los nuevos tiles que hicieran falta y resituando el origen de la imagen a la nueva posición.

Carmack almacena en memoria una porción de imagen más grande que la que se va a representar (la encuadrada en naranja)

A medida que el personaje se mueve, se modifica el offset de imagen que se envía a pantalla.

Carmack consiguió que, en lugar de tener que transportar hasta la tarjeta gráfica miles de pixeles cada vez que el jugador se movía, tuviese sólo que cambiar una dirección de memoria en el mejor caso, y redibujar unas cuantas bandas de tiles en el peor, de modo que la CPU quedaba libre para tareas como animar las plataformas y los enemigos del juego.

Lo primero que hicieron con este nuevo motor fue copiar su juego favorito, Super Mario Bros. 3, pixel por pixel, pero cambiando el personaje principal por el protagonista de una saga de juegos desarollada por John Romero: Dangerous Dave. Lo llamaron Dangerous Dave in "Copyright Infringement".

"I couldn't work for the next 3 hours. It was just amazing. I knew the games available on the PC very well by this point (1990) and NO ONE had ever created a Mario-style smooth-scrolling game on the PC. This was the first one -- right here in front of me. I was thunderstruck because I knew what we had. We had our ticket out."
-- John Romero

Dangerous Dave se recrea por el primer nivel de Super Mario 3

En Softdisk no quisieron publicar el juego, porque la tecnología de Carmack sólo funcionaba con tarjetas EGA, y Softdisk no quería prescindir del soporte para adaptadores CGA. Por lo tanto, Carmack, Romero, Jay Wilbur, Adrian Carmack y Tom Hall decidieron independizarse y fundar Id Software (aunque siguieron programando para Softdisk durante una temporada).

En un principio, limpiaron la demo técnica de Carmack y crearon una verdadera demo de Super Mario Bros. 3, que intentaron vender a Nintendo como un port para PC de su Super Mario, pero Nintendo no estaba interesada en el mercado del ordenador doméstico. Fue entonces cuando nació la saga de Commander Keen.