NPC в играх

NPC в играх

Всем привет. Был в разъездах, аж руки чешутся что-то написать.

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

Интеллект NPC, обширная тема. По этому пройдусь по верхам, и применительно к UE проектам.

У каждого персонажа, да же у главного героя, есть свой контроллер. Само собой, работа контроллера игрока включает в себя правила взаимодействия с его аватаром. Но нас интересует контроллер NPC.

И что же тут интересного?

Вообще много. Простую логику, (по типу: пойди туда, остановись здесь, если встретился со стеной, повернись) выполняют в классе бота или его контроллера.

NPC в играх

Но сложную логику. На пример поведение при стрельбе, потом поиске персонажа, за тем патрулировании. Разделяют на небольшие задачи. По принципу. Найди врага-> передай его координаты. Подойди к координатам -> ударь. И так далее.

И как же нам, а точнее боту, понять. Какую задачу выполнять?

Для этого существуют диспетчеры задач. В UE он называется Дерево поведения (Behavior tree). Оно выполнено в графическом исполнении, что сильно облегчает отладку и понимание процессов.

Вот такое оно может быть ветвистое для выполнения стандартных задач.
Вот такое оно может быть ветвистое для выполнения стандартных задач.

Давайте рассмотрим ветку атаки.

NPC в играх

Задачи читаются лева направо:

Если нашел цель: сфокусируйся на ней, остановись, очисть лишние значения (переменные, которые были нужны для других дел), немного подожди, и начни стрелять.

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

Если успеха не достиг: подожди 5 секунд, забудь обо всем, перейди в режим поиска

Помните эти слова? "Да плевать кто там был"
Помните эти слова? "Да плевать кто там был"

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

На пример, для нашего проекта мне пришлось прописывать кастомную логику для зрения.

NPC в играх

Когда NPC видит противника, он пускает лучи к 6 ключевым точкам цели, тем самым определяет: полностью виден объект, или частично за укрытием. И от этого уже рассчитывается, время обнаружения, и координаты, куда полетят пули.

Со слухом все так же не просто. Бот не слышит, у него нет ушей. Да и многие звуки ему не нужны. И по этому мы "пришиваем" источники звука. При ходьбе, стрельбе, взрыве гранат. Задаем ему радиус и тег. На пример у шагов один тег, у стрельбы другой. И бот реагирует на них по разному. Либо вальяжно тащится к точке, где слышал шум. Либо несется туда сломя голову.

NPC в играх

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

Вот небольшая зарисовка о действии наших ботов, в дневнике

Больше информации о нашем проекте, а так же по геймдев тематике ты найдешь в нашем профиле. Заходи, читай, смотри.

Благодарю, что прочел эту статью!

Буду рад, если напишешь, какие боты тебя поражали своим интеллектом, возможно возьмем на заметку твой референс.

3
5 комментариев