Как 10 раз переделать AI в игре и наконец успокоиться? (Дневник разработки рогалика)
Или, как понять, что чем проще, тем лучше.
Всем привет. Продолжаем пилить шутер-рогалик от третьего лица.
Более подробно об игре можете прочитать в предыдущем девлоге тут.
Если говорить кратко, то за последние 2 недели мы сделали много всего, но пока не успели собрать это все воедино.
Искусственный "интеллект" мобов
Сейчас у нас 2 моба, один ближнего боя, второй дальнего. <br>Моб дальнего боя в целом работает довольно просто и с ним почти нет проблем, f вот моба ближнего боя мы изначально пытались сделать сложным, добавить взаимодействия и т.д. Вот так должен был работать:
Видит игрока
Сообщает другим мобам об игрока
Проверяет, что вокруг игрока не находятся больше N врагов - если находится, то бегает вокруг игрока
Если нет, то постепенно приближается к игроку (Выбирает случайную точку между собой и игроком и бежит к ней)
Атакует игрока случайной атакой
Вроде все 5 пунктов, но в каждом куча условий и действий.
В целом проблемы такие:
Использовали CrowdController в UE, благодаря которому AI должны красиво оббегать друг друга и окружать игрока, но по какой-то причине мобы постоянно дергались вместо нормальных поворотов.
Враги, которые бегали вокруг игрока, пока другие атакуют выглядели неестественно и требовали более точной настройки + когда персонаж двигался нужно было постоянно обновлять количество врагов, которые атаковали его в текущий момент. <br>Возможно мы реализуем это позже для более "умных" противников
Постепенной перемещение к игроку так же выглядит странновато - когда враг бежит на игрока и резко останавливается, то это выглядит, как баг.<br>Тут можно попробовать настроить точки так, чтобы враги пытались заходить с флангов.
Теперь AI работает гораздо проще - видит игрока -> бежит -> атакует.
Только логика атаки стала чуть сложнее, вместо случайной анимации выбирается набор из анимаций - комбо, которые проигрываются последовательно.
Сейчас мобы работаю вот так
Да, они толкают и застревают друг в друге, но если не перебарщивать с количеством врагов, то думаю это не так критично будет.
Возможно стоит добавить атаку в движении т.к. сейчас от них легко убежать (или даже упрыгать), но посмотрим, как это будет работать на локации вместе с другими врагами.
Шейдеры
Накатили шейдеры (спасибо нашему левел дизайнеру), чтобы не запариваться над детализацией моделей.
На кубиках и манекенах - обводка, cell shader, toon shader, на полу и стенах только toon shader
Уровень
Теперь у нас есть блокаут первого уровня, на котором можно тестить полноценно геймплей. В идеале хотим сделать генерацию уровней, чтобы увеличить реиграбельность рогалика.
Улучшение оружия
Наконец-то сделали логику улучшения оружия. В игре будут артефакты, которые можно будет вставлять в оружие и менять характеристики, как в Noita с жезлами.
Пока что срабатывает на оверлап с игроком, потом переделаем, чтобы можно было управлять артефактами через инвентарь.
Для примера сделал 3 улучшалки:
синяя - увеличивает скорость стрельбы и перезарядки;
серая - увеличивает скорость стрельбы и урон;
оранжевая - добавляет дополнительную пулю при выстреле
Что дальше?
А дальше собирать то, что есть воедино, тестить, править баги...
Если было интересно читать, то ставьте лайки и подписывайтесь с: