В привычном значении слова, у этой игры наверное нет шейдеров. Здесь весь код постпроцессинга картинки прямо в самом коде игры на Си, как и вся игра.
Сама игрушка изначально черно-белая, все ассеты тоже черно белые. Если отрендерить без кода постпроцессинга, то получится вот так:
Дальше каждый пиксель затемняется в зависимости от его глубины в кадре:
И дальше главная функция постпроцессинга опять же проходит про каждому пикселю и заменяет его на один из 8 цветов палитры, попутно применяя кое-какой дизеринг:
unsigned char pal[8][3] = {
{ 1, 63, 79 },
{ 22, 70, 96 },
{ 74, 78, 104 },
{ 131, 105, 122 },
{ 198, 129, 89 },
{ 235, 170, 94 },
{ 245, 212, 163 },
{ 255, 236, 214 }
};
void set_with_pal(unsigned int x, unsigned int y, int pal_idx) {
set(x, y, pal[pal_idx][0], pal[pal_idx][1], pal[pal_idx][2]);
}
void postproc() {
unsigned char r, g, b;
for (unsigned int x = 0; x < WIDTH; x ++)
for (unsigned int y = 0; y < HEIGHT; y ++) {
get(x, y, &r, &g, &b);
r /= 8;
r -= 3;
if (r > 32) {
r = 0;
}
if (r % 4 == 0) {
set_with_pal(x, y, r / 4);
} else if (r % 2 == 0) {
int one = (r - 2) / 4;
int two = (r - 2) / 4 + 1;
if ((y + x) % 2) {
set_with_pal(x, y, one);
} else {
set_with_pal(x, y, two);
}
} else {
int one = (r % 4 == 1) ? (r - 1) / 4 + 1 : (r - 3) / 4;
int two = (r % 4 == 1) ? (r - 1) / 4 : (r - 3) / 4 + 1;
if ((y % 2) == (r % 4 == 1) && x % 2) {
set_with_pal(x, y, one);
} else {
set_with_pal(x, y, two);
}
}
}
}
get(x, y, r, g, b) и set(x, y, r, b, g) - это соответственно функции чтобы достать и проставить пиксель (x, y)
Ну, если честно, то немного разочаровался, извините уж. Если начать с плюсов - спрайты и анимации машинок и прочей техники - огонь. Очень круто. Барханчики тоже неплохие. Бензин и боеприпасы выделаяются как-то по стилю. Взрывы в целом прикольные, однако у вас иногда будто что-то с сортировкой - иногда как будто поверх нашей машины рисуется что-то, что по факту должно быть сзади.
Музыка классная в целом. Ещё бы синт аля дискотека 90х заменить на партию соло-гитары - было бы вообще пушечно. Впрчоем, там потмо соло есть, и это хорошо, но синт тут как-то не к месту. Чего-то более сырого и примордиального хочется к такой тематике)
Ну, в целом вроде много чего сделано, это плюс. Таблица рекордов - плюс.
Про минусы - геймплей какой-то слишком уж трехкнопочный, на мой вкус. Я ожидал скроллшутер, но тут скроллшутер с 3 линеечками. Как-то простовато по мне. Хотя кому-то и пойдет.
Кажется напрасным делать много снарядов, летящих по баллистической траектории, в игре с такой проекцией. Когда начинают копьями закидывать - не знаешь куда деваться. Понятно, что можно привыкнуть, натренироваться, смотреть на тень и т.д. и т.п. Но если бы это было редко, то ладно. А так почти ВСЕ вражьи выстрелы - баллистические.
Но, в общем, самое главное, что меня огорчило - это динамика. Музыка задаёт такой бодрый грув, думаешь ЩА КАК КАК НАЧНЕТСЯ ЖАРА. Но жара не начинается. Хочется скорость прокрутки параллакса раза эдак в 2-3 увеличить. И скорость вообще повысить. Хочется, чтобы экран трясся от каждого взрыва. Возможно, чтобы машинка следы оставляла. Хочется смачно таранить врагов в бок, а не просто тихонько касаться. Это всё не так долго было бы сделать, особенно относительно того, что уже есть, но сочность была бы в разы. Я понимаю, что не каждая игра создана для того, чтобы там всё люто колбасилось и тряслось, но тут как раз тот случай. Драйва очень не хватает. Сейчас кажется, будто просто красивые спрайты машинок вяло тягают по карте. В общем, чувственной обратной связи маловато.
В привычном значении слова, у этой игры наверное нет шейдеров. Здесь весь код постпроцессинга картинки прямо в самом коде игры на Си, как и вся игра.
Сама игрушка изначально черно-белая, все ассеты тоже черно белые. Если отрендерить без кода постпроцессинга, то получится вот так:
Дальше каждый пиксель затемняется в зависимости от его глубины в кадре:
И дальше главная функция постпроцессинга опять же проходит про каждому пикселю и заменяет его на один из 8 цветов палитры, попутно применяя кое-какой дизеринг:
get(x, y, r, g, b) и set(x, y, r, b, g) - это соответственно функции чтобы достать и проставить пиксель (x, y)
Ну, если честно, то немного разочаровался, извините уж.
Если начать с плюсов - спрайты и анимации машинок и прочей техники - огонь. Очень круто. Барханчики тоже неплохие. Бензин и боеприпасы выделаяются как-то по стилю. Взрывы в целом прикольные, однако у вас иногда будто что-то с сортировкой - иногда как будто поверх нашей машины рисуется что-то, что по факту должно быть сзади.
Музыка классная в целом. Ещё бы синт аля дискотека 90х заменить на партию соло-гитары - было бы вообще пушечно. Впрчоем, там потмо соло есть, и это хорошо, но синт тут как-то не к месту. Чего-то более сырого и примордиального хочется к такой тематике)
Ну, в целом вроде много чего сделано, это плюс. Таблица рекордов - плюс.
Про минусы - геймплей какой-то слишком уж трехкнопочный, на мой вкус. Я ожидал скроллшутер, но тут скроллшутер с 3 линеечками. Как-то простовато по мне. Хотя кому-то и пойдет.
Кажется напрасным делать много снарядов, летящих по баллистической траектории, в игре с такой проекцией. Когда начинают копьями закидывать - не знаешь куда деваться. Понятно, что можно привыкнуть, натренироваться, смотреть на тень и т.д. и т.п. Но если бы это было редко, то ладно. А так почти ВСЕ вражьи выстрелы - баллистические.
Но, в общем, самое главное, что меня огорчило - это динамика. Музыка задаёт такой бодрый грув, думаешь ЩА КАК КАК НАЧНЕТСЯ ЖАРА. Но жара не начинается. Хочется скорость прокрутки параллакса раза эдак в 2-3 увеличить. И скорость вообще повысить. Хочется, чтобы экран трясся от каждого взрыва. Возможно, чтобы машинка следы оставляла. Хочется смачно таранить врагов в бок, а не просто тихонько касаться. Это всё не так долго было бы сделать, особенно относительно того, что уже есть, но сочность была бы в разы. Я понимаю, что не каждая игра создана для того, чтобы там всё люто колбасилось и тряслось, но тут как раз тот случай. Драйва очень не хватает. Сейчас кажется, будто просто красивые спрайты машинок вяло тягают по карте. В общем, чувственной обратной связи маловато.
Ну вот. Может будет полезен мой отзыв.