Как я делал ретро цветовые режимы для игры (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.
Лига Разработчиков Видеоигр
8.5K постов23.1K подписчиков
Правила сообщества
ОБЩИЕ ПРАВИЛА:
- Уважайте чужой труд и используйте конструктивную критику
- Не занимайтесь саморекламой, пишите качественные и интересные посты
- Никакой политики
СТОИТ ПУБЛИКОВАТЬ:
- Посты о Вашей игре с историей её разработки и описанием полученного опыта
- Обучающие материалы, туториалы
- Интервью с опытными разработчиками
- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе
НЕ СТОИТ ПУБЛИКОВАТЬ:
- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры
- Посты, единственная цель которых - набор команды для разработки игры
- Посты, не относящиеся к тематике сообщества
Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.
ЗАПРЕЩЕНО:
- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции
- Выдавать чужой труд за свой
Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.
О РАЗМЕЩЕНИИ ССЫЛОК:
Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:
- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества
- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз
- Cсылка размещается в формате: "Страница игры в Steam: URL"