Sprite (videojuegos)
# Sprite (videojuegos)

Los sprites (del inglés, "duendecillos") fueron popularizados por Jay Miner. Se trata de un tipo de mapa de bits dibujados en la pantalla de ordenador por hardware gráfico especializado (MSX, Atari 400/800, Commodore 64 y Commodore Amiga fueron unos de los pocos ordenadores que soportaban sprites reales) sin cálculos adicionales de la CPU. A menudo son pequeños y parcialmente transparentes, dejándoles así asumir otras formas a la del rectángulo, por ejemplo puntero de ratón en ordenadores de la serie Amiga. Esto es posible ya que se podía hacer una operación lógica OR o AND entre la imagen original y otra, y dejar el resultado en otra posición de memoria. De esta manera era sencillo cambiar colores o eliminar el fondo mediante una "máscara". Típicamente, los sprites son usados en videojuegos para crear los gráficos de Por ejemplo, los personajes de un Pac-Man podrían ser sprites. Generalmente son utilizados para producir una animación, como un personaje corriendo, alguna expresión facial o un movimiento corporal.

Con el paso del tiempo el uso de este término se extendió a cualquier pequeño mapa de bits que se dibuje en la pantalla, incluso si tiene que moverlo todo el procesador central y no cuenta con hardware especializado. Esto ocasiona que a diferencia de ordenadores que soportan sprites reales no se puedan mezclar resoluciones (por ejemplo mostrar un sprite de 256 colores y alta resolución en una pantalla de 16 colores y baja resolución), la cpu tenga que calcular las transparencias y no vayan sincronizados con el refresco vertical de pantalla (por lo cual el hardware gráfico que no dispone de sprites reales necesita aplicar técnicas de doble buffer).

Los sprites han ido evolucionando a lo largo de la historia de los videojuegos. En un principio, mientras algunos eran generados a computador, otros eran dibujados a mano para ser posteriormente traspasados al computador.

El videojuego Mortal Kombat fue el primero en producir sprites completamente digitalizados en un juego, donde se fotografiaban actores para hacer cada animación de los personajes.

Con la llegada de los videojuegos en 3D, el uso de sprites se ha comenzado a dejar de lado, al ocupar personajes poligonales.

Es posible reutilizar un sprite al terminar de dibujarlo completamente en la siguiente línea, con lo cual el número efectivo de sprites es superior al número de sprites inicial. También es posible usar el Blitter para simular más sprites o el Copper para modificar su paleta de colores.

También se denomina sprite a una serie de imágenes unidas en un mismo archivo una al lado de otra y que representan al mismo personaje (u objeto) en distintas posiciones. A diferencia de un archivo GIF animado, todas las imágenes están visibles en el mismo momento y puede estar codificado en un formato de imagen más ligero (en general PNG). Esto se utiliza principalmente en videojuegos para teléfonos móviles en formato J2ME, ya que el tiempo de carga de una imagen es muy superior al que ocupa seleccionar y mostrar un área de una imagen ya cargada en la memoria. También se utiliza en el diseño de skins para un software con la finalidad de reducir el número de archivos en el paquete que los contiene.

## Sinónimos y otros

La mayor parte de las compañías de videojuegos raramente usan el término "sprite" para referirse a este tipo de gráficos. Otros nombres alternativos que se han usado son:

* Gráficos Jugador-Proyectil: El nombre de gráficos de jugador-proyectil (en inglés Player-Missile Graphics) se usó en los microcomputadores Atari 400/800 XL/XE, y en las primeras máquinas de juego operadas con monedas de la misma marca, para referirse a los gráficos de sprite generados por hardware. El término reflejaba el uso de dos tipos de objetos gráficos, los "jugadores", y otros objetos ("proyectiles"). Tenían una resolución horizontal limitada (8 o 2 pixeles, aunque se podían escalar y potencialmente podían usar 192 líneas de resolución vertical).
* Movable Object Block o MOB: se usó en la literatura de los gráficos en los chips de MOS Technology (hojas de datos, etc.). Sin embargo, Commodore, el usuario principal de los chips MOS, que también fue el propietario de MOS durante mucho tiempo, usó el término "sprite".
* OBJ: En las videoconsolas Nintendo, Super Nintendo y Game Boy, a los "sprites" se les llamó OBJs (apócope de "objetos"), y la región de la RAM usada para almacenar los atributos y coordenadas de los "sprites" se conoció como "OAM" (Memoria de Atributos de Objeto, en inglés Objects Attribute Memory). Esto se aplica aún hoy en día en los juegos de Nintendo 3DS.
* BOB u Objetos Blitter (Blitter Objects): Fue un nombre popular para los objetos gráficos dibujados por el coprocesador gráfico dedicado Blitter en la serie de computadores Amiga. Esta máquina también disponía de sprites por hardware reales. El lenguaje de programación DarkBASIC usó el término "Bob" para referirse a sus funciones de manejo de sprites por software, antes de cambiarse al término "sprite", usado más convencionalmente.
* Sprites por software o Software sprites: Así se referían a las subrutinas que usaban la técnica de transferencia de bloques de bits (en inglés bit-blitting) para lograr el mismo objetivo en sistemas como Atari ST y Apple II cuyo hardware gráfico no tenía la capacidad de manejar "sprite" verdaderos.
* 3D Sprite: Es un término que se usa a menudo para referirse a los "sprites" que son esencialmente facetas 3D con mapas de textura que siempre tienen su superficie normal enfrentando a la cámara.
* Z-Sprite: Es un término usado a menudo para entornos 3D que contienen sólo "sprites". El parámetro Z proporciona un efecto escalar que crea la ilusión de profundidad. Por ejemplo, en juegos de aventura como King's Quest VI, en donde la cámara nunca se mueve, bastaría con sprites 2D normales, pero los sprites-Z le dan un toque extra.
* Impostor: Es un término usado en lugar de "billboard" si el Billboard se usa para reemplazar subrepticiamente un objeto 3D real. "Billboard" es una textura que se usa en el proceso de "billboarding". A su vez este es un método gráfico de 3D en el que se asignan diferentes valores alfa a partes individuales de una textura.
