Skip to content

TheCheezyPie/Midnight.Works_Test

Repository files navigation

MidnightWorksTest

Developed with Unreal Engine 5.2

Проект разработан Рябченко Константином в качестве тестового задания для студии Midnight Works.

Краткое описание моего процесса разработки и особенности, которые я добавил к базовому заданию

Особое внимание я уделил анимациям персонажа:

  • В базовом задании сказано: "Персонаж должен иметь базовую анимацию для ходьбы и прыжка". Я же пошел дальше. Сделал систему передвижения как в God of War, где персонаж ходит боком/задом, а не поворачивается в сторону движения. Для этого я нашел различные анимации на сайте mixamo.com, добавил к ним рут кость при помощи плагина для Blender, а затем сделал собственный IK Retargeter для скелета и конвертировал анимации под скелет манекена Unreal 5. И после создал свой Blendspace и при помощи нового инструмента UE, Analysis, настроил персонажа так чтобы ноги не проскальзывали.
  • Также я добавил систему присаживания и обзавелся анимациями при помощи способа указанного выше.
  • Провел тонкую настройку анимаций, blendspace'ов и State'ов в AnimationBP, для получения приятной для глаза плавной анимации.
  • Создал собственный Control Rig для базовой IK ног, включая их поворот по нормали.

Не меньше внимания я удалил системе дверей. Я добавил и протестировал несколько способов добавления ключей и монет (далее - пикапов) для их открытия:

  • В каждой двери есть массив пикапов с уровня - PickupsFromLevel. Можно крайне просто добавлять пикапы прямо с самой двери с помощью пипетки.
  • Система тэгов (Tags). У каждой двери есть переменная - DoorName (если её не заполнять, она заполниться автоматически, имя будет соответствовать имени двери в outliner). Можно раскидать пикапы по карте и просто каждому добавить тэг соответствующий DoorName желаемой двери. Это сделано для того чтобы можно было быстро и эффективно добавлять пикапы без необходимости вручную заполнять массив пикапов с уровня. Например: поставить одному пикапу нужный тэг и просто копировать/вставлять его куда нужно. Эти два метода между собой не конфликтуют, один пикап не будет необходим два раза.
  • Рандомная генерация пикапов. Я создал класс PickupSpawner, в котором необходимо указать тэг соответствующий двери с которой он ассоциирован и тип пикапа, который спавнер создает. Дальше, дверь может рандомно создать необходимое количество пикапов (все настройки для этого предоставлены). Если же спавнеров меньше чем нужно - лишние пикапы не будут созданы и кол-во необходимых уменьшиться соответственно. Эту систему можно использовать в двух случаях. Первый: если в двери не назначены пикапы с уровня и нету пикапов с соответствующим тэгом. Второй: если поставить галочку RandomisePickupsAbovePreset. Опять же, если спавнеров меньше чем необходимо - это учтется.

Далее, я настроил звуки:

  • Используется новейший тип аудио-данных в Unreal Engine 5: Metasounds.
  • У каждого типа пикапа есть свой уникальный звук при подъеме и во время простоя.
  • Настроена базовая система Sound Attenuation, дабы звуки исходили от самих предметов и "вели" к ним.

Меню:

  • Выполнил базовое задание: "Реализуйте меню начала и завершения игры". При запуске игры пользователя встречает главное меню на отдельном уровне, из которого можно собственно и начать игру. Двери есть двух типов: обязательные и нет. Если игрок открыл все обязательные двери - его встречает одно меню, из которого можно продолжить игру для исследования игрового мира, перезапустить уровень и выйти из игры. Если же игрок открыл все двери на карте - его встречает другое меню с аналогичным функционалом.
  • Реализовал систему паузы. Во время игры достаточно нажать Esc/Tab для паузы и открытия меню, из которого можно продолжить игру и выйти в главное меню или из игры.
  • Также я настроил систему загрузки уровней, а именно: добавил уровень для загрузки и простенький виджет. Однако испытать это мне не удалось, поскольку на моем компьютере уровни загружаются мгновенно.

Карта: Ничего особого, небольшая карта с Landscape и такой себе крепостью построеной при помощи встроенного в UE типа Geometry, из которой и должен выбраться игрок найдя все пикапы. А при выходе из нее игрока ждет самая-самая приятная новость которую он может получить :-).

"Реализуйте камеру, которая следует за персонажем и плавно перемещается при движении игрока". Честно говоря, не особо понял что требовалось, я создал камеру, прикрепил ее к шее персонажа чтобы была легкая и реалистичная тряска при перемещении; также настроил Camera Lag чтобы он был не сильно резким и не укачивал.

About

Made by Kostia Riabchenko for Midnight.Works studio

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published