Секреты ИИ скелетов и акул в Sea of Thieves — часть вторая

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


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

Автор блога AI and Games Томми Томпсон на сайте Gamasutra опубликовал вторую часть своего разбора работы ИИ в Sea of Thieves. В этом тексте он рассказал про навигационную систему, которая позволяет акулам передвигаться в воде, а также раскрыл подробности работы ИИ скелетов. Мы выбрали из материала главное.

Один из типов миссий в игре представляет собой охоту за головами особых скелетов. Чтобы всё работало как надо, скелеты должны появляться в мире только при необходимости. Тем не менее они же могут появляться и во время выполнения миссии другого типа.

Обычно их работа определяется парадигмой ИИ, которая называется деревом поведения. Этот инструмент по умолчанию встроен в Unreal Engine 4. Деревья поведения допускают ветвление логики, поэтому ИИ будет по-разному реагировать на соответствующие условия. Кроме того, они могут быстро реагировать на изменения в мире и обновлять своё поведение в соответствии с предпочтениями.

Многие из наземных ИИ-персонажей (такие как скелеты и животные на островах) используют оригинальный встроенный инструментарий ИИ. Но в Sea of Thieves скелеты устроены несколько сложнее.

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

Если пользователь хочет исцелиться в Sea of Thieves, он откроет инвентарь, возьмёт банан, а затем нажмёт на кнопку «съесть», которая запустит функцию Heal() в кодовой базе для игроков-людей. Обычно, чтобы персонаж ИИ, например, скелет, делал то же самое, можно просто запустить ту же функцию Heal() и убедиться, что используется соответствующая анимация, чтобы игроки могли понять, что происходит.

Оказалось, что в Sea of Thieves всё работает несколько иначе — скелеты имитируют вводные сигналы игрока. Таким образом, вместо того, чтобы просто вызывать определённое поведение кода, они нажимают виртуальные эквиваленты кнопок и эффективно «играют» в игру, как люди. Кроме того, скелеты используют тот же базовый контроллер, что и игрок-человек, то есть они применяют не только некоторые анимации пользователей, но и интерфейс ввода.

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

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

Но более важно, что это помогает упростить тестирование ИИ-скелета, поскольку, если он делает то, что игрок не может, то это значит, что что-то пошло не так. Но теоретически это также означает, что если для игрока добавится новая игровая механика, то и скелеты впоследствии смогут её использовать.

Авторы игры объяснили, что у команды, ответственной за геймплей, есть небольшое «задание», которое они дают новым разработчикам, чтобы помочь им разобраться с цепочкой инструментов. Её суть заключается в том, что им необходимо создать «группу Мариачи», в которой несколько скелетов должны собраться вместе, вытащить свои инструменты и начать исполнять песню.

Всё поведение ИИ управляется на стороне сервера — это обеспечивает игрокам на каждом устройстве одинаковый опыт взаимодействия. Но существует проблема баланса, которая решается с помощью систем, обеспечивающих масштабирование скелетов. Варьируется не только поведение и базовые параметры игрового процесса, такие как очки жизни и доступное оружие, но и типы врагов: скелеты Overgrown, Shadow и Gold вынуждают игроков смешивать стили игры, чтобы победить их.

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

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

Кроме скелетов острова населяют разнообразные животные. Они тоже используют деревья поведения, и хотя их архитектура в значительной степени похожа на скелетов, их масштаб значительно меньше: змеи нападают на игрока, если он находится поблизости, а свиньи и куры просто убегают.

С точки зрения геймдизайна, задача акул состоит в том, чтобы создать в воде дополнительный уровень испытаний. Они работают только на небольшом расстоянии и появляются в случае необходимости. Это означает, что пользователь не просто натыкается на акулу, плавающую по морям в открытом мире, а фактически заставляет акулу телепортироваться куда-то поблизости.

Несмотря на то, что деревья поведения акул относительно просты, есть две проблемы, которые необходимо решить. Первая большая проблема — навигация. Обычно для этого используется навигационная сетка для движения на статичной поверхности. Это хорошо работает на земле для таких персонажей, как скелеты, учитывая, что она является двухмерной поверхностью, которая моделирует движение в трёхмерном пространстве.

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

Для этого авторы разработали навигационную систему, которая интегрирована в существующую навигационную среду в Unreal Engine, но предназначена специально для подводного движения. Но прежде чем они смогли это сделать, возникла вторая проблема проектирования, которую необходимо было решить — акула не может перестать двигаться.

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

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

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

Много усилий вкладывается в скорость поворота акул. Она ограничена таким образом, чтобы акулы не могли поворачивать слишком резко на высокой скорости. Если акуле необходимо сделать точный корректирующий поворот, она замедлится, но никогда не остановится.

Всё это в значительной степени предполагает движение в 2D-пространстве, что означает, что игрок и акула должны находиться на одной глубине в воде. В случае, если они не выстраиваются в линию, акула формирует те же пути, что и обычно, но генерирует простую кривую Безье, которая позволяет ей плавать вверх или вниз на нужную глубину.

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

Даже самые простые ИИ-персонажи, необходимые для ААА-игр, могут оказаться проблемой. Это же касается и простых существ, которые плавают в воде. Тем не менее для каждой проблемы можно найти своё решение.


Источник: dtf.ru

Комментарии: