OVERGUN: DEVLog1

Автор: Nil Efremenkov

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

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


Legacy

OVERGUN: DEVLog1 Инди, Инди игра, Gamedev, Разработка, Видеоигра, Шутер, Дневник разработки, Видео, Длиннопост

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

OVERGUN: DEVLog1 Инди, Инди игра, Gamedev, Разработка, Видеоигра, Шутер, Дневник разработки, Видео, Длиннопост

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

OVERGUN: DEVLog1 Инди, Инди игра, Gamedev, Разработка, Видеоигра, Шутер, Дневник разработки, Видео, Длиннопост
OVERGUN: DEVLog1 Инди, Инди игра, Gamedev, Разработка, Видеоигра, Шутер, Дневник разработки, Видео, Длиннопост
OVERGUN: DEVLog1 Инди, Инди игра, Gamedev, Разработка, Видеоигра, Шутер, Дневник разработки, Видео, Длиннопост

Переделка


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

OVERGUN: DEVLog1 Инди, Инди игра, Gamedev, Разработка, Видеоигра, Шутер, Дневник разработки, Видео, Длиннопост

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


Редизайн


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

OVERGUN: DEVLog1 Инди, Инди игра, Gamedev, Разработка, Видеоигра, Шутер, Дневник разработки, Видео, Длиннопост
OVERGUN: DEVLog1 Инди, Инди игра, Gamedev, Разработка, Видеоигра, Шутер, Дневник разработки, Видео, Длиннопост

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

OVERGUN: DEVLog1 Инди, Инди игра, Gamedev, Разработка, Видеоигра, Шутер, Дневник разработки, Видео, Длиннопост

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

OVERGUN: DEVLog1 Инди, Инди игра, Gamedev, Разработка, Видеоигра, Шутер, Дневник разработки, Видео, Длиннопост

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

OVERGUN: DEVLog1 Инди, Инди игра, Gamedev, Разработка, Видеоигра, Шутер, Дневник разработки, Видео, Длиннопост

Код


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

OVERGUN: DEVLog1 Инди, Инди игра, Gamedev, Разработка, Видеоигра, Шутер, Дневник разработки, Видео, Длиннопост

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


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


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

OVERGUN: DEVLog1 Инди, Инди игра, Gamedev, Разработка, Видеоигра, Шутер, Дневник разработки, Видео, Длиннопост

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


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

OVERGUN: DEVLog1 Инди, Инди игра, Gamedev, Разработка, Видеоигра, Шутер, Дневник разработки, Видео, Длиннопост

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


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


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


Следить за игрой можно в группе вконтакте

Источник

Лига Геймеров

45.1K постов89.1K подписчика

Добавить пост

Правила сообщества

Ничто не истинно, все дозволено, кроме политоты, за нее пермач, идите на ютуб
Помни!
- Новостные/информационные публикации постим в pikabu GAMES
- Развлекательный контент в Лигу Геймеров



Нельзя:

Попрошайничать;

Рекламировать;

Оскорблять участников сообщества;

Нельзя оценивать Toki Tori ниже чем на 10 баллов из 10;

Выкладывать ваши кулвидосы с только что зареганных акков - пермач