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.
Спасибо за внимание!
Что визуально, что по механикам очень круто сделано. Удачи в дальнейшей работе!
Спасибо!
Че за хуйня? Чего его вперед толкает? Он даже ногами не шевелит.
Ощущение, что эту хуйню делают, просто чтобы игрокам усложнить жизнь на ровном месте, чтобы в пропасть на шипы какие-нибудь уебаться.
думаю ноги просто еще не анимированы и тут демонстрируется только сам эффект
Мне кажется логичным. Предполагается, что удар нанесен с большой силой или чем-то тяжелым. Если представить, что этот шарик весит 20 кг, то всё выглядит именно так, как должно быть.
Круто!
Всё-таки дальше хотелось бы посмотреть на врагов и их поведение.
Потому что на одних эффектах далеко не уедешь :)