Header image
Small header

Раздел: Игры >> Ninja At The Top - 3D platformer-adventure

Вход







Регистрация
Забыли пароль?
Не пришел Email?

Ninja At The Top - 3D platformer-adventure

Летом 2016г. я начал изучение движка Unity. На тот момент я уже был наслышан о его легкости в освоении и удобстве в работе с 3D-графикой и анимацией. И он меня не разочаровал. В ходе долгих экспериментов с движком, я убедился в его широких возможностях и решил попробовать перенести на него свой старый проект о приключениях ниндзя в древних руинах, сделанный на Blitz3D. Напомню, что ключевыми особенностями геймплея данного проекта являются прыжки по платформам на большой высоте, маневрирование в воздухе, преодоление ловушек, решение головоломок, а также исследование больших локаций и лабиринтов в поисках артефактов. Кроме этого планировалось добавить несложную боевую систему, наподобие серии Gothic, взаимодействие с NPC и выполнение некоторых побочных квестов. К сожалению из-за ограничений Blitz3D и недостатка знаний и опыта, мне не удалось в полной мере реализовать все свои идеи и проект был заброшен.
Для возрождения старого проекта на новом движке я в первую очередь переделал модель главного героя. Теперь она стала более детализированной и обзавелась картой нормалей. Также я перенес в новую версию одну из высотных построек - башню с глазом, она была существенно доработана. Освещение уровня стало более реалистичным, добавлены некоторые пост-эффекты. Наряду с продвинутым освещением, Unity имеет встроенный физический движок, поэтому персонаж и камера больше не проваливаются сквозь стены, как это было в старой версии.
Поскольку в игре придется много бегать, игрок будет вынужден постоянно смотреть на зацикленную анимацию бега персонажа, что не очень-то увлекательно. Для решения этой проблемы мне хотелось реализовать такую анимацию, которая бы адаптировалась к поверхности земли или пола. Например, если персонаж бежит в гору, то он должен ставить ноги в соответствии с углом наклона поверхности. По сути необходимо было корректировать анимацию бега в реальном времени так, чтобы ступни ставились четко на поверхность, не проваливаясь сквозь нее. Задача, мягко говоря, не из легких. Но к счастью, Unity предоставляет огромную свободу действий при работе со скелетной анимацией. Об этом я и мечтать не мог во времена Blitz3D!
После множества неудачных попыток, мне все же удалось получить некое подобие полупроцедурной анимации бега. В момент, когда персонаж заносит ногу вперед, производится raycast из ступни вниз и в точке пересечения с землей ставится ее IKGoal. Далее с помощью заранее настроенных кривых (weight curves), вес анимации плавно снижается, тем самым перемещая ногу к фиксированной на земле точке IKGoal. И там она остается до тех пор, пока согласно анимации, персонаж не оторвет ногу от земли и не занесет ее назад. В этот момент, опять же с помощью кривых, вес анимации плавно возрастает, возвращая ногу в полностью анимированное состояние. Аналогичным способом контролируется и вторая нога. Разумеется результат не идеален и еще требует доработки. Но даже в таком варианте, процесс бега выглядит гораздо более живо и интересно, нежели стандартная зацикленная анимация. Похожим методом я позже сделал адаптивную idle-анимацию (стойку на месте). Теперь ниндзя мог принимать эпичную стойку, поставив ногу на холм и устремив взор за горизонт.
Ninja At The Top image
После этого я решил пойти еще дальше и реализовать адаптивный бег по лестницам! Расчет положения ног практически идентичен бегу по неровностям, лишь с некоторыми дополнительными проверками положения ступни.
Вот, что из этого получилось:

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

Очень важным аспектом геймплея является падение с большой высоты. Локации построены так, что оно будет происходить довольно часто. Поэтому анимация падения должна выглядеть эффектно, чтобы каждый раз за ней было интересно наблюдать. В версии на Blitz3D это было реализовано довольно примитивно: зацикленная анимация падения сменяется анимацией удара об землю при столкновении с какой-либо поверхностью. Но в Unity есть встроенный физический движок, а значит и поддержка ragdoll, которая позволяет существенно улучшить взаимодействие тела с окружением. Прыжок в игре я сделал так, что направление движения персонажа можно менять в воздухе. Но если время падения превышает определенный лимит, персонаж переходит в неуправляемое состояние ragdoll'а. При этом когда в полете персонаж ударяется о различные выступы, я добавил всплески крови. В результате получилось очень эффектное падение, за которым интересно наблюдать. Однако возникла одна загвоздка. Она заключается в необходимости перехода персонажа из состояния ragdoll к анимации. В этом кроется еще одна важная часть геймплея - ниндзя не умирает после падения с большой высоты, а поднимается и продолжает игру в обычном режиме.
Я сделал две анимации подъема из лежачего состояния в idle-позу в зависимости от положения тела персонажа после симуляции ragdoll. Но проблема в том, что анимация начинается с определенной фиксированной позы, а положение частей тела ей явно не соответствует, потому что симуляция ragdoll каждый раз заканчивается соверешенно непредсказуемо. Необходимо было сделать плавный переход от ragdoll-позы к стартовой позе анимации подъема. Пришлось изучить немало документации и различных статей. Оказалось, что нужного мне эффекта можно достичь, используя функции LateUpdate() и Quaternion.Slerp для плавного вращения частей тела между двумя ключевыми положениями. Результат оказался вполне удачным. Ninja At The Top image

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

И в заключение немного геймплея:

Пока полноценная локация еще в разработке, представляю вашему вниманию небольшое техно-демо с демонстрацией основных возможностей персонажа. Скачать его можно по ссылке ниже.
Управление: w,a,s,d - передвижение, пробел - прыжок, мышь - управление камерой.



Дата релиза: TBD Платформа: PC


Screenshot preview
  • Screenshot-1
  • Screenshot-2
  • Screenshot-3
  • Screenshot-4
  • Screenshot-5
  • Screenshot-6

<< Предыдущая игра



Комментарии

Зарегистрируйтесь, чтобы оставить комментарий.