Конфликт атрибутов
Конфликт атрибутов или клэшинг (англ. 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 пикселей.
+: попытка обойти ограничения видеопамяти.
в: способ отнимает много процессорного времени и поэтому непригоден для игр.
