King, Witch and Dragon. DevLog #6

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

В атаку!

Персонаж может атаковать из трёх основных состояний:

  • на земле
  • в воздухе
  • на стене или потолке

Атака на земле

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

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

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

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

Атака в воздухе

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

Атака на стене и потолке

Когда персонаж находится на стене или потолке ситуация обстоит немного иначе.

Во время движения с помощью паучьих лап, персонаж всегда повёрнут лицом к камере, независимо от того, в каком направлении он движется.

Персонаж может атаковать в четырёх направлениях - влево, вправо, вверх и вниз, но при условии, что в этом направлении нет стены или потолка. Также в этом состоянии персонаж не может совершать комбо и вседа вынужден возвращаться в нейтральное положение, поэтому время между атаками больше, чем на земле или в воздухе.

Контекстные анимации

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

Парение на крыльях летучей мыши

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

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

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

Скольжение по крутому склону

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

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

Карабканье на уступ

В некоторых платформерах очень раздражает, когда персонаж чуть-чуть не долетает до платформы, врезается в неё большим пальцем левой ноги и с грустным видом падает вниз.

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

Смерть и возрождение

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

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

Смерть
Возрождение

Кстати, крысы - это частицы (партиклы, particles), анимированные шейдером. Никакого скелета и ключевых кадров, только шейдер, только хардкор.

Я написал подробную статью о том, как создать подобный шейдер и как с его помощью анимировать простых существ.

Твит со ссылкой на англоязычный туториал завирусился (ну, относительно остальных моих твитов) и его даже ретвитнул официальный аккаунт Unity. Такие дела...

Achievement unlocked
Achievement unlocked

Итого

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

  • персонаж имеет в сумме 52 анимации, включая основные анимации, вариации для наклонных поверхностей, additive и override анимации
King, Witch and Dragon. DevLog #6

Animator Controller помимо основного слоя имеет:

  • 3 саб-стейт машины
  • 25 стейтов
  • 11 Blend Trees
  • 24 параметра для контроля переходов между стейтами

Скрипт MainCharacterAnimations.cs содержит 574 строки кода.

В общем, было весело.

Что дальше?

Я, скорее всего, еще вернусь к анимациям, но когда будет больше контекста. Сейчас я планирую переключиться на что-то другое (я и так потратил на эти анимации гораздо больше времени, чем планировал). В ближайших планах у меня:

  • концепт-арт основных локаций и окружения
  • блокинг тестового уровня по принципу "антивании", чтобы его можно было пройти любой комбинацией способностей
  • создание FX'ов для персонажа

Я еще не решил, чем именно займусь, но это будет что-то из этого списка.

Чтобы поддержать разработку игры, добавляйте King, Witch and Dragon в вишлист на Steam. Чтобы принять участие в обсуждении, вступайте в группу ВК, а также подписывайтесь на меня в Twitter и Instagram.

Спасибо за внимание!

8383
31 комментарий

 Хоть в игре ещё нет врагов и некому убивать персонажа, я сделал анимации смерти и возрождения.

Мне в каждом твоем девлоге хочется возмущаться на эту тему) Приоритеты, по-моему, выбраны очень странно.

 блокинг тестового уровня по принципу "антивании", чтобы его можно было пройти любой комбинацией способностей

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

15
Ответить

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

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

Теперь, когда анимации готовы, я склоняюсь именно к блокингу тестового уровня и созданию базовых врагов (пока что без визуала).

9
Ответить

Ну не знаю, есть в этом подходе что-то уникальное. Вроде разраб Принца так же начинал разработку. К тому же всегда можно просто повесить эти анимации на босса.

4
Ответить

Попробуй к анимациям атаки прибавлять шаг вперёд или хот как-то заставить персонажа работать ногами. Без этого выглядит ну очень деревянно. У тебя меч даже за ногу толком не выходит. Очень мало места для удара. Из-за этого нет ощущения силы удара, ну и потом, дальше могут возникнуть проблемы, что игроков начнет бесить то, что меч не дотягивается до врагов, когда они прожимают атаку.. Особенно на паучьих ногах это заметно.
Как референс - Dark Souls 3. Там в анимацияж заложен мощнейший импакт. И да. Там каждая анимация - это один шаг вперёд.

2
Ответить

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

1
Ответить

Браво, гениальная работа! 

2
Ответить

Наконец-то я могу прокоментировать пост, а то до этого все было в инди. Выглядит все супер потрясно, кроме рендера гифок (лел)). Но уже ппц как охота увидеть все это в работе. К слову, а собсно почему не сделать боссами животных чьими способностями владеет персонаж? Убиваешь огромную змею и лишаешься ее способности. Заодно можно прикрутить сюда борьбу со своими внутренними демонами.

1
Ответить