stringtranslate.com

Actualización de mosaicos adaptativa

La actualización adaptativa de mosaicos es una técnica de gráficos por computadora para videojuegos de desplazamiento lateral . Fue utilizada por John Carmack de id Software en juegos como Commander Keen para compensar el bajo rendimiento gráfico de las PC a principios de la década de 1990. Su principal innovación es un uso novedoso de varias características de hardware EGA para realizar el desplazamiento en hardware. La técnica recibe su nombre por su otro aspecto, el seguimiento de elementos gráficos movidos para minimizar la cantidad de redibujado necesario en cada cuadro. En conjunto, la combinación ahorra el tiempo de procesamiento que de otro modo se requeriría para volver a dibujar toda la pantalla. [1] : 50  Carmack diseñó el motor de software basado en una pantalla de desplazamiento para imágenes grandes de la década de 1970. [2]

La generación de gráficos de IBM PC anterior a EGA es CGA , que carece de funciones para el desplazamiento en hardware. Por lo tanto, el desplazamiento CGA se realiza en software, redibujando toda la pantalla para cada cuadro, algo que estos sistemas no tienen el rendimiento para hacer para la animación de pantalla completa. La actualización de mosaicos adaptativa minimiza la potencia de procesamiento necesaria para los juegos de desplazamiento lateral, para estar al alcance del hardware contemporáneo. Esto funciona marcando los mosaicos de mapa de bits y redibujando solo los gráficos en la pantalla que realmente se actualizan. [3]

Historia

La actualización adaptativa de mosaicos mediante desplazamiento por hardware debutó en el juego prototipo inédito Dangerous Dave en Copyright Infringement , implementado por Carmack. El título de " Dangerous Dave " había sido utilizado previamente por John Romero mientras programaba juegos para Softdisk . Esto se desarrolló en una semana como una recreación del primer nivel de Super Mario Bros. 3 de Nintendo , pensado como un prototipo realista del concepto de actualización adaptativa de mosaicos. El equipo de futuros empleados de id Software, que todavía trabajaban para Softdisk, completó entonces la réplica de todo el juego, que se presentó a Nintendo para obtener la licencia para PC. Nintendo rechazó la oferta después de que id Software terminara el prototipo. [4] [5] [1]

El primer lanzamiento de la actualización de mosaicos adaptativa de Carmack llegó en la primera entrega de la serie de juegos Commander Keen de id Software , Marooned on Mars .

Detalles técnicos

EGA tiene varias características que permiten el efecto de actualización de mosaico adaptativo:

  1. El framebuffer puede ser ligeramente más ancho que la pantalla y arbitrariamente alto, sujeto a las limitaciones de la memoria de video .
  2. La posición dentro de este búfer desde la que se dibuja la pantalla se puede desplazar en incrementos de 1 píxel, ya sea horizontal o verticalmente.
  3. Tiene suficiente memoria de vídeo para almacenar dos buffers de pantalla, además de mosaicos y sprites .

Carmack utilizó estas capacidades para crear un búfer que es 64 píxeles más ancho y más alto que la pantalla, dejando espacio para dos filas y columnas de mosaicos adicionales en el búfer fuera del borde de la pantalla. Utilizó las capacidades de desplazamiento de la tarjeta para permitir que la pantalla se deslice a través del búfer para un desplazamiento suave, lo que revela parcialmente los mosaicos adicionales.

Cuando la parte visible llega al final del búfer, la posición del búfer se desplaza hacia atrás en un mosaico y los mosaicos modificados se vuelven a dibujar. [6] Esto hizo que la técnica dependiera de mosaicos repetidos para limitar la cantidad de mosaicos que se volvían a dibujar. [7]

Otra versión de la técnica introducida en Commander Keen en Keen Dreams envuelve la memoria EGA para mostrar datos del otro lado del búfer. [7] Para poder desplazarse por un nivel entero, cuando el desplazamiento equivale al valor de un mosaico completo, la siguiente fila de mosaicos del nivel se dibuja en el búfer, justo al borde de la pantalla, lista para mostrarse cuando el desplazamiento continúa en esa dirección.

Dado que solo se redibujan los bordes de la pantalla en cualquier momento, los sprites en la parte visible de la pantalla no se redibujarían hasta que alcancen el borde de la pantalla. Para contrarrestar esto, el código calcula qué mosaicos había cubierto previamente un sprite en movimiento y los redibuja para borrar la imagen del sprite anterior, luego dibuja la imagen del sprite nuevo en su nueva posición. Esto permite animar los sprites independientemente del desplazamiento con un mínimo esfuerzo computacional.

Dado que mover un sprite de esta manera implica primero borrarlo y luego volver a dibujarlo, la imagen del sprite borrado puede ser visible brevemente, lo que provoca parpadeos. La parte final de la técnica de Carmack es utilizar las mismas características de desplazamiento de hardware de EGA para implementar también el doble almacenamiento en búfer . Esto establece un segundo búfer en el que el código puede dibujar mientras se muestra el primer búfer, que luego se cambia durante la actualización de la pantalla. Esto garantiza que nunca se muestre ningún cuadro a mitad del dibujo, lo que produce una animación suave y sin parpadeos.

Referencias

  1. ^ ab Kushner, David (2004) [2003]. Masters of Doom: cómo dos hombres crearon un imperio y transformaron la cultura pop . Nueva York, NY: Random House, Inc. ISBN 9780375505249.OCLC 50129329  .
  2. ^ Kushner, David (1 de agosto de 2002). "La magia del software de videojuegos de Id". IEEE Spectrum . Consultado el 13 de abril de 2018 .
  3. ^ Aycock, John (9 de mayo de 2016). Arqueología de los retrojuegos: exploración de los juegos de ordenador antiguos. Springer. p. 45. doi :10.1007/978-3-319-30004-7. ISBN 978-3-319-30004-7. S2CID  20655963 . Consultado el 27 de noviembre de 2017 .
  4. ^ Super Mario Bros. 3 Demo (1990). John Romero. 1990. Consultado el 15 de diciembre de 2015 .
  5. ^ Orland, Kyle (14 de diciembre de 2015). "Así podría haber lucido la versión para PC de Mario 3 de id Software". Ars Technica . Consultado el 15 de diciembre de 2015 .
  6. ^ Carmack, John. "Tweet 18:53 · 11 de julio de 2020". Twitter . Consultado el 19 de enero de 2024 .
  7. ^ ab Carmack, John. "Tweet 21:52 · 14 de septiembre de 2018". Twitter . Consultado el 19 de enero de 2024 .