OVERGUN: DEVLog1

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

Геймплей с новыми роботами

Legacy

OVERGUN: DEVLog1

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

OVERGUN: DEVLog1

Долго время в игре было всего 4 робота. Подрывник, дрон, турель, и робот с пулемётами. Получились у меня они максимально коряво. Спавн новых и уничтожение старых заметно фризил игру несмотря на использование пула. Анимации были без использования костей. Коллизия слишком детальная, чего как бы не нужно. Плюс архитектура кода самих ботов оставляла желать лучшего. В общем, выглядело это как сборная солянка костылей. Стало понятно что переделка не обходима, если я хочу вообще зарелизиться. 4 робота на всю игру это совсем ни о чём, а добавлять новые по старой схеме просто смысла нет и занимает много времени.

OVERGUN: DEVLog1
OVERGUN: DEVLog1
OVERGUN: DEVLog1

Переделка

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

Робот ремонтник
Робот ремонтник

Редизайн

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

OVERGUN: DEVLog1
OVERGUN: DEVLog1

Добавил и не мало новых роботов. Некоторые из них:

OVERGUN: DEVLog1

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

OVERGUN: DEVLog1

Летающая мина. Атакует только когда игрок находится рядом. Летит на него и рядом взрывается.

OVERGUN: DEVLog1

Код

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

Индикаторы подрывников.
Индикаторы подрывников.

Имитация деятельности

Ещё когда были старые роботы, пришлось лепить систему которая их куда ни будь отправляла, и решала когда и кто атакует. В этой системе есть параметр который отвечает за количество атакующих. Для разных сложностей разное количество, для normal’а = 4. В тот момент, когда 4 робота из всей толпы атакует игрока, остальные делают вид бурной деятельности :) Они просто перемещаются от точки к точке, которые раскиданы по арене. Те кто не атакует выбирает точки для маршрута которые находятся максимально далеко от игрока. Точки которые ближе всего к игроку используют роботы которые атакуют СЕЙЧАС. Пересчёт дистанции и выборка атакующих роботов производится раз в секунду.

OVERGUN: DEVLog1

Способ выборки атакующих

Для выборки я использовал концепцию Utility AI. Суть её заключается в том что каждое действие которое имеет в себе Агент ИИ, набирает очки, в зависимости от обстоятельств. Действие которые набрало больше всего очков - выполняется. По такому принципу рассчитываются атакующие роботы. Каждый параметр: расстояние до игрока, видит ли игрок робота, целится ли он в него, наносит ли он ему урон - конвертируются в очки. Такую систему очень удобно балансировать с помощью кривых. Коэффициенты очков можно настраивать отдельно для каждого типа, исходя из его особенностей. Например для роботов которые взрываются, коэффициенты чуть ниже остальных, потому что атака у них не прямая как у стреляющих. Подрывник может пробегать мимо игрока просто к точке по маршруту, и при этом взорваться ему никто не помещает, несмотря на то что его нет в списке атакующих в этот момент. А для робота с дробовиком и щитом самый высокий коэффициент на параметр дистанции, потому что смысл от дробовика будет только если игрок находится близко.

OVERGUN: DEVLog1

Неочевидная проблема

Все локации которые я уже сделал, хоть их и не много готовых, отправились в топку. Причина этому что старый дизайн сковывает движения ИИ и игрока. Сейчас локации кажутся очень тесными. Пространство нужно увеличивать как минимум раза в два. Поэтому приходится сейчас делать перепланировку того что уже есть, а при создании будущих локациях, уже буду учитывать это. Радует хотя бы то что ассеты локаций мне переделывать не придётся :)

P.S Скоро наконец будет страница в steam

Следить за игрой:

127127
13 комментариев

Модели роботов отличные

13

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

10

Благодарю

1

Комментарий недоступен

5

если это арена, помимо мелких ботов, гигантские разрушаемые боссы будут?

2

Только боссы.

2