12/10/2018

Боевая система в играх от третьего лица: удары

Меня зовут Марат Сафиуллин, я руководитель и геймдизайнер команды Corner Bros Studiо. Сейчас мы заканчиваем разработку проекта Mortido — это такая мрачная action-adventure, фактически — даже слэшер. Естественно, в ходе разработки нам приходилось решать большое количество разнообразных задач. Зачастую — методом проб и ошибок. Хочу поделиться накопленным опытом — возможно, он будет кому-то полезен и упростит разработку.

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

Логично начать с демонстрации того, как примерно выглядит боевка в Mortido. Короткий монтаж избиения противников в поздней альфе:
 


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

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

Наверное, нам кажется, что это будет выглядеть примерно так:
 

 

Но зачастую, если ранее вы не сталкивались с разработкой боевой механики для игр от третьего лица, на самом деле это будет выглядеть как-то так:
 

 

Чего же нам не хватает? Первым делом, очевидно, нужно добавить след от взмаха оружия:
 

 

Выглядит немного приятнее, но этого явно мало. Добавим замедление времени на доли секунды (в нашем случае — 0,1 сек) в момент попадания оружия по сопернику и немного тряски камеры. Это придаст эффект того, что игрок, ударяя соперника, будет "чувствовать", что попал оружием по врагу.
 


Уже смотрится динамично. Добавим эффект частиц попадания по сопернику — как будто мы ударили его, и это визуально отобразилось:
 


Важный момент, про который многие забывают — наличие пауз после удара. Если вы играли в слэшеры, да хоть в тот же Devil May Cry, наверняка заметили, как легко там проводить комбинации ударов: за каждым ударом идет еще одна связка. Это возможно лишь в том случае, если мы вносим в анимации задержку после удара. Например, мы ее используем как гашение инерции от сильного взмаха:
 


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

Теперь займемся соперником. Вам не кажется, что он слишком статично стоит и не реагирует на наши удары? Нужна "отдача". У каждого соперника, в зависимости от его ИИ, отдачу нужно подбирать индивидуально (этот разговор претендует на отдельную статью, но я постараюсь кратко описать на базовом уровне). Да, речь пойдет именно о реакции соперника на входящий урон — враг будет изображать, насколько тяжелый у вашего персонажа удар.

Здесь я бы выделил два момента:

  1. Отдачи можно делать анимацией с рут-костью. В этом случае соперник будет отодвигаться от каждого входящего удара, тем самым мы имитируем сильную инерцию. Надо понимать, что в этом случае противник "уходит" от игрока, поэтому игроку тоже необходимо добавить движение по рут-кости.


  2. Либо мы делаем простую отдачу на месте. Например, враг будет запрокидывать голову или немного наклоняться.


Давайте рассмотрим эти два варианта:
 


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

Кроме того, в динамике немаловажную роль играет камера. В первую очередь, это касается эффекта тряски. Именно он дает максимальный эффект ощущения попадания по врагу. При этом не оставляйте камеру в одном и том же положении. Она должна следовать за телом персонажа. Если он пригибается во время удара, камера тоже должна опуститься. А потом подняться. Это касается не только ударов, но дает интересный эффект для таких действий, как приземление после прыжка или падение от удара.

Recent Posts

Создание короткого фильма на UE4

21/03/2019
Команда студентов подробно рассказывает о создании короткого фильма исключительно средствами движка UE4.

Дизайн окружения для игр ААА-класса

20/03/2019
Лори Дюран рассказывает об участии в разработке For Honor и делится полезными советами для тех, кто хочет изучить искусство создания окружающей среды.

Создание сцены мультяшного побережья в UE4

19/03/2019
Дэсмонд Ман рассказывает о создании Real-Time Games Environment в UE4 и стилизованном искусстве в целом.