67

Как я делал ретро цветовые режимы для игры (VGA/EGA/CGA/Win/Mac/Game Boy)

Решил, что если уж делать ретро игру, так делать несколько ретро цветовых режимов (VGA/EGA/CGA). Сделал 8 штук: true color, три монохромных режима, 16-цветовые режимы (Win/Mac), 2-битный и режим Game Boy. На видео демонстрируются все режимы по очереди.

Алгоритм преобразования цвета для монохромных режимов сделал такой. Сначала рассчитываю яркость цвета (R, G, B):

V = 0,3 * R + 0,59 * G + 0,11 * B

Монохромные ретро-мониторы имеют разные цветовые тона для различной яркости символа. Поэтому, оттенок также должен изменяться. Использую такую линейную интерполяцию:

RR = sqrt(V) * (monoR1 * (1 - V) + monoR2 * V)


GG = sqrt(V) * (monoG1 * (1 - V) + monoG2 * V)


BB = sqrt(V) * (monoB1 * (1 - V) + monoB2 * V)

Окончательный цвет: (RR, GG, BB)

Для 16-цветовых режимов я использую другой алгоритм. Для каждого цвета (R, G, B) ищу ближайший цвет в палитре. Вот и все.

2-битный и режим Game Boy имеет только четыре цвета в палитре. Простой поиск ближайшего цвета дает очень темную картину. Поэтому, прежде чем искать цвет в палитре, я делаю нормализацию:

d = 1 / max (R, G, B)


normR = d * R


normG = d * G


normB = d * B

Формулы схематичные. Проверки на деление на ноль не стал упоминать. В демку самой игры можно поиграть в браузере вот тут: asciident.com.

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"