King, Witch and Dragon. DevLog #9

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

Пришло время заняться боевой системой.

Подчищаем хвосты

Я начал продумывать, какую именно логику мне нужно реализовать и что мне для этого нужно.

Важным моментом в любой боевой системе является получение урона, которое приводит к смерти персонажа. У меня уже были заранее сделаны анимации смерти и возрождения.

О том как создавались эффекты для этих анимаций я написал отдельную статью.

Но тут я осознал, что у меня нет анимаций для получения урона. Я решил исправить это досадное недоразумение.

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

В итоге я сделал 2 анимации:

  • получение урона спереди
  • получение урона со спины

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

Логика атаки

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

Так как моя игра не подразумевает реализм, а делает упор на резкое, отзывчивое управление, я решил остановиться на методе с hit scan'ами.

Хорошей отправной точкой для тех, кто хочет погрузиться в эту тему, может стать видео Brackeys:

В видео показана самая простая реализация с одним хит-сканом и встроенной 2D-физикой Unity.

Для себя я сделал чуть более сложный вариант этой системы:

  • У меня используется 3D-физика.
  • У персонажа есть несколько направлений атак, каждая из которых имеет свою дальность.
  • Пришлось реализовать корректировку положения хит-сканов, когда персонаж находится на склоне.
  • У меня привычка выносить параметры в ScriptableObject и не держать их на префабе, если для этого нет серьёзной причины.

В итоге хит-сканы персонажа выглядят вот так:

Наводим красоту

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

  • Он придаёт сочности атаки и лучше читается при резком движении.
  • Он более чётко обозначает зону поражения.
  • Треил может быть визуально длиннее меча и тем самым увеличивать зону поражения (расположение и размер хит-сканов), не влияя при этом на размер и пропорции меча и персонажа.

Мой предыдущий эффект с крысами привлёк много внимания и получил хорошую огласку, поэтому в качестве исключения я решил сделать ещё и эффект трейла меча.

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

В данном случае такой точкой послужило видео Hovl Studio о создании эффекта трейла.

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

Главная моя претензия к эффекту из видео, это то, что там на каждый чих используется текстура. Вливать 4 тектстуры в трейл для меня непозволительная роскошь, поэтому я переделал шейдер, чтобы он вообще не использовал текстур. Вместо этого используется 2 слоя voronoi noise и dissolve с жесткими краями для темной части и с мягкими границами для свечения.

Также, в качестве follow-up частиц я использовал вороньи перья, которые разлетаются и плавно опадают при каждом взмахе. Те, кто следит за разработкой с самого начала должны помнить, что меч персонажа получен от ведьмы и называется "Коготь". Меч декорирован вороньими перьями. Отсюда и такие частицы.

В целом, видео от Hovl Studio всё равно оказалось достаточно полезным и я почерпнул оттуда много интересного. В русскоязычном сегменте это один из лучших каналов по игровым VFX, так что всем, кто интересуется этой темой, советую подписаться.

Области применение атаки

Враги

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

Прожектайлы

Гораздо интереснее история обстоит с прожектайлами.

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

  • Никак. Эти прожектайлы полностью игнорируют атаки игрока.
  • Уничтожаются. Такой прожектайл можно "убить" любой атакой (включая способность "бросок змеи").
  • Зеркальное отражение. Прожектайл отражается и летит в противоположном направлении, зачастую в того, кто этот прожектайл запустил.
  • Перенаправление в сторону атаки. Прожектайл меняет направление движения в зависимости от того, какой атакой он был отражён. Например, если атака была направлена вверх, он полетит вверх.

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

Зеркальное отражение

Перенаправление

С помощью таких механик можно создавать головоломки, связанные с окружением и также использовать в босс-файтах. Аналогичный подход используется в Ori со способностью Bash и многие считают это одной из лучших механик в этой игре.

Окружение

Помимо банального разбивания некоторых препятствий я реализовал ещё и pogo-jump (Shovel Knight, Hollow Knight), который позволяет с помощью атаки, направленной вниз, отскакивать от шипов, врагов, прожектайлов и прочих опасностей. В Hollow Knight при этом ещё проиходит ресет способностей и их можно использовать повторно, не приземляясь. Это тоже у меня реализовано.

Что дальше?

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

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

Так что следующий пост будет полностью посвящён стилизованным визуальным эффектам и процессу их создания.

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

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

195195
40 комментариев

Что визуально, что по механикам очень круто сделано. Удачи в дальнейшей работе!

18
Ответить

Спасибо!

1
Ответить

Че за хуйня? Чего его вперед толкает? Он даже ногами не шевелит.

16
Ответить

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

7
Ответить

думаю ноги просто еще не анимированы и тут демонстрируется только сам эффект  

1
Ответить

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

Ответить

Круто!
Всё-таки дальше хотелось бы посмотреть на врагов и их поведение.
Потому что на одних эффектах далеко не уедешь :)

5
Ответить