22-03-2009
Las tecnologías empleadas en los juegos actuales han avanzado hasta el punto en que los estudios creativos de juegos de ordenador y consolas son ahora los líderes en investigación gráfica. En efecto, la exigencia de realismo de gráficos en tiempo real, sin duda ha impulsado la investigación de los gráficos en esferas tales como la imagen basada en las altas prestaciones y la capacidad de usar varios procesadores para el dibujado. El salto tecnológico es patente.
Lo que pretendo es explorar superficialmente la industria de 8-bits (de 1982 a 1990) y, en particular, las arquitecturas gráficas , algoritmos y técnicas empleadas en ese momento en los juegos de ordenador.
En lugar de intentar hacer una revisión completa de todas las máquinas disponibles en el momento, voy a concentrarme en algo que pude palpar de primera mano en los 80 y los 90: El Commodore 64, que fue sin duda el mayor éxito de los 8 bits, pero también me detendré con una breve mirada al Atari 800 y al Sinclair ZX Spectrum, con del fin de establecer una pequeña comparación.
Más adelante, esbozaré superficialmente la arquitectura del C64 y su subsistema de gráficos (para compararla con algunos de sus principales rivales), también algunas de las técnicas gráficas utilizadas en los diferentes géneros de juegos y también exploraré algunas de los más esotéricos efectos que pudieron ser exprimidos de los C64 dadas las peculiaridades de su chip de vídeo.
La época dorada de los juegos de 8 bits comenzó en 1982 y continuó hasta aproximadamente 1990. Tras el éxito de los juegos de ordenador aficionado (como el Sinclair ZX-80), una serie de compañías informáticas fabricaron simultáneamente una serie de potentes ordenadores domésticos listos para usar, caracterizado por el Commodore 64, el Sinclair Spectrum y Atari 800 ( que me limitaré a hacer referencia a como los Atari 800 o sólo de Atari).
De hecho, hay muchos más contendientes:

A simple vista se trata de un resumen de una selección de la amplia gama de ordenadores de 8-bit que aparecieron en el mercado alrededor de 1982. Los líderes del mercado fueron los C64, el Spectum y el BBC (en Europa) y Atari (en los EE.UU.). Amstrad fue capaz de aportar una gran visión, capturó suculentos trozos de la cuota de mercado a mediados de los años ochenta con el CPC-464, pero hasta la llegada de las máquinas de 16 bits (anunciadas por los Commodore Amiga y Atari ST), el Commodore 64 fue el equipo más popular de origen.
Su popularidad se debe sin duda a las capacidades gráficas y de sonido en lugar de sistema operativo (en los C64 el BASIC es de lo mas malo nunca visto) o la velocidad (el reloj del procesador es más lento que la mayoría de sus contemporáneos). Era una simple cuestión básica para lograr los efectos de animación - en los C64 se dispone de soporte hardware para el desplazamiento y los sprites. Los sprites son pequeños elementos gráficos fijos en anchura y altura que pueden colocarse al margen de la pantalla principal y se aplican en la creación de personajes móviles en juegos . Estas características alentaron la experimentación, y toda una generación de programadores se familiarizó con la arquitectura y llevaron sus posibilidades hasta la frontera de lo que era posible.
Atari 800
Atari tenía el sistema de gráficos más poderoso , lo cual no es sorprendente si se tiene en cuenta el linaje de la máquina. El chip GTIA (George's Televisión Adaptador) proporcionó el soporte de hardware para los sprites (llamado Player/Missile Graphics, o simplemente gráficos PM), un gran número de modos de vídeo y un de procesador de video, el ANTIC, permitiendo cambios de modo de trama por línea para la visualización de efectos avanzada . Ambos chips mapeaban en memoria y disponian de un gran número de registros de control para su funcionamiento. Los graficos de 5X8 píxeles de ancho podían exhibirse en diferentes posiciones horizontales. Para mover un sprite horizontalmente, se actualizaba el registro horizontal del sprite manipulado. Para el movimiento vertical, el mapa de bits de datos asociados con el sprite era trasladado en la memoria. El quinto sprite, opcionalmente, podía ser dividido en sprites de cuatro X dos píxeles de ancho , cada uno con control independiente horizontal. Estos fueron diseñados para mostrar lpor ejemplo los misiles o disparos. Este acuerdo se adapta perfectamente a ciertos tipos de juegos - en particular el género de Space Invaders - un buen ejemplo del que es Galaxian.
En Atari las prioridades de sprite frontal y sprite de fondo pueden ser especificadas, y el chip GTIA se encargará de detectar todas las colisiones entre los sprites y sus restos en los registros, con indicación de los sprites que hayan participado en la colisión. Su uso y posterior aplicación es más flexible que con el sistema del Commodore 64, en el que un único bit registra las colisiones y otro lo hace con las colisiones del fondo, que requiere la realización de nuevos ensayos de medida para determinar las superposiciones del sprite que ha participado en una colisión.
Esto es análogo a la amplia y estrecha fase de detección de colisión en uso en la mayoría de los sistemas de animación basada en física.
Fue el chip ANTIC el que determinará la resolución y el número de colores disponibles en la pantalla, y lo hizo por una selección de un gran número de modos de texto y gráficos. Exclusivo de los Atari, sin embargo, era el sistema gráfico, que más tarde se convirtió en parte integrante del Commodore Amiga, la arquitectura de los gráficos. La video se basaba en una lista de comandos interpretados por el chip ANTIC y accesible a través de DMA. Cada comando de video era capaz de seleccionar uno de los 16 modos de pantalla, lo que determinó la resolución, número de colores y la interpretación del video.
La pantalla tiene su propia lista de control de flujo implementado utilizando comandos de salto, de manera eficaz el chip ANTIC es un procesador que opera en paralelo con el 6502. Potencialmente, cada línea de la pantalla puede tener su propia entrada en la lista de video, lo que permite el control selectivo de tramas en cada línea, y muchos modos pueden co-existir en la pantalla al mismo tiempo. Soporte de hardware para desplazarse por medio de X e Y con los registros de desplazamiento, permitiendo que toda la pantalla se desplace en la dirección horizontal o vertical hasta 15 posiciones de pixel. Cada pantalla y su lista de comandos puede activar / desactivar el desplazamiento de sus líneas asociadas , lo que permite el desplazamiento de la pantalla dividida.
Por último, cada entrada de la lista de video es capaz de marcar una solicitud de interrupción, por tanto, el control puede ser pasado a la CPU cuando la trama de exploración llegue a un cierto punto en la pantalla, facilitando la sincronización de la pantalla y el software. Estas técnicas fueron también de uso común en el Commodore 64, pero se le prestó mucho menos apoyo, y para mostrar la funcionalidad de la listas de video sólo se podía hacer mediante la emulación por software.
Dependiendo del modo de video, un número de colores pueden ser visualizados en la pantalla, seleccionables de una paleta de 16 colores. Singularmente, el brillo de estos colores puede también ser especificado - hay ocho ajustes de luminancia - lo que da un total de 128 colores en la paleta. En algunos modos, esto se extiende a 16 ajustes de luminancia, dando 256 posibles colores.
El Sinclair ZX Spectrum
El Sinclair ZX Spectrum se distinguió por no tener soporte de hardware para los sprites, además se convirtió en un obstáculo importante para los programadores y del desarrollo gráfico de la máquina. De hecho, el Spectum es una maravilla de la ingeniería minimalista, carente incluso de un chip de vídeo. Todas las operaciones de E/S de vídeo se realizan a través de una ULA que controla la parte inferior de 16K de memoria RAM, de los cuales 6.912 octetos se utilizan para la pantalla de presentación. La pantalla se compone de un bitplane de 256x192 con un cero en representación de un píxel para ser coloreado con el color de fondo y una indicación de la utilización del color de frente, como fue el caso de muchas otras máquinas. Sin embargo, un atributo de presentación de 768 octetos codificados como un único plano y colores de fondo para cada cuadrado de 8x8 píxeles, seleccionados entre dos valores de brillo, y pueden ser marcados para parpadear. Así que a partir de los 16 colores disponibles, dos son posibles en cada bloque.
Como resultado de ello, es muy difícil evitar el sangrado de color. Cuando un personaje de animación (por lo general aplicado con arreglos de bloques de 8x8 píxeles) se traslada sin problemas a través de un fondo, si el personaje es de un color diferente al fondo, a menudo es imposible atender las necesidades de color de los gráficos de fondo y de carácter único dentro de los bloques. Por lo general, el carácter de color se ha utilizado tanto para los gráficos de fondo y primer plano. Esto hace que el personaje de color parezca hacer un sangrado en el fondo. Para minimizar este problema, muchos juegos, ya sea a) evitar el color por completo, b) medidas que limitan la animación múltiplos de ocho píxeles en cualquier dirección, o c), creado en torno a una gruesa frontera para reducir al mínimo el efecto de sangrado. Al igual que con los 64 y Atari, es posible sincronizar el software con la pantalla utilizando los manipuladores de interrupción invocados desde la ULA en respuesta a las interrupciones para impedir el parpadeo.
El Commodore 64 La capacidad gráfica del C64 la proporciona el chip VIC II 6567/6569 fabricado por MOS (Interfaz de controlador de vídeo). Estos dispositivos fueron diseñados originalmente para consolas de juegos , sólo superados por los dispositivos Atari GTIA / ANTIC .
El VIC es un dispositivo que soporta tres modos de visualización basada en caracteres, dos modos de mapa de bits, ocho sprites por hardware , asistencia en scroll por hardware y una paleta de 16 colores (pero no el control de luminancia). Al igual que hace el Atari, el dispositivo se mapea con memoria asignada de 16K de memoria RAM (DRAM). Posee un bus de datos de 12 bits para permitir la conexión simultánea a la memoria principal (8 bits), y 4 bits de memoria RAM estática que contiene la información de color de la pantalla.
Desde el lanzamiento del Commodore 64, el VIC se ha podido abrir del todo mediante el uso de ingeniería inversa y ha sido hasta el punto de que probablemente todos los matices de su funcionamiento se entiende ahora. Esto ha permitido a los programadores tomar ventaja de algunas peculiaridades del diseño que facilitan ciertos efectos gráficos que sería imposible de lograr a través de software por sí solo. El valor por defecto es el conjunto de caracteres disponible en ROM, pero el VIC puede acceder a la RAM y permitir la creación de caracteres definidos por el usuario. El VIC puede generar 256 caracteres. El color para cada posición de carácter se suministra por el color almacenado en RAM como he mencionado anteriormente.
Los C64 tienen ocho sprites independientes, cada una de ellos un bloque de 24x21 píxeles (es decir, 63 bytes de datos gráficos por sprite). A diferencia de los Atari, los sprites de los C64 eran libres de moverse tanto horizontal como verticalmente. El VIC puede resolver las colisiones entre los sprites y entre los sprites y los datos y la pantalla, almacenando esta información en los registros para ser leído por el software (o plantear una interrupción si está habilitado). Respecto a los Sprites, al igual que el Atari, pueden ser estirados en sentido vertical y horizontal por un factor de dos. A diferencia del Spectrum, el coloreado de un sprite en C64 se lleva a cabo independientemente de los antecedentes gráficos y así no se produce sangrado de color. El hardware permite el desplazamiento de toda la imagen de la pantalla que se compensa con un máximo de siete píxeles, ya sea en la dirección horizontal o vertical. Por más grande que sea el scrolling, el software se encarga de desplazar la pantalla adecuadamente cuando la memoria del hardware de desplazamiento llega a un límite. Para lograr el desplazamiento independiente de regiones de la misma pantalla, el programador tenía que aplicar métodos de trama más complicados. Los C64 tienen una paleta de 16 colores. Los bordes y colores de fondo se especifican mediante los regsitros adecuados en el VIC. Para los colores de primer planopueden ser especificados para los distintos puestos de carácter utilizando el color de RAM (se basa en el carácter y los modos de mapa de bits). El chip VIC también soporta una versión multicolor de cada fase - y los sprites multicolor. En todos los casos, cuando se ha seleccionado el modo multicolor, pares de bits en la memoria de pantalla se utiliza para especificar el color (fondo, multicolor1, multicolor2 previos y adquiridos). Considerando que el color puede variar de posición a posición de carácter, el resto de tres colores se fija para toda la pantalla. Una consecuencia de multicolor es un modo de reducir a la mitad de la resolución de la pantalla, y se ha denominado con frecuencia "el modo de pixel gordo".
Gráficos 3D, ¿ en un ordenador de 8 bits ?
Es justo decir que alrededor de 1985, cuando la industria de juegos de 8 bit estaba en pleno apogeo, los gráficos de ordenador utilizados en los juegos eran bastante primitivos en comparación con el estado de la técnica en la investigación gráfica. En el momento en que el método de radiosidad por hemicubo y trazado de rayos de distribución se están desarrollando, el pináculo de la realización gráfica en la escena de los juegos inteligentes, ofrece cierta visibilidad como queda determinado en KnightLore.
La técnica, llamada "filmation", fue notable, aunque en el momento, y representó el primer intento real en los gráficos 3D con perspectiva isométrica. Desde entonces ha habido un gran número de juegos que emplean dicha técnica, que fue lograda gracias a la profundidad ordenada del dibujo. En casi todos los casos, los datos que se pueden extraer se suman a una red y desde las orientaciones fijadas (por lo general, que permita la rotación de la vista a través de 90 grados), se simplifica así la profundidad solicitada. El método más simple utilizado para transmitir la impresión de profundidad, son el uso de sprites de fondo o la prioridad sprite-sprite hasta alcanzar un grado de eliminación de superficie oculta.
Nebulus uso este efecto para lograr la apariencia de una rotación alrededor de torre central. En tales circunstancias, por lo general los gráficos se adaptaron para evitar toda ambigüedad (es decir, un sprite que nunca tenga la necesidad de estar a la vez delante de una pieza de primer plano y detrás de otro).
Los gráficos isométricos (que aparecen originalmente el juego de arcade de Sega Zaxxon) son probablemente mejor representados en el título de Ultimate y motor "filmation" que comenzó la serie de juegos con KnightLore en 1984.
Uno de los primeros juegos basados en wireframe ( alambre) fue Elite, esrito por David Braben e Ian Bell , publicado originalmente para el BBC Micro y que sigue siendo uno de los juegos más vendidos durante mucho tiempo. Su combinación de espacio, un gran área de juego y la atmósfera más que compensada y más bien lenta, que a menudo se reduce hasta un segundo dependiendo del número de buques que se muestren simultáneamente. Una de las principales innovaciones es el superlativo control de radar 3D, que sigue siendo uno de los más intuitivos controles de navegación 3D que he encontrado. Fue patentado por los autores.
Otros ejemplos notable es el juego Commando, que define el estándar para gráficos de Commodore 64 con actualización wireframe a velocidades significativamente más rápidas que las de Elite, y que le ha permitido descubrir la alegría de ametrallar todo lo que se ponga a tiro!
El Stunt Racer de coches, mostró lo que se podría hacer con los polígonos coloreados, aunque lento y consiendo una tasa de actualización gráfica aceptable - irónicamente - es convincente en cuanto transmitir un sentido de la velocidad.
Una mención especial debe ir a Andrew Braybrook que posiblemente sigue siendo uno de los más famosos programadores de Commodore 64. Andrew es sin duda responsable del enorme interés en el uso de bajo relieve para impartir una sensación de 3D a un juego (a obtener el mismo efecto mediante la aprobación de una imagen con buen contraste a través de un filtro de relieve), y se convirtió en una mina como método favorito en el diseño de gráficos del C64. Otros juegos que hacen uso de esta técnica son Uridium, Sanxion y Parallax.
Trucos ráster
Considerando que el Atari tenía sus chip ANTIC y que podia manejar la lista de gráficos asociados, para lograr resultados similares en el C64 o el Spectrum es necesaro interrumpir manipuladores llamados en momentos clave durante un refresco de pantalla. Muchos de los posibles efectos más asombrosos o raros del chip VIC se basan en la manipulación precisa de registros durante cada refresco.
Sin embargo, si se requiere desplazamiento suave, actualizaciones de pantalla sin parpadeos o los modos de visualización en pantalla dividida, la trama se interrumpe. Todo el mundo sabe que a fin de eliminar el parpadeo, se debe sincronizar la actualización de la pantalla con el marco de refresco (en particular, evitar dibujar en un espacio de la pantalla que se encuentre actualmente en la trama de haz). A través hardware de vídeo por lo general se aplica un interruptor doble buffer que sincroniza de esta manera. En el C64, el método normal es que el VIC interrumpa la trama y solicite una interrupción en una línea más allá de la parte inferior de la pantalla visible, en la vertical en blanco. El manejador de interrupción se encarga de la actualización de la pantalla antes que la trama haya vuelto a actualizar el siguiente cuadro.
El controlador de interrupciones ayuda con la conmutación de modos simplemente según sea necesario y reinicializado la trama en la que se produzca la interrupción durante el período de verticales en blanco, para permitir el modo que se da la vuelta atrás para la siguiente trama de refresco. Esto funcionó muy bien el caso de los monitores y el desplazamiento horizontal, pero cuando era necesario el desplazamiento vertical de una división dentro de la ventana y cuando los sprites cruzaban la frontera de la división, el momento de la división era cada vez más crítico.
¿ Donde reside el problema?
El VIC es capaz de bloquear la CPU cuando se requiere el bus de datos para accesos gráficos .
Si esto sucede en una fracción de punto, el resultado podría ser un desagradable parpadeo de la línea de división en torno a la demora que representa el punto introducido como resultado de detener la CPU . Otro truco de trama era aumentar el número de sprites que se muestran simultáneamente. Simplemente es necesario cambiar cada sprite de la posición vertical una vez que la trama se muestra completamente.
El VIC no pierde de vista el número de veces que un sprite se muestra, simplemente examinado el contenido de la posición del sprite y los registros y en cada línea de trama muestra los sprites que se establecen en la línea actual, por lo tanto, podría ser reutilizado tantas veces como sea necesario, con la salvedad de que un sprite no podía ocupar una sola línea de la trama más de una vez. Esto se conoce como multiplexación sprite.
Hubo algunas dificultades para determinar la mejor línea de trama interrumpir después de lo cual los sprites se reposicionó, y esto requiere un paso de optimización que minimiza sprite división. Lamentablemente, no siempre sería una solución (es decir, si el software requiere más de ocho sprites en una línea de trama), algo tenía que dar.Inteligente, sino a través de la programación es posible minimizar los problemas. Algunos juegos sprite sufrido terriblemente de ruptura, y el mejor ejemplo de esto fue Commando.
¿Hasta dónde hemos llegado?
El Commodore 64 terminó su reinado a principios de los noventa. Esto marcó el final de los 8 bits (los C64 fueron probablemente el último de los ordenadores populares de 8 bits) y de repente los 16-bit y 32-bits estaban entre nosotros. Ahora, a finales de la primera decada del siglo XXI, todas las máquinas han sido superadas por el equipo más simple que podemos encontrar en el mercado. Los Juegos de hoy no son casi nunca el resultado de un único programador y hacer participar a los equipos de programadores, artistas gráficos, músicos, directores, actores, guionistas. En la época dorada de 8 bits, los programadores son los héroes.
Por lo general, el programador también se encarga de los gráficos (aunque no siempre), pero a menudo hay alguien más que compone la música. Los famosos músicos de la época eran Rob Hubbard, Martin Galway, Ben Dalglish y el ruido de Maniacs entre otros.
El chip SID del Commodore 64 (interfaz de dispositivo de sonido) es un excelente generador de sonido con tres osciladores y filtrado de resonancia que fue empujado a los límites por estos tíos.
Multiplexados con acordes, patrón de la muestra basada en la secuencia y sonidos de batería, alguna de la música creada es bastante sorprendente.
La música de Parallax - unos 20 minutos vale la pena - por Galway, y Maestros de la Magia por Hubbard estaban entre los mejores. Supongo que la atracción en ese entonces fue la accesibilidad, que consideraban que tu también podias participar como programador en la búsqueda del último juego.
Ahora todo es un entorno interactivo de inmersión con las entidades y los objetivos y estrategias.
¿ Así las cosas realmente han cambiado?
¿ Qué métricas podría usar juzgar estas novedades ?
Si tuviera que aplicar las métricas de nivel de entusiasmo generado, o el miedo, o la sensación de logro por haber completado una meta, entonces no se han movido en absoluto.
Todo lo que puedo resumir es que realmente la tecnología y la industria han crecido, pero realmente ¿ lo han hecho ?.Ron Dreamcast, Retro Scene & Emulation