Смена палитры

Материал из Posmotre.li
Перейти к: навигация, поиск
Ниндзя из Mortal Kombat
Рисунок в неверной палитре — частый глюк тех времён.

Путь от двух чёрно-белых цветов к 16 миллионам «истинных» был долог.

  • Atari 2600 (1977) даёт два цвета на строку фона, плюс два одноцветных спрайта. Цвет изображения, цвет фона и цвет спрайтов задаётся.
  • Sinclair ZX Spectrum (1982): два цвета на знакоместо (оба яркие или оба тусклые) из 15 возможных (и в ярком, и в тусклом варианте 000 — чёрный).
  • Nintendo Famicom = NES = Dendy (1983): 52 цвета, при этом в каждой плитке 8×8 могут быть три цвета и общий для всего экрана фоновый, в каждом спрайте — три и прозрачность.
  • MSX2 (японский отраслевой стандарт, такие компьютеры выпускали Yamaha, Philips, Sony и другие, 1985): 16 цветов из 512 возможных.
  • IBM VGA (1989): 256 цветов из 262 тыс.
  • В начале 90-х на настольные машины стали проникать адаптеры SuperVGA, дававшие 640×480×65k и больше. Честные 65 тысяч цветов, с 5 битами на красный и синий, и с 6 битами на зелёный.

Что означает «M цветов из N возможных»? Запоминаем в какой-то таблице (палитре) R, G и B для каждого из M цветов. В кадровом буфере хранятся не R, не G и не B, а номер цвета — 1-й, 2-й и так далее.

А теперь внимание! Что будет, если в палитре поменять цвет номер 3? Это значит, всё, что было 3-го цвета, перекрасится! Грубо говоря, посылаем в порт пару байтов — и получаем масштабную перекраску всего на экране, при мизерном расходе ресурсов шины.

Разумеется, это не могло не заинтересовать игроделов. Так, например, делали всякие вспышки экрана и эффекты отравления. Удачно подменив палитру, можно небольшими силами создать иллюзию богатой игры. Уже на первых машинах встречаются одинаковые спрайты разных цветов. В Super Mario Bros. кустик и верхушка облака — одна и та же плитка, но разных цветов.

Бывает и другой вид смены палитры: на лету заменяем 3, например, на 23 — и всё, что было 3-го цвета, станет 23-го. Несчастных 256 байтов на таблицу подмены. Это практиковалось в Mortal Kombat (скажем, 64 цвета на первого бойца, и ещё 64 — на второго), в Doom и во всех стратегиях (чтобы рисовать опознавательные знаки).

Именно по причине лёгкой смены палитры в играх надолго задержались 8-битные цвета: StarCraft (1998), Grand Prix 3 (2000 — правда, только в программном рендеринге).

Заметим, что пока домашние компьютеры и приставки расширяли графическую палитру плитками и знакоместами, деловые не пользовались этими дешёвыми трюками. IBM CGA имел 320×200×4 (да-да, всего четыре цвета, потому ниндзя в Saboteur II был красный, иначе никак не передашь ночь) и 640×200×2, зато никаких конфликтных зон. Macintosh был только монохромным, тоже два цвета.

И сейчас экономят работу художника, перекрашивая одно в другое. Если цветов единицы, делают копии атласа или текстуры. Если сколько угодно — идут на разные ухищрения (рисование-то сейчас аппаратное). Так, палитровые PNG состоят из несжатой палитры и сжатых данных, и если в памяти есть место на ту и другую разжатую картинку, можно построить два PNG с разными палитрами и загрузить тот и другой. А если памяти нет — пишут хитрые шейдеры.

Для чего?[править]

  • Палитровые спецэффекты: вспышки экрана, удары, эффекты отравления…
  • Регулировка яркости, имитация освещения (практически все шутеры начиная с Doom).
  • Приспособить монстров или постройки к ландшафту: например, пещерная обезьяна будет чернее обычной.
  • Ранги монстров (простой, тяжёлый и командир). Или даже без рангов, просто для разнообразия (Golden Axe).
  • Опознавательные знаки (практически все стратегии, гонки и сетевые шутеры того времени).
  • Экономия спрайтов (практически все файтинги и CRPG того времени).

Интересные примеры[править]

Разумеется, можно включать и современные игры, где кто-то — перекрашенная версия кого-то. Но поскольку этого добра завались, пишите только самое интересное!
  • TMNT: Manhatten Project — плещущаяся вода в канализации.
  • Chip’n’Dale Rescue Rangers 2. Один из боссов — кран с ядром. Движение гусениц — смена палитры.
  • WarCraft II. Плещущееся море — это смена палитры! А на Новый год в церкви поставили ёлку, а гоблин-алхимик устроил иллюминацию.
  • WarCraft III. Подвиды большинства мобов имеют не перекрашенные текстуры, а лишь с изменённым соотношением красного, синего и зелёного.
  • Mortal Kombat. Разноцветные ниндзя, боевые девушки и роботы с одинаковыми спрайтами. Точнее, с частично одинаковыми — суперудары у них разные.
    • Перекрашивались и обычные бойцы, если оба игрока выбирали одинаковых. Причём здесь одинаковость ниндзя играла злую шутку — перекрасить надо так, чтобы он не путался ни с противником, ни с другими ниндзя. В итоге получались бои «зелёный против салатового» или «ярко-красный против бледно-красного».
  • Телефонные версии Silent Hill. И без того JAR полмегабайта — на грани тогдашних телефонов. Вместо двух миров там один, но в разных палитрах.
  • Различные игры на движке Build, в которых встречались несколько вариантов одного и того же врага, перекрашивали варианты именно сменой палитры с «дефолтного» голубого цвета (именно голубые спрайты хранятся в файлах игры) на нужный. Те части спрайта, которые не были голубыми, не перекрашивались (например, лицо или руки противника).
    • Duke Nukem 3D: Штурмовик и Капитан Штурмовиков — зеленая и красная жилетка. В дополнении Caribbean Vacation хряки-туристы (местный аналог хряков-полицейских) были в веселеньких рубашках всех цветов радуги, но по характеристикам не различались.
    • Redneck Rampage: различные Инопланетянки и их Королева различаются по цветам одежды и волос (редкий случай: смена палитры двух разных частей спрайта).
    • Blood: Культист, Фанатик и (в дополнении) Аколит и Тесла-культист различаются цветом балахона (коричневый, черный, зеленый и синий соответственно). Эта версия движка Build уникальна тем, что дефолтный перекрашиваемый цвет в ней не голубой, а коричневый.
    • Shadow Warrior: различные Ниндзя (Простой ниндзя, Ракетчик, Гранатометчик, Самонаводчик и Невидимка) различались цветом штанов (коричневые, красные, серые, оранжевые и зеленые соответственно). Эффект невидимости у Невидимки также получался путем смены палитры на полностью черный силуэт и добавления 75 % прозрачности.
    • Во всех этих играх игроки в мультиплеере также различались сменой палитры спрайта главгероя.