El conflicto o choque de atributos es un artefacto gráfico que aparece en las computadoras domésticas antiguas y está asociado con limitaciones de hardware. Mejor conocido por los usuarios de ZX-Spectrum .
Las computadoras comerciales, a diferencia de las domésticas, redujeron la paleta de colores, pero no permitieron tales restricciones; cualquier píxel podría escribirse en cualquier color desde N . CGA tenía solo 4 colores, mientras que Apple Macintosh era generalmente monocromo.
Para ahorrar memoria y agilizar el trabajo, los primeros ordenadores a color no permitían asignar ningún color a ningún píxel . En cambio, la pantalla se dividió en bloques, y cada bloque recibió dos colores: primer plano y fondo. En cada uno de los bloques, el píxel tenía uno de estos dos colores (y estaba codificado con un bit). Al intentar mostrar tres colores en un bloque, uno de estos tres colores se pierde, lo que genera artefactos específicos [1] .
En particular, el ZX-Spectrum asignó un atributo de 1 byte a cada espacio de caracteres de 8 × 8 píxeles: un color de primer plano de tres bits INK, un color de fondo de tres bits PAPER, 1 bit de brillo BRIGHTy 1 bit de parpadeo FLASH[2] [3 ] . Esto dio 15 colores (solo en ciertas combinaciones de "controlador de video + TV" , el negro se distingue de alguna manera del negro brillante) [3] . Así, a una resolución de 256×192, la memoria de vídeo ocupaba sólo 6912 bytes [2] [3] . Por cierto, el efecto de parpadeo se usó muy raramente, incluso debido al hecho de que el área de parpadeo claramente consiste en bloques cuadrados.
En MSX 1, el atributo se asigna a bloques horizontales de 8×1 píxeles. Además, había sprites de hardware que no entraban en conflicto entre sí ni con el fondo. Sin embargo, cuando se portaba desde el ZX-Spectrum , los bytes de atributo a menudo se multiplicaban, pero no se usaban sprites, lo que conducía a un juego casi indistinguible. En NES, la zona de conflicto es de 8 × 8 píxeles, pero con sprites de hardware, desplazamiento de hardware y una paleta amplia (52 colores en total, simultáneamente 8 paletas de 3 colores + base [4] ) esto apenas se nota.
Las imágenes estáticas, por supuesto, se construyen teniendo en cuenta las limitaciones de la memoria de video. En los juegos , la imagen se construye dinámicamente y el problema debe resolverse de alguna manera.
Este es el método más fácil de programar: el programador solo manipula los píxeles sin tocar el plano de atributos. En este caso, no hay ningún "ladrillo" de color, pero el sprite se pierde en el fondo ( Double Dragon [1] [5] ).
Para que este método brinde resultados de alta calidad, se desarrolló un estilo especial ( Saboteur!, Bomb Jack , Cyclone , Strike Force Cobra ). El diseño del juego se basa en el negro , el color negro está en casi todas partes: en los patrones de las paredes, en las decoraciones, en la ropa de los enemigos... El color que no es negro juega el papel de la iluminación: por ejemplo, un ninja negro corriendo por un la pared amarilla se vuelve negra y amarilla, contra el fondo de un cielo azul que el ninja es negro y azul. Habrá un conflicto si se abandona el negro en alguna familiaridad (los respaldos de las sillas en Saboteur II: Avenging Angel ).
+ : estilo visual interesante; la imagen en color se combina con artefactos menores; sin gestión de atributos.
− : Requiere que los caracteres sean negros, con un mínimo de líneas claras, y que los fondos sean en blanco y negro. Si este no es el caso, la familiaridad será claramente visible.
El sprite extiende su atributo al fondo, dando como resultado un "ladrillo" de color que sigue al héroe. Este mecanismo se usa con poca frecuencia, generalmente solo para el personaje principal, pero no para los enemigos; por ejemplo, Pac-Mania [6] o una serie de juegos sobre Wally ( Everyone's a Wally , etc.)
+ : el sprite está separado por color del fondo; sin restricciones de estilo o movimiento.
− : Los artefactos son claramente visibles.
Una de las formas más populares. El fondo está pintado en un color (la mayoría de las veces negro), con un mínimo de decoración, y el juego está construido de tal manera que la probabilidad de colisión entre dos objetos de diferentes colores es mínima. La mayoría de los elementos del nivel son intransitables y no causan conflicto; pocos son transitables, ya sea en primer plano y superpuestos a los sprites ( Exolon , Rex ), o extienden su atributo al sprite ( Dizzy ).
La mayoría de los juegos tipo laberinto se muestran de esta manera: Manic Miner [5] , Monty series , Abu Simbel Profanation , Cybernoid , Into The Eagle's Nest . También es típico de los tiradores de desplazamiento espacial ( Zynaps , R-Type ), ya que un fondo negro con una pequeña cantidad de puntos es muy adecuado para representar el espacio.
+ : extrema sencillez.
− : Gráficos de fondo claros.
Dentro del campo de juego, toda la imagen se convierte en dos tonos ( Elite , Chimera , Head Over Heels , Robocop , Quazatron , Terra Cresta ). Sin embargo, el color en el que está pintado el campo de juego también puede contener alguna información. En el juego Robocop , estos son niveles diferentes, en Quazatron son ubicaciones diferentes, en Terra Cresta son zonas dentro del nivel. A menudo ( Draconus , Turbo Esprit ) la parte principal de la imagen es de dos tonos y solo algunos objetos importantes se representan en otros colores.
La mayoría de los juegos pseudo-3D (carreras) e isométricos se renderizan de esta manera.
+ : ausencia total de artefactos; sin restricciones de movimiento; sin gestión de atributos.
− : Se pierde la capacidad de dibujar en color.
El paso de movimiento del sprite está limitado a una cuadrícula de 8 píxeles. Este método es muy adecuado para juegos que no requieren representación dinámica de escenas (estrategia, juegos de lógica), pero también se usa para juegos dinámicos: así es como logramos un juego rápido Centipede [5] . El movimiento de los sprites y el desplazamiento del fondo en incrementos de 8 píxeles se ven bien en Savage , Astro Marine Corps , Dan Dare III , Extreme .
Este mecanismo no siempre ayuda y, a menudo, se complementa con otros métodos. Por ejemplo, los juegos Trapdoor y Flunky usan sprites grandes con un relleno de color sólido, con la imagen de fondo grande mostrando su color en el color de fondo del sprite frontal.
En algunos casos, se utiliza el llamado desplazamiento de sprite , cuando solo se dibuja un sprite (y, posiblemente, el fondo) en una familiaridad de 8x8. En Savage y Astro Marine Corps , el sprite frontal reemplaza completamente al sprite trasero. El desplazamiento de Sprite es muy notable en el juego Golden Axe , lo que estropea la impresión general de los gráficos del juego.
+ : simplicidad; este paso por sí solo reduce seriamente los artefactos.
− : no siempre adecuado, en juegos dinámicos provoca movimientos bruscos.
Algunas demostraciones cambian los atributos dinámicamente, sincronizándose con el escaneo horizontal del monitor. Los conflictos no desaparecen, pero la zona de conflicto se reduce a 8x1 píxeles.
+ : Intento de eludir los límites de la memoria de video.
− : El método consume mucho tiempo de CPU.