- Конфликт атрибутов
-
Конфликт атрибутов или клэшинг (англ. attribute clash) — артефакт графики, проявляющийся на некоторых старых компьютерных видеосистемах и связанный с аппаратными ограничениями. Наиболее известен пользователям ZX-Spectrum.
Содержание
Причина
Для экономии памяти и ускорения работы первые цветные компьютеры не позволяли присваивать любому пикселю любой цвет. Вместо этого экран делился на блоки, и каждому блоку давались два цвета — передний план и фон. В каждом из блоков пиксель имел один из этих двух цветов (и кодировался одним битом). При попытке вывести три цвета в один блок один из этих трёх цветов теряется, приводя к специфическим артефактам.
В частности, ZX-Spectrum каждому знакоместу размером 8×8 пикселей присваивал 1-байтовый атрибут — трёхбитовый цвет переднего плана
INK
, трёхбитовый цвет фонаPAPER
, 1 бит яркостиBRIGHT
и 1 бит миганияFLASH
. Это давало 15 цветов (и в обычном, и в ярком режиме цвет 0 чёрный). Таким образом, при разрешении 256×192 видеопамять занимала всего 6912 байтов. К слову сказать, эффект мигания использовался крайне редко в том числе и из-за того, что мигающая область явно состоит из квадратных блоков.В MSX 1 атрибут присваивается горизонтальным блокам 8×1 пикселей. Кроме того, были аппаратные спрайты, не конфликтовавшие друг с другом и с фоном. Впрочем, при портировании с ZX-Spectrum байт атрибута зачастую размножали, а спрайтами не пользовались, что приводило к практически неотличимой игре. В NES конфликтная зона 8×8 пикселей — но с широкой палитрой, аппаратными спрайтами и аппаратной же прокруткой это малозаметно.
Статичные картинки, естественно, строятся с учётом ограничений видеопамяти. В играх изображение строится динамически, и с проблемой требуется как-то бороться.
Способы борьбы
Игнорировать
Здесь никто с артефактами не борется, фон просто получает атрибут спрайта (или наоборот — спрайт получает атрибут фона). Этот механизм применяется в большинстве игр (например, Dizzy).
+: спрайт отделяется цветом от заднего плана; никаких ограничений стиля или движения.
−: артефакты чётко видны.
Использовать сплошной фон
Делается обширное пространство, залитое одним цветом, с минимумом украшений. Вероятность, что столкнутся два объекта разных цветов, снижается до минимума.
+: крайняя простота.
−: скучно.
Рисовать одним цветом
Отказываемся от цвета и рисуем монохромное игровое поле (Elite, Chimera, Head Over Heels). Впрочем, цвет, которым игровое поле рисуется, также может нести какую-либо информацию.
Иногда (Turbo Esprit) основная часть изображения монохромная, и только некоторые важные объекты рисуются в цвете.
+: полное отсутствие артефактов; никаких ограничений на движение.
−: теряется возможность рисовать в цвете.
Выравнивать спрайты по знакоместам
Движение спрайтов ограничивается 8-пиксельной сеткой. Данный метод применяется в играх с крупными спрайтами — в частности, Saboteur!. Практически во всех играх для Spectrum по знакоместам выравниваются препятствия.
+: простота; один только этот шаг серьёзно снижает артефакты.
−: не всегда пригодно.
Выработать особый стиль
Игра Saboteur! основана на чёрном цвете, в ней чёрный цвет практически везде: в узорах стен, в декорациях, в одежде врагов… Нечёрный же цвет играет роль освещения: например, чёрный ниндзя, бегущий вдоль жёлтой стены, становится чёрно-жёлтым, на фоне синего неба тот же ниндзя чёрно-синий. И в этой игре в некоторых знакоместах можно заметить конфликт атрибутов — правда, крайне редко. В игре Flunky применяется крупная мультяшная графика.
+: особый, ни на что не похожий стиль; цветное изображение сочетается с незначительными артефактами.
−: пригодно крайне редко.
Динамическое изменение атрибутов
Некоторые демо-ролики динамически меняют атрибуты, синхронизируясь со строчной развёрткой монитора. Конфликты не исчезают, но конфликтная зона уменьшается до 8×1 пикселей.
+: попытка обойти ограничения видеопамяти.
−: способ отнимает много процессорного времени и поэтому непригоден для игр.
Категории:- ZX Spectrum
- Аппаратные приёмы компьютерной графики
- Артефакты компьютерной графики
Wikimedia Foundation. 2010.