Ретро цветовые режимы для игры

Решил, что если уж делать ретро игру, так делать несколько ретро цветовых режимов (VGA/EGA/CGA). Сделал 8 штук: три монохромных режима, 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

5151
21 комментарий

Эта анимация огня в ASCII выглядит очень стильно. Мне нравится.

14

Автор, не забудь бахнуть пост, когда релизнешься, я поиграть хочу!

6

стильно что пиздец, круть

5

Куда кидать деньги?

3

Я напишу) Спасибо!