» » Палитровые эффекты в видеоиграх 80-90ых.
Навигация по сайту
Случайная игра

Вступай!!!
Облако тегов
Палитровые эффекты в видеоиграх 80-90ых.

Доброго времени суток, уважаемые читатели. Если вы сейчас читаете эти строки, значит это, скорее всего, журнал “GameBit”, а вы — давнишние поклонники классических видеоигр с приставок “Famicom” и “Sega Genesis”. Уверен, что с появлением возможности эмуляции этих систем на своем «ПК», вы переиграли не в один десяток таковых, и, конечно, у каждого из вас появилась/была своя любимая, либо несколько. Но зададим себе вопрос: что же конкретно нравилось каждому из вас? Кому-то, возможно, хорошее графическое исполнение игры, кому-то — восхитительная музыка и соответствующее звуковое сопровождение, кто-то был поражен необычайно увлекательным сюжетом, кто-то восторгался необъятными возможностями игрового мира… Но было в этих играх что-то такое, что приковывало к себе взгляд и не отпускало его некоторые мгновения. Да, да — я говорю о всевозможных игровых видеоэффектах того времени. Я более чем уверен, что вам всегда было интересно, а как же разработчики создавали тот или иной эффект. Сегодня мы попытаемся разобраться в этом вместе.

О чем же мы будем говорить сегодня? Небезызвестно, что с момента возникновения игровой индустрии прошел порядочных размеров период времени. Вот почему объяснить все существующие на сегодняшний день видеоэффекты не представляется возможным. Мы разберем только малую часть, каплю в море. Но начало, положенное мною, возможно, подтолкнет других программистов либо просто увлеченных данным вопросом людей поделиться с нами своими знаниями и опытом. А потому как видеосистемы 80-90ых… были «палитровые» и содержали для передачи цвета изображения специальную таблицу цветов — палитру, именно в этой статье хотелось бы поговорить об эффектах, построенных при помощи всевозможных манипуляций с этими самыми таблицами. Для наглядности поясню, что под далее описываемую теорию попадают следующие консоли: “Famicom”, “Super Famicom”, “Sega Genesis”, “PC” до повсеместного распространения SVGA видеокарт, и множество других популярных консолей того времени. Для лучшего усвоения материала составим план интересующих нас вопросов.

Палитровые эффекты
1. Общее представление устройства палитровых видеосистем
2. Управление цветом. Яркость
3. Плавное «затухание» и «восстановление» экрана
4. Палитровая анимация
5. Вопросы освещения
6. Применение палитры на практике

Перед тем, как продолжить наш разговор, во избежание дальнейших недоразумений скажу, что в данной статье я буду описывать методы, а не алгоритмы реализации. Разница в том, что данные методы могут быть применены к любой видеосистеме, удовлетворяющей нижеизложенному на аппаратном уровне. Ну что же, хватит вступлений, пора начинать! Как сказал великий Buzz LightYear из мультфильма “Toy Story”: «To infinity… И еще дальше!!!»

Общее представление устройства палитровых видеосистем

Палитровые эффекты в видеоиграх 80-90ых.
Думаю, что не открою Америку, если скажу, что экран нашего монитора представляет собой дискретную сетку пикселей. Цвет каждого пикселя формируется посредством трех базовых цветов: Red — красного, Green — зеленого, Blue — синего. Однако это правило относится только к так называемым RGB видеосистемам. Некоторые системы, либо конкретные видеорежимы этих систем, способны формировать изображение другими способами, однако их мы рассматривать не будем. Так вот, палитровые системы устроены вообще довольно оригинально. Начать следует с того, что каждая видеосистема имеет свой предел яркости. Чтобы стало немного понятнее, поясню: это то, сколько оттенков одного базового цвета могла воспроизводить система. Допустим, известная многим видеоплата VGA (Видео Графический Массив), программирование которой имело место в моей жизни, могла воспроизводить 64 оттенка каждого из трех базовых цветов. Однако в палитровых видеосистемах изображение не формировалось описанием различных комбинаций RGB для каждой конкретной точки растра. Эти системы имели свою таблицу цветов, каждому из которых соответствовало какое-либо значение RGB. Программист обращался к определенному цвету палитры, автоматически получая заложенные ранее RGB сочетания, и мог использовать в работе только их. Если система позволяла, программист мог сам указывать значения каждой из компонент для конкретного цвета палитры, однако некоторые системы не позволяли этого, предоставляя только использование палитры по умолчанию (Famicom; PC, оснащенный CGA видеокартой). Для чего всё это было нужно, спросите вы? К сожалению, я не могу ответить на этот вопрос полноценно, так как плохо разбираюсь в аппаратных возможностях различных видеосистем. Но, думаю, свою ключевую роль в этом сыграл такой фактор, как экономия видеопамяти. Судите сами. Допустим, у нас имеется RGB видеосистема, способная воспроизводить 64 оттенка одного базового цвета. Палитра нашей импровизированной системы может отображать одновременно на экране 16 цветов. Ну а разрешение, для простоты подсчета, пускай будет равно 320×200 точек. Чтобы описать одну точку экрана, нам потребуется 4 бита.

Палитровые эффекты в видеоиграх 80-90ых.


Значит одно такое изображение в памяти видеосистемы займет:

320×200×4 = 256000 бита = 32 Килобайта

В том случае, если программист работает с несколькими палитрами, придется сохранить и текущую палитру для правильного отображения цвета изображения в дальнейшем. Место, занимаемое палитрой, будет равно:

3×6×16 = 288 бит

А теперь посчитаем, сколько займет наше изображение, если бы оно формировалось посредством описания различных RGB сочетаний для каждой отдельной точки растра. Одна такая точка описывалась бы шестью битами каждой цветовой компоненты. Итого:

320×200×18 = 1152000 бит = 144 Килобайта

Округлив результаты, мы получим разницу, равную 5-ти!!! Помимо своей экономичности, такие видеосистемы предоставляют необыкновенное удобство в работе, позволяя быстро и эффективно подобрать необходимую палитру и придать нужный колорит будущему изображению. Однако палитровые системы неопровержимо проигрывают, когда дело касается отображения полноцветных изображений. Единственное, что могут программисты в данной ситуации — это подбирать цвета из своей таблицы, наиболее приближенные по 3-м компонентам к реальным. Результат такого способа воспроизведения, конечно, окажется неверен оригиналу, но в большинстве случаев бывает довольно приемлем.

Управление цветом. Яркость

Привлекательность палитровых видеосистем выражается в том, что для работы с цветом изображения не нужно опрашивать значение каждой отдельно взятой точки растра. Достаточно изменить компоненты в палитре цвета, как это скажется и на самом изображении. Ну а для того, чтобы сделать изображение ярче либо темнее, нужно равномерно увеличивать либо уменьшать значения каждой из RGB компонент (здесь и в дальнейшем мы будем говорить только о RGB видеосистемах). Игровая консоль “Famicom” уже содержала готовую палитру в 64 цвета для работы с изображением, но в «активную» палитру (одновременно на экране) входило только 16 цветов. Для изменения яркости в этом случае следовало взять уже «готовый», более темный цвет. Однако в вопросе управления яркостью есть и свои особенности. Посмотрите, что получится, если одна из компонент уже достигла своего максимума, а другие продолжают увеличиваться. В данном случае изображение начнет «белеть». Постепенно оно станет полностью белым, а в случае с уменьшением компонент — полностью черным. Это происходит из-за того, что все три компоненты стремятся быть равными, и в данном случае это и происходит в их точках максимумов и минимумов. Поэтому «правильное» управление яркостью следует производить до максимума либо до минимума любой из компонент каждого цвета в палитре. Но, опираясь на собственный опыт, скажу, что на практике это почти невыполнимо из-за большой разницы между значениями цветовых компонент.

Палитровые эффекты в видеоиграх 80-90ых.Палитровые эффекты в видеоиграх 80-90ых.


Плавное «затухание» и «восстановление» экрана

Теперь, когда вы уже имеете представление о том, как устроены палитровые видеосистемы и каковы возможности изменения яркости в них, настало время рассказать, как создаются эффекты «затухания» и «восстановления» изображения на экране. Заметим, что преимущественно такие эффекты применяются в местах, имеющих ярко выраженное разделение границ сюжетной линии произведения. Так вот, чтобы «потушить» экран, то есть создать плавный переход от текущего состояния палитры к нулевому значению каждой из компонент, необходимо выполнить постепенное уменьшение каждой из 3-х компонент. (Возможны и другие варианты, но самое плавное «гашение» получится, если только изменять значение на минимальную границу уровня яркости видеосистемы). Как это будет происходить — один раз за прорисовку сцены, либо иначе — каждый программист решает сам. Ясно одно, что если производить изменение яркости один раз в несколько сцен, время эффекта увеличится прямопропорционально количеству производимых сцен. Но не всё так просто. После того, как вы «погасили» сцену, в большинстве случаев ее приходится восстанавливать. Но восстанавливать до какой степени? Ведь все компоненты потеряны, они стали равны нулю. Отсюда вывод: всю активную палитру экрана при «затухании» (да и вообще при любых манипуляциях с палитрой) следует сохранять. Приведу пример с практики: видеокарта VGA имела для работы с «активной» палитрой 256 регистров, в каждом из которых могло храниться три шестибитных числа, соответствующих яркости R — красной, G — зеленой, B — синей компонент. При каких-либо изменениях текущего состояния палитры первоначальные значения компонент записывались в оперативную память ПК, либо сохранялись на диск в виде файла. Теперь всё расставилось по своим местам:

«восстановление» следует производить до сохраненных ранее RGB значений. Кстати, таблица цветов системы Sega Genesis содержала 4 «активные» палитры по 16 цветов в каждой. На каждую компоненту RGB приходилось по 3 бита. Всего же количество цветов, производимых видеосистемой “Genesis”, равнялось 512-ти.

Палитровая анимация

Палитровая анимация — это один из уникальнейших способов придания красивого эффекта игровой программе при минимальных затратах на его разработку. Кто-нибудь помнит игры “Downtown Special” и “Kakutou Densetsu” от “Technos Japan” для консоли “Famicom”? Эти игры интересны тем, что именно в них и использовались эффекты, построенные на перемещение цветов в «активной» палитре. Посмотрите на скриншоты. В первом и втором случаях при помощи этого эффекта разработчики создали воду. Чем уникален данный эффект и как же он создавался? Для всей анимации использовалось только одно изображение (в нашем случае — изображение воды). «Раскрашивалось» оно специально подобранными цветами, отдельно для которых отводилось место в «активной» палитре. Затем цвета палитры начинали циклично перемещаться: первый цвет становился вторым, второй становился третьим, последний становился первым, либо всё с точностью наоборот Можно было еще менять заранее заготовленные комбинации цвета. И так до бесконечности. В итоге: весомая экономия памяти (ведь вместо, допустим, 4-х кадров анимации использовался только один) и приковывающий взгляд «волшебный» видеоэффект!!!
Палитровые эффекты в видеоиграх 80-90ых.Палитровые эффекты в видеоиграх 80-90ых.


Вопросы освещения

Палитровые эффекты в видеоиграх 80-90ых.

Наверное, это один из самых интересных вопросов в тематике воспроизведения палитровых изображений. Вообще, вопросам работы с палитровыми изображениями посвящена не одна статья, создано множество способов и ухищрений. Но наряду с данной темой я бы поставил еще и такие вопросы как: «палитровая прозрачность» и «смешивание цвета». Почему так, а не иначе? Судите сами. На практике опытный программист всегда попытается создать специальную модель цвета, оптимизированную именно под требуемую систему. Операционные системы различных аппаратных моделей также имеют свои специальные цветовые таблицы (Windows, MAC OS). Для наглядности приведу пример. Эту модель цвета я использовал при работе с “VGA” адаптером. Данная модель могла свободно смешивать различные комбинации R — красного, G — зеленого и B — синего цветов между собой, имела 8 градаций яркости (различные уровни яркости не могли смешиваться между собой) и занимала 64 цвета из 256-ти возможных в таблице цветов “VGA”. Но в практике программирования видеоигр для консолей “Super Famicom” и “Sega Genesis” такие модели вряд ли использовались. Дело тут даже не в невозможности построения таких моделей (хотя это было и тяжело, ведь, допустим, консоль “Sega Genesis” имела только 64 цвета «активной» палитры), а в незаинтересованности создателей этим вопросом. Вообще, хотя это только мое личное мнение, интерес к освещению стал проявляться только с развитием 3D графического изображения, для придания большей реалистичности прорисовываемой сцене. Освещение — вещь вообще уникальная: когда оно есть, его никто не замечает, но стоит его только убрать, и вы сразу почувствуете разницу. Хорошим примером данного аспекта нам может послужить игра “Vectorman” с консоли “Sega Genesis”, где яркость главного персонажа менялась в зависимости от обстоятельств. Однако вражеские персонажи от тех же обстоятельств своей яркости не изменяли. Отсюда следует вывод: скорее всего разработчики «отдали» на нужды главного персонажа определенное количество цветов «активной» палитры, допустим, 4 либо 8. И по необходимости просто изменяли значения RGB компонент в этих цветах, что и заставляло главного персонажа менять свои яркость и цвет, не изменяя цветности других изображений игры.
Палитровые эффекты в видеоиграх 80-90ых.Палитровые эффекты в видеоиграх 80-90ых.


Применение палитры на практике

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

Пример 1
Примером, описывающим следующий палитровый эффект, нам послужит игра “Captain America and The Avengers“, написанная для игровой системы “Famicom”. Взгляните на два приведенных скриншота. В обоих случаях тайлы окружающего фона игры одинаковы (да и расположены так же), но цветовая схема в каждом из них различна. Смысл в том, что на одно изображение разработчики применяли различные таблицы цветов, позволяя создавать день, вечер, ночь…

Палитровые эффекты в видеоиграх 80-90ых.Палитровые эффекты в видеоиграх 80-90ых.


Пример 2
Еще один, но уже более качественный эффект палитровой анимации мы можем наблюдать в играх серии “Super Gussun Oyoyo”. Красиво переливающиеся заставки в обоих случаях работают по принципу, описанному выше. Грамотно подобранная таблица цветов — радуга, призвана вызвать самые положительные эмоции у игрока.

Палитровые эффекты в видеоиграх 80-90ых.Палитровые эффекты в видеоиграх 80-90ых.


Пример 3
Посмотрите на игру “Bare Knuckle” c “Sega Genesis”. Изменение RGB значений в специально отведенных цветах активной палитры позволило получить красочные «мерцающие» вывески баров и магазинов на ночных улицах опасного города.

Палитровые эффекты в видеоиграх 80-90ых.


Пример 4
Игра “Ristar” с консоли “Sega Genesis”. Грамотная идея изменения яркости и цветности воды в зависимости от глубины погружения в нее главного персонажа. Реализация: через заранее заготовленные RGB сочетания и специально «выделенные» цвета в таблице «активной» палитры. Кстати, сам главный персонаж изменяет свои цвета тем же способом. Прекрасно смотрится!!!

Палитровые эффекты в видеоиграх 80-90ых.Палитровые эффекты в видеоиграх 80-90ых.


Эпилог

Как видите, возможности работы с палитрой были и остаются достаточно велики. И сегодня персональные машины “IBM PC” и “Macintosh” поддерживают режимы работы с палитровыми изображениями в целях совместимости различных поколений программ и моделей. И на сегодняшний день существуют программы по подготовке таких изображений для последующего воспроизведения в их «родной среде». Палитровый формат “*.gif” до сих пор исправно служит людям на просторах всемирной сети Internet. Палитра не забыта, палитра до сих пор жива!..

Автор статьи: Zephyr
Журнал: Game Bit

Более подробно о палитре для Sega MegaDrive / Genesis вы можете узнать у нас на форуме.



Вернуться
  • Комментарий: 0
  • Просмотров: 3867

Комментарии:

Оставить комментарий