
3D экшен-adventure, в которой вам предстоит попробовать себя в роли шамана. Скоро настанет Хаари-Манди и вам необходимо все приготовить. Перемещайтесь между рынком и нирваной, зажигайте факела, собирайте души, но не потеряйте свою!

Вперед в Нирвану!
Привет, я — Маша! В проекте Хаари-Манди я была программистом. Также я немного помогла с гейм-дизайном и UI. Но основное моей работой был код и сборка системы в движке Unreal Engine 5.

Подход к работе
Чтобы работать было удобнее, а объем кода не пугал, я разбила весь код на 3 категории: персонаж, окружение и враги.

Прежде всего я написала код переключения мира. Помимо смены пост-процесса, в нем также храниться переменная, которая показывает в каком мире мы находимся. Поскольку многие игровые сущности меняют облик или функцию в зависимости от мира, каждый использует эту переменную для проверок состояний.
Помните я говорила про три блока кода? Так вот, дальше про них подробнее!
Персонаж и навыки
В трубке два благовония — Сандал и Нероли. Каждое придает Кса уникальные способности в зависимости от мира, в котором он пребывает. По сути, это 2 скилл-сета, по 2 навыка в каждом из миров. Кнопки навыков при этом не меняются, меняются только ивенты, которые будут активироваться и виджеты их отражающие.
Сандал в Нирване наделяет умением временно останавливать врага. А на рынке поможет видеть через препятствия и понимать, где находятся факела для курильниц.
Нероли в Нирване даст возможность атаковать врагов. На рынке же помогает выставлять окаменелые статуи, чтобы облегчить путь.
Кто нам грозит?
В игре два врага: рыба-степлер и як. Оба имеют живую и статичную формы. Живые формы создают динамику и опасность в Нирване, статичные помогают игроку перемещаться по рынку. Обе сущности также внутри своего кода обращаются к главной переменной мира и под нее изменяют состояние.
А вот и шаманские яки — ходят медленно, зато сильно бодаются. Но на рынке их вес поможет разбить стены.
Это рыбы-степлеры. Они быстрые и больно кусаются. Зато на рынке становятся батутами!
Интерактивное окружение
На уровнях есть стены, которые пропадают в зависимости от мира, в котором находиться игрок. Как и враги, они периодически обращаются к переменной мира и переключаются на соответствующие текстуры и коллизии. По такому же принципу работают и некоторые элементы левел-арта. Это добавляет атмосферы и делает миры разными и по-своему любопытными.
Еще один важный элемент — Курильни. Каждая является маленькой системой: она активируется сама, но только когда зажжены все необходимые для нее факелы. Можно задавать желаемое число факелов, а также привязывать к ней те из них на уровне, которые нам хочется. Для самих факелов можно выбирать тип душ, которые требуются для их зажигания.
Ах да, сферы душ. С каждого вида врага падает свой тип сферы души. Под разные души у персонажа есть ячейки в инвентаре, их заполненность видна на виджетах. Из инвентаря души расходуются на две вещи: зажигание факелов или выставление статичных форм врагов.