Sprite (gráficos por computadora)

En gráficos por computadora, un sprite es un mapa de bits bidimensional que se integra en una escena más grande, generalmente en un videojuego 2D. Originalmente, el término sprite se refería a objetos de tamaño fijo compuestos por hardware y con un fondo. Desde entonces, el uso del término se ha vuelto más general.
Los sistemas con sprites de hardware incluyen videojuegos arcade de las décadas de 1970 y 1980; consolas de juegos, incluidas Atari VCS (1977), ColecoVision (1982), Famicom (1983), Genesis/Mega Drive (1988); y computadoras domésticas como TI-99/4 (1979), computadoras Atari de 8 bits (1979), Commodore 64 (1982), MSX (1983), Amiga (1985) y X68000 (1987). El hardware varía en la cantidad de sprites admitidos, el tamaño y los colores de cada sprite y los efectos especiales como escalado o informes de superposición con precisión de píxeles.
La composición del hardware de los sprites ocurre ya que cada línea de exploración está preparada para el dispositivo de salida de vídeo, como un tubo de rayos catode, sin la participación de la CPU principal y sin la necesidad de un buffer de marco de pantalla completa. Los sprites se pueden posicionar o alterar mediante atributos de configuración utilizados durante el proceso de composición del hardware. El número de sprites que se pueden mostrar por línea de escaneo es a menudo inferior al número total de sprites que un sistema soporta. Por ejemplo, el chip Texas Instruments TMS9918 admite 32 sprites, pero sólo cuatro pueden aparecer en la misma línea de exploración.
Las CPU de los ordenadores, consolas de videojuegos y dispositivos móviles modernos son lo suficientemente rápidas como para que los mapas de bits se puedan dibujar en un búfer de fotogramas sin asistencia especial de hardware. Más allá de eso, las GPU pueden representar una gran cantidad de imágenes escaladas, rotadas, suavizadas, parcialmente translúcidas y de muy alta resolución en paralelo con la CPU.
Etimología
Según Karl Guttag, uno de los dos ingenieros del procesador de pantalla de vídeo Texas Instruments TMS9918 de 1979, este uso de la palabra sprite provino de David Ackley, gerente de TI. También fue utilizado por Danny Hillis en Texas Instruments a finales de los años 1970. El término se deriva del hecho de que los sprites "flotan" en el cuerpo. encima de la imagen de fondo sin sobrescribirla, como un fantasma o un duende mitológico.
Algunos fabricantes de hardware usaban términos diferentes, especialmente antes de que sprite se volviera común:
Player/Missile Graphics era un término utilizado por Atari, Inc. para los sprites de hardware en las computadoras Atari de 8 bits (1979) y la consola Atari 5200 (1982). El término refleja el uso tanto de personajes ("jugadores") como de objetos asociados más pequeños ("misiles") que comparten el mismo color. El anterior Atari Video Computer System y algunos juegos arcade de Atari usaban jugador, misil y bola.
Stamp se utilizó en algunos equipos arcade a principios de la década de 1980, incluido Ms. Pac-Man.
Bloque de objetos móviles, o MOB, se utilizó en la literatura sobre chips gráficos de MOS Technology. Commodore, el principal usuario de chips MOS y propietario de MOS durante la mayor parte de la vida del fabricante de chips, utilizó en su lugar el término sprite para el Commodore 64.
OBJ (abreviatura de objetos) se utiliza en los manuales de desarrollador de NES, Super NES y Game Boy. La región de la RAM de vídeo utilizada para almacenar atributos y coordenadas de sprites se denomina OAM (memoria de atributos de objeto). Esto también se aplica a Game Boy Advance y Nintendo DS.
Historia
Videojuegos arcade
El uso de sprites se originó en los videojuegos arcade. A Nolan Bushnell se le ocurrió el concepto original cuando desarrolló el primer videojuego arcade, Computer Space (1971). Las limitaciones técnicas dificultaron la adaptación del primer juego para mainframe Spacewar! (1962), que realizaba una actualización de pantalla completa para cada pequeño movimiento, por lo que se le ocurrió una solución al problema: controlar cada juego individual. Elemento con un transistor dedicado. Los cohetes eran esencialmente mapas de bits cableados que se movían por la pantalla independientemente del fondo, una innovación importante para producir imágenes de pantalla de manera más eficiente y proporcionar la base para gráficos de sprites.
Los primeros videojuegos que representaban personajes de jugadores como sprites de jugadores humanos fueron los videojuegos de deportes arcade, comenzando con TV Basketball de Taito, lanzado en abril de 1974 y con licencia de Midway Manufacturing para su lanzamiento en América del norte. Diseñado por Tomohiro Nishikado, quería ir más allá de los simples rectángulos estilo Pong y llegar a gráficos de personajes, reorganizando las formas de los rectángulos en objetos que parecen jugadores de baloncesto y aros de baloncesto. Ramtek lanzó otro videojuego de deportes en octubre de 1974, Baseball, que mostraba de manera similar personajes parecidos a humanos.
La placa del sistema arcade Namco Galaxian, para el juego arcade de 1979 Galaxian, muestra sprites animados y multicolores sobre un fondo que se desplaza. Se convirtió en la base del hardware arcade y de las consolas domésticas Radar Scope y Donkey Kong de Nintendo, como Nintendo Entertainment System. Según Steve Golson de General Computer Corporation, el término "sello" se usó en lugar de "sprite" En el momento.
Sistemas domésticos
Signetics ideó los primeros chips capaces de generar gráficos sprites (denominados objetos por Signetics) para sistemas domésticos. Los procesadores de video Signetics 2636 se utilizaron por primera vez en el sistema de video programable avanzado 1292 de 1978 y más tarde en la computadora de juegos de TV Elektor de 1979.
El Atari VCS, lanzado en 1977, tiene una implementación de sprites de hardware donde se pueden mover cinco objetos gráficos independientemente del campo de juego. El término sprite no estaba en uso en ese momento. Los sprites del VCS se denominan objetos móviles en el manual de programación, identificados además como dos jugadores, dos misiles y un bola. Cada uno de ellos consta de una única fila de píxeles que se muestran en una línea de escaneo. Para producir una forma bidimensional, el mapa de bits de una sola fila del objeto se modifica mediante software de una línea de escaneo a la siguiente.
Las computadoras domésticas Atari 400 y 800 de 1979 tienen circuitos similares, pero más elaborados, capaces de mover ocho objetos de un solo color por línea de escaneo: cuatro reproductores de 8 bits de ancho y cuatro de 2 bits de ancho. misiles. Cada uno ocupa toda la altura de la pantalla: una franja larga y delgada. DMA de una tabla en la memoria establece automáticamente los registros de patrones de gráficos para cada línea de escaneo. Los registros de hardware controlan la posición horizontal de cada jugador y misil. El movimiento vertical se logra moviendo los datos del mapa de bits dentro de la franja de un jugador o misil. Atari llamó a la función gráficos de reproductor/misiles.
Texas Instruments desarrolló el chip TMS9918 con soporte para sprites para su computadora doméstica TI-99/4 de 1979. Se utiliza una versión actualizada en la TI-99/4A de 1981.
Sistemas con sprites de hardware
Estas son especificaciones de hardware básicas y no incluyen técnicas de programación adicionales, como el uso de interrupciones ráster para reutilizar sprites a mitad del fotograma.
| Sistema | Sprite hardware | Presentada | Sprites en pantalla | Sprites por línea de exploración | Max. | Ancho de textura | Altura de textura | Colores | Zoom | Rotación | Detección de colisión | La transparencia | Fuente |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Amstrad Plus | ASIC | 1990 | 16 | 16 | ? | 16 | 16 | 15 | 2, 4× vertical, 2, 4× horizontal | No | No | Clave de color | |
| Atari 2600 | TIA | 1977 | 5 | 5 | 19 | 1, 8 | 262 | 1 | 2, 4, 8× horizontal | Espejo horizontal | Sí. | Clave de color | |
| Atari 8-bit computadoras | GTIA/ANTIC | 1979 | 8 | 8 | 40 | 2, 8 | 128, 256 | 1 | 2× vertical, 2, 4× horizontal | No | Sí. | Clave de color | |
| Commodore 64 | VIC-II | 1982 | 8 | 8 | 96, 192 | 12, 24 | 21 | 1, 3 | 2× entero | No | Sí. | Clave de color | |
| Amiga (OCS) | Denise | 1985 | 8, se puede reutilizar horizontalmente por 4 incrementos de pixel | Arbitrario, 8 único | Arbitrary | 16 | Arbitrary | 3, 15 | Vertical por lista de visualización | No | Sí. | Clave de color | |
| Amiga (AGA) | Lisa | 1992 | 8, se puede reutilizar horizontalmente por 2 incrementos de pixel | Arbitrario, 8 único | Arbitrary | 16, 32, 64 | Arbitrary | 3, 15 | Vertical por lista de visualización | No | Sí. | Clave de color | |
| ColecoVision | TMS9918A | 1983 | 32 | 4 | 64 | 8, 16 | 8, 16 | 1 | 2× entero | No | Parcial | Clave de color | |
| TI-99/4 " 4A | TMS9918 | 1979 | 32 | 4 | 64 | 8, 16 | 8, 16 | 1 | 2× entero | No | Parcial | Clave de color | |
| Gameduino | 2011 | 256 | 96 | 1,536 | 16 | 16 | 255 | No | Sí. | Sí. | Clave de color | ||
| Intellivision | STIC AY-3-8900 | 1979 | 8 | 8 | 64 | 8 | 8,16 | 1 | 2, 4, 8× vertical, 2× horizontal | Espejo horizontal y vertical | Sí. | Clave de color | |
| MSX | TMS9918A | 1983 | 32 | 4 | 64 | 8, 16 | 8, 16 | 1 | 2× entero | No | Parcial | Clave de color | |
| MSX2 | Yamaha V9938 | 1986 | 32 | 8 | 128 | 8, 16 | 8,16 | 1, 3, 7, 15 por línea | 2× entero | No | Parcial | Clave de color | |
| MSX2+ / MSX turbo R | Yamaha V9958 | 1988 | 32 | 8 | 128 | 8,16 | 8,16 | 1, 3, 7, 15 por línea | 2× entero | No | Parcial | Clave de color | |
| Namco Pac-Man (arcade) | TTL | 1980 | 6 | 6 | 96 | 16 | 16 | 3 | No | Espejo horizontal y vertical | No | Clave de color | |
| TurboGrafx-16 | HuC6270A | 1987 | 64 | 16 | 256 | 16, 32 | 16, 32, 64 | 15 | No | Espejo horizontal y vertical | Sí. | Clave de color | |
| Namco Galaxian (arcade) | TTL | 1979 | 7 | 7 | 112 | 16 | 16 | 3 | No | Espejo horizontal y vertical | No | Clave de color | |
| Nintendo Donkey Kong, Radar Scope (arcade) | 1979 | 128 | 16 | 256 | 16 | 16 | 3 | Integer | No | Sí. | Clave de color | ||
| Nintendo DS | PPU integrada | 2004 | 128 | 128 | 1.210 | 8, 16, 32, 64 | 8, 16, 32, 64 | 65.536 | Affine | Affine | No | Clave de color, mezcla | |
| NES/Famicom | Ricoh RP2C0x PPU | 1983 | 64 | 8 | 64 | 8 | 8, 16 | 3 | No | Espejo horizontal y vertical | Parcial | Clave de color | |
| Game Boy | PPU integrada | 1989 | 40 | 10 | 80 | 8 | 8, 16 | 3 | No | Espejo horizontal y vertical | No | Clave de color | |
| Game Boy Advance | PPU integrada | 2001 | 128 | 128 | 1210 | 8, 16, 32, 64 | 8, 16, 32, 64 | 15, 255 | Affine | Affine | No | Clave de color, mezcla | |
| Master System, Juego de engranaje | YM2602B VDP (TMS9918-derived) | 1985 | 64 | 8 | 128 | 8, 16 | 8, 16 | 15 | 2× entero, 2× vertical | Teja de fondo espejo | Sí. | Clave de color | |
| Génesis / Mega Drive | YM7101 VDP (SMS VDP-derived) | 1988 | 80 | 20 | 320 | 8, 16, 24, 32 | 8, 16, 24, 32 | 15 | No | Espejo horizontal y vertical | Sí. | Clave de color | |
| Sega OutRun (arcadena) | 1986 | 128 | 128 | 1600 | 8 a 512 | 8 a 256 | 15 | Anisotropic | Espejo horizontal y vertical | Sí. | Alfa | ||
| X68000 | Cynthia jr. (original), Cynthia (modelos posteriores) | 1987 | 128 | 32 | 512 | 16 | 16 | 15 | 2× entero | Espejo horizontal y vertical | Parcial | Clave de color | |
| Neo Geo | LSPC2-A2 | 1990 | 384 | 96 | 1536 | 16 | 16 a 512 | 15 | Sprite fewering | Espejo horizontal y vertical | Parcial | Clave de color | |
| Super NES / Super Famicom | S-PPU1, S-PPU2 | 1990 | 128 | 34 | 256 | 8, 16, 32, 64 | 8, 16, 32, 64 | 15 | No | Espejo horizontal y vertical | No | Clave de color, promedio | |
| Sistema | Sprite hardware | Presentada | Sprites en pantalla | Sprites on line | Max. | Ancho de textura | Altura de textura | Colores | Ampliación de hardware | Rotación | Detección de colisión | La transparencia | Fuente |