Найти в Дзене
ZDG

Графика для платформера в Xara X

Я начал писать о программировании игры-платформера. Проект немного заглох из-за моей болезни, но я его продолжаю. Сегодня речь пойдет не о программировании (это тоже будет), а о том, как подготовить графику.

Мы будем использовать бесплатный векторный редактор Xara X 5, о котором я уже неоднократно писал:

Строение игрового уровня

В платформерах игровые уровни сделаны из блоков одинакового размера (хотя можно и разного). Имея набор блоков, можно составить из них уровень.

В данном выпуске я приведу пример рисования одного блока.

Требования к графике

Мой уровень будет иметь тематику вроде тропического острова с древними развалинами. Сейчас я всё ещё в творческом поиске, поэтому

  • у меня есть некое представление в голове
  • я хочу визуализировать это представление и понять, годится оно или нет

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

Рисовать я буду блок размером 256*256 пикселов. Это слишком много для платформера, но иначе иллюстрации в этом материале будут слишком мелкими. Кроме того, редактор векторный, и значит размер можно менять. Однако это не значит, что можно нарисовать блок любого размера и потом отмасштабировать его как угодно. Рисовать нужно всегда под конкретный размер, в векторе или нет. Только так вы получите 100% совпадение с тем, что видите на экране.

Подготовка Xara

Необходимо перед началом работы настроить Xara в соответствии с данной инструкцией:

После настройки обязательно проверьте, что все размеры пиксельные, и что у вас включена привязка к пиксельной сетке (Window – Snap To Grid).

Описание процесса

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

Начало: квадрат

Я создал квадрат светло-серого цвета размером 256*256 пикселов со скруглёнными углами (это всё делается одним инструментом).

Рельеф

Далее я добавил квадрату рельеф. Это также делается одним инструментом, с возможностью регулировать толщину и угол освещения.

-2

Больше рельефа

В центре первого квадрата я сделал ещё один, также с рельефом, но настроил освещение так, чтобы он был вогнутым.

-3

Орнамент

Поверх центрального квадрата с помощью инструмента кривых я набросал некое подобие древнего орнамента:

-4

После чего, используя инструмент вычитания, я вырезал этот узор из центрального квадрата:

-5

Используя снова инструмент кривых, я подправил контуры узора, и назначил ему цвет чуть потемнее:

-6

В принципе, это всё. Теперь надо поработать над "реалистичностью".

Текстурирование

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

-7

Затем я просто делаю этот квадрат полупрозрачным и...

-8

Но карту прозрачности тоже можно сделать фрактальной. После подбора параметров получаю:

-9

Далее можно повторять процесс: я создал ещё один квадрат с фрактальной заливкой и прозрачностью. У заливки я сделал зерно меньше. А прозрачность настроил так, чтобы она была едва заметна, но добавляла шероховатости:

-10

Камень стал более материальным. Таким образом можно создать много слоёв, пока не получите требуемый эффект. Можно также делать цветные фракталы:

-11

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

Акценты

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

-12

Далее я делаю хитрый финт ушами. Клонирую орнамент, удаляю с него эффект рельефа, и применяю к нему размытие краёв. Задаю ему цвет посветлее и накладываю поверх исходного орнамента, сделав тому заливку потемнее:

-13

Я получил эффект мягкого затенения по углам и вдоль граней и подчеркнул грани. Было-стало:

-14

Я недоволен освещением внешних левой и верхней граней. Делаю ещё один квадрат, который закрывает всё, кроме граней. Делаю ему заодно 4-точечную заливку, чтобы цвет не был монотонным, и добавляю тонкую белую тень вокруг (на рисунке она сиреневая, чтобы было понятно, где она). Подкладываю этот квадрат под орнамент:

-15

Теперь у граней есть светлая граница. Было-стало:

-16

Вариации

Сделав новую текстуру с помощью всё тех же фрактальных заливки и прозрачности, я затем превратил её в растр, а растр наложил несколько раз на камень, применив к нему градиент прозрачности, тонировку цветом, масштабирование и тень:

-17

Заключение

Ну наверное пока всё. Улучшать этот камень можно до бесконечности, добавляя всё новые и новые детали, но у меня заняло в разы больше времени написать этот материал, чем собственно нарисовать камень.

Посмотрим, как всё это выглядит в размере 50%:

-18

Ну и 25% (это уже 64*64 пиксела, что ближе к правде):

-19

Хоть оно как-то и работает, для наилучшего результата в финальной графике нужно будет переделать всё в правильном размере. Ну и конечно, одним блоком здесь не обойтись, их нужно будет нарисовать целую кучу.