Птички из кирпичиков: оформление уровней Organic Matter

В сегодняшнем выпуске дневников разработки Organic Matter расскажу немного про дизайн уровней с визуальной точки зрения.

Самой характерной особенностью графики ZX Spectrum является то, что каждое знакоместо 8×8 на экране может быть раскрашено только в два цвета — цвет фона PAPER и цвет «чернил» INK. Это, в частности, означает, что вы не можете нарисовать белый спрайт на фоне стены из красных кирпичей с серым цементом: либо спрайт перекрасит стену, либо стена спрайт. С этой проблемой боролись по разному: делали игры монохромными, старались, чтобы основное действие происходило на черном или другом однотонном фоне, быстренько перерисовывали фон после того, как персонаж с него сойдет, или решали, что пусть герой перекрашивается, ничего не поделаешь.

В движке Multi-Platform Arcade Game Designer (MPAGD) персонаж по умолчанию перекрашивается в цвета блоков, перед которыми он стоит, и я решил, что таким образом можно сделать, например, эффект красной подсветки от лампочек, которые ограничивают опасные места. Блоки с подсветкой пустые, но в атрибутах у них указаны красные чернила, поэтому герой тоже становится красным, подойдя туда. Правда, подсветка получается угловатая.

1ML5O66

Настоящие профессионалы спектрумовской графики имитировали тени на объектах и объем, умело манипулируя в основном черным цветом — в частности, активно применяя дизеринг (создание полутеней путем расставления пикселей в шахматном порядке). Я решил за мастерами не гнаться и сделать графику поплоще, но все-таки хотя бы как-то сгладить вездесущие прямые углы, которые вечно вылезают из тайловой графики. Первым делом, конечно, я нарисовал скосы, которые видны на стартовом экране. Решил, что 45 градусов — довольно банальный (и чересчур крутой) уклон, а вот такая пологая линия будет смотреться поприятнее. К сожалению, движок ходьбу по косогору не поддерживает, так что по пандусам все равно приходится прыгать, как по ступенькам.

0yswhdO

Вторая проблема, с которой надо было бороться — однообразие. Большие площади, замощенные голубеньким тайлом стены, смотрелись до вывиха челюсти скучно. В принципе, отчасти так и было задумано, чтобы создать контраст с бурной растительностью в «органической» части станции, но игрока надо было еще туда заманить. Так что вначале я сделал альтернативный тайл с немного смещенными «дырочками» и разбавил скукоту им, а потом ещё вырыл на первом экране служебный тоннель — ну и потом так получилось, что он продлился до «деревянной» части станции. Аналогичные «прорези» появились и в некоторых других экранах. Добавлялись мелкие детали, вроде кактусов у программистов, расклеенных по всей станции плакатов EARTH и моделей ракет. Скошенные потолки были утыканы выступами, на стенах добавлены росписи…

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

7UO6I30

Когда я решил, что черноту стен станции надо как-то разбавить, эти треугольники пришлись очень кстати:

CEo7eUk

Обратите внимание, что шея и хвост птицы формально имеют ширину в одну клетку (если мерять по горизонтали — красная линия), но кажутся тоньше, так как мы подсознательно меряем их ширину по синей линии.

Вообще, хотя в условиях жестких ограничений памяти любой реюз тайлов приходится очень кстати, в Organic Matter нету каких-то суперклёвых связанных с этим приемов (как в Super Mario Bros., где облака и кусты сделаны из одних и тех же элементов), кроме чашечек в инкубаторе, которые по совместительству являются штанинами скафандров из второго экрана.

NlcxO57

В заключение хотелось бы показать экран «Улетевший отсек», где пологие и круто скошенные кусочки скомбинировались в неплохую имитацию криволинейности.

oNAzM7i

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

Blank