Конфликт атрибутов![]() Конфликт атрибутов или клэшинг (англ. attribute clash) — артефакт графики, проявляющийся на старых домашних компьютерах и связанный с аппаратными ограничениями. Наиболее известен пользователям ZX Spectrum. Деловые компьютеры, в противовес домашним, сужали цветовую палитру, но не допускали подобных ограничений; в любой пиксель можно было писать любой цвет из N. CGA имел всего 4 цвета, а Apple Macintosh был вообще монохромным. Причина![]() Для экономии памяти и ускорения работы первые цветные компьютеры не позволяли присваивать любому пикселю любой цвет. Вместо этого экран делился на блоки, и каждому блоку давались два цвета — передний план и фон. В каждом из блоков пиксель имел один из этих двух цветов (и кодировался одним битом). При попытке вывести три цвета в один блок один из этих трёх цветов теряется, приводя к специфическим артефактам[1]. В частности, ZX Spectrum каждому знакоместу размером 8×8 пикселей присваивал 1-байтовый атрибут — трёхбитовый цвет переднего плана В MSX 1 атрибут присваивается горизонтальным блокам 8×1 пикселей. Кроме того, были аппаратные спрайты, не конфликтовавшие друг с другом и с фоном. Впрочем, при портировании с ZX Spectrum байт атрибута зачастую размножали, а спрайтами не пользовались, что приводило к практически неотличимой игре. В NES конфликтная зона 16×16 пикселей фона — но с аппаратными спрайтами, аппаратной же прокруткой и широкой палитрой (всего 52 цвета, одновременно 8 палитр по 3 цвета + базовый[4]) это малозаметно. Статичные картинки, естественно, строятся с учётом ограничений видеопамяти. В играх изображение строится динамически, и с проблемой требуется как-то бороться. Способы борьбы1. Использовать атрибут фона![]() ![]() Это самый простой в программировании метод — программист только управляет пикселями, не трогая плоскость атрибутов. В таком случае нет и цветного «кирпича», но спрайт теряется на фоне (Double Dragon[1][5]). Чтобы этот метод давал качественные результаты, выработали особый стиль (Saboteur!, Bomb Jack, Cyclone, Strike Force Cobra). Оформление игры основывается на чёрном цвете, чёрный цвет практически везде: в узорах стен, в декорациях, в одежде врагов… Нечёрный же цвет играет роль освещения: например, чёрный ниндзя, бегущий вдоль жёлтой стены, становится чёрно-жёлтым, на фоне синего неба тот же ниндзя чёрно-синий. Конфликт будет, если в каком-то знакоместе отказались от чёрного цвета (спинки стульев в Saboteur II: Avenging Angel). +: интересный визуальный стиль; цветное изображение сочетается с незначительными артефактами; никакого управления атрибутами. −: требует, чтобы персонажи были чёрными, с минимумом светлых линий, а фон чёрно-цветным. Если это не так, знакоместа будут явно видны. 2. Использовать атрибут спрайта![]() Спрайт распространяет свой атрибут на фон, что приводит к цветному «кирпичу», который следует за героем. Этот механизм применяется нечасто, обычно только для главного героя, но не для врагов — например, Pac-Mania[6] или серия игр про Уолли (Everyone's a Wally и др.) +: спрайт отделяется цветом от заднего плана; никаких ограничений стиля или движения. −: артефакты чётко видны. 3. Сплошной фон, цветные спрайты![]() Один из самых популярных способов. Фон окрашивается в один цвет (чаще всего чёрный), с минимумом оформления, а геймплей строится так, чтобы вероятность столкновения двух объектов разных цветов была минимальной. Большинство элементов уровня непроходимы и конфликта не вызывают; немногие проходимые или являются передним планом и перекрывают спрайты (Exolon, Rex), или распространяют свой атрибут на спрайт (Dizzy). Этим способом отображается большинство игр типа «лабиринт»: Manic Miner[5], серия Monty, Abu Simbel Profanation, Cybernoid, Into The Eagle's Nest. Также характерен для космических скролл-шутеров (Zynaps, R-Type), так как чёрный фон с небольшим количеством точек хорошо подходит для изображения космоса. +: крайняя простота. −: скудное графическое оформление фона. 4. Двухцветное изображение![]() В пределах игрового поля всё изображение становится двухцветным (Elite, Chimera, Head Over Heels, Robocop, Quazatron, Terra Cresta). Впрочем, цвет, в который окрашено игровое поле, также может нести какую-либо информацию. В игре Robocop это разные уровни, в Quazatron это разные локации, в Terra Cresta это зоны в пределах уровня. Часто (Draconus, Turbo Esprit) основная часть изображения двухцветная, и только некоторые важные объекты отрисованы другими цветами. Таким способом отрисовывается большинство псевдо-3D (гонки) и изометрических игр. +: полное отсутствие артефактов; никаких ограничений на движение; никакого управления атрибутами. −: теряется возможность рисовать в цвете. 5. Выравнивание спрайтов по знакоместам![]() Шаг движения спрайтов ограничивается 8-пиксельной сеткой. Этот способ хорошо подходит для игр, не требующих динамичной отрисовки сцен (стратегии, логические игры), но применяется и для динамичных игр — так добились быстрой игры Centipede[5]. Движение спрайтов и прокрутка фона с шагом в 8 пикселей хорошо заметны в играх Savage, Astro Marine Corps, Dan Dare III, Extreme. Этот механизм не всегда помогает, и часто дополняется другими методами. Например, в играх Trapdoor и Flunky применяются крупные спрайты со сплошной заливкой цветом, при этом крупное изображение, находящееся на заднем плане, передаёт свой цвет в цвет фона переднего спрайта. В некоторых случаях применяется так называемое вытеснение спрайтов, когда в одном знакоместе 8×8 отрисовывается только один спрайт (и, возможно, фон). В играх Savage и Astro Marine Corps передний спрайт полностью вытесняет задний. Вытеснение спрайтов очень заметно в игре Golden Axe, что портит общее впечатление от графики игры. +: простота; один только этот шаг серьёзно снижает артефакты. −: не всегда пригодно, в динамичных играх приводит к движению рывками. 6. Динамическое изменение атрибутов![]() Некоторые деморолики динамически меняют атрибуты, синхронизируясь со строчной развёрткой монитора. Конфликты не исчезают, но конфликтная зона уменьшается до 8×1 пикселей. +: попытка обойти ограничения видеопамяти. −: способ отнимает много процессорного времени. Примечания
|
Portal di Ensiklopedia Dunia