Подходы к моделированию поведения неигровых персонажей


Введение


    Моделирование поведения неигровых персонажей весьма актуально в современной разработке компьютерных игр. Разработчики в зависимости от задач и проекта используют разные подходы к искусственному интеллекту. Так в компьютерной науке появилась концепция агентов. Агент – это некая сущность, способная распознавать свою среду и выполнять действия над ней. Главное отличие агента от обычной программы состоит в том, что первый должен быть автономным в исполнении своей логики, то есть без прямого вмешательства человека. Агенты можно разделить на обучаемые и необучаемые. Первый тип требует обучения для хорошей работы, адаптирует текущее поведение с учетом прошлого опыта и со временем развивается. Вся логика второго типа агентов описана в программном коде. Такой агент невосприимчив к обучению и не может подстраиваться под изменяющиеся правила окружающего мира. Рассмотрим одни из популярных подходов к моделированию поведения агентов.

Конечный автомат


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

Дерево поведения


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

Поведение на основе машинного обучения


    В разработке игр не было популярным применять технологии машинного обучения для создания поведения неигровых персонажей, но с развитием глубокого обучения нейронных сетей этот подход стал набирать популярность для создания необычной, сложной логики. Так разработчики игрового платформы Unity внедрили возможность обучения интеллектуальных агентов с помощью сочетания глубокого обучения с подкреплением и имитационного обучения. Для обучения мы фиксируем награды и штрафы за определенные действия, чтобы добиться желаемой логики. В данном методе агент пытается выработать такую линию поведения, которая доводит до максимума суммарную награду. Он старается избегать решений, способных дать штраф, и наоборот стремиться к тем, которые приносят больше награды. Если дать достаточно времени для обучения модели, то ее поведение будет очень эффективным и способным соперничать с самим игроком, давая новый игровой опыт последнему. Среда Unity дает доступ к уже готовому API для обучения своих агентов с предопределенной моделью нейронной сети. Но стоит отметить, что плагин с ml-агентами имеет открытый исходный код, который можно изменять под свои цели.

Заключение

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