
В этом лонгриде я разберу, как сделаны процедурные анимации в моей игре Solitformer.
Все методы, которые я использовал, представлены в моём курсе по процедурным анимациям в UE — https://pro.deziiign.com/project/2dd114f331494f38a73b01b0df138e54
Solitformer это 3D платформер-головоломка, уровни в которой состоят из игральных карт. Каждое наше прикосновение к ним собирает их в нашу руку, но делать это нужно по правилам пасьянса, иначе карта будет нас выталкивать.
Если заинтересовались, то смело можете скачать и поиграть, раскладывать пасьянс очень медитативное занятие — https://uhbif.itch.io/solitformer
Вот ссылка на проект на старом портфолио — https://portfolio.hse.ru/Project/188688, а вот на лонгрид на новом — https://hsedesign.ru/project/4059d7746b354803b9e30defbed9ba1c. Также предлагаю вам посмотреть трейлер:
Анимированный фон

Начну с анимации фона. На первый взгляд это кажется какой-то очень сложной анимацией сделанной в другой программе и импортированная как видео в качестве фона. Но на самом деле сделана очень просто — я просто добавил Rotating Movement Component на один из мешей неба.
В Unreal Engine меш неба никогда не полностью шарообразный, а имеет относительно небольшое количество полигонов. Поэтому если добавить дополнительные меши другого цвета, и заставить их крутиться, то фейсы малополигональных объектов будут постоянно перекрывать друг-друга и создавать вот такую анимацию для фона.
При этом с помощью изменение скорости, размера, поворота, позиции и цветов этих мешей можно очень легко разнообразить небо, и за очень короткий срок сделать разные анимации даже для очень большой игры.
Анимация персонажа
Также давайте разберём и действительно сложную и многосоставную анимацию в игре — движение персонажа. Она состоит сразу из 4 разных процедурных анимаций, которые работают одновременно и подстраиваются под игрока.
1. Поворот персонажа во время прыжка сделан через создание поворота на постоянном подключении. В качестве зависимой переменной код берём направление полёта, поэтом поворот ощущается приятной обратной обратной связью на твой прыжок.
2. Сжатие при приземлении и растяжение при прыжке куба сделаны с помощью анимации параметра Scale через Timelin-ы. В случае начала другого Timelin-а предыдущий прерывается и обнуляется. Также оно работает и при отпрыгивании от вертикальных карт.
3. Бирюзовые линии поднимания карты также сделаны с помощью Timelin-ов.
4. Анимированный материал куба сделан просто анимацией в материале с помощью ноды Panner.
Дополнительные анимации
Вот ещё один пример простой, но достаточно эффектной анимации — это карта, которая сразу подбирается и вместе с тем сразу тебя подбрасывает. Она сделана с помощью обычного зацикленного Timelin-а, однако хорошо смотрится и интуитивно передаёт функцию этой карты.
И также я использовал по факту процедурные анимации для того, чтобы сделать более интересное меню. По сути я просто добавил на камеру Rotating Movement Component и логику, которая каждые несколько секунд сменяет направления поворота. Благодаря этому ракурс всегда меняется и никогда не повторяется, чем легко гипнотизирует игрока.
Также в меню есть анимации в самом интерфейсе — выделения кнопок, но по факту это стандартные анимации в Widget Blueprints UE, а не процедурные. Поэтому в курсе они не разобраны.
Вывод:
В проекте я использовал множество процедурных анимаций, которые добавили много живости и обратной связи игре, а также в целом повысили ощущение от проекта и его «дороговизну».
Проект получил оценку 10 из 10, а также множество похвалы и лайков от комиссии. А также в последствии стал финалистом конкурса HSE CREATIVE OPEN. Думаю не в последнюю очередь проект заслужил всего этого благодаря процедурным анимациям.
Так что спасибо создателю курса по процедурным анимациям, на котором вы можете изучить все методы процедурной анимации, которые были использованы в Solitformer.