Разработка интерактивного агента компьютерной игры
Анализ как один из основных этапов разработки программного обеспечения. Реалистичность поведения агента - основной фактор, от которого напрямую зависит вовлеченность игрока и время геймплея. Описание диаграммы прецедентов для интерактивного агента.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 01.09.2017 |
Размер файла | 787,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
Введение
Проблема создания иллюзии интеллектуального поведения интерактивных агентов стоит еще со времен появления первых однопользовательских игр. За последние 30 лет игровая индустрия достигла значительного прогресса, в основном благодаря увеличению вычислительных ресурсов. Но проблема создания иллюзии интеллектуальности так и не была решена. Несмотря на значительные достижения в области графики или физических движков, в основном алгоритмы и подходы к разработке интерактивных агентов не изменились.
Объектом исследования данной работы выступает интерактивный агент. Предметом исследования является реализация интерактивного агента на основе дерева поведения.
Целью работы является создание интерактивного агента для игры “Exoplanet: first Contact”, реагирующего на внешние воздействия в пределах заданных сценариев. Для достижения этой цели необходимо выполнить следующие задачи:
1. Изучить систему, которая уже на данный момент имеется в игре. Выявить ее недостатки, построить модель “AS IS”.
2. Изучить подходы к разработке интерактивных агентов, основные алгоритмы, использующиеся в разработке. Выбрать наиболее подходящие алгоритмы для решения задачи.
3. Спроектировать новую систему используя средства объектно-ориентированного проектирования.
4. Реализовать систему с использованием скриптового языка LUA.
Со времен появления первых интерактивных агентов алгоритмы и способы реализации интерактивных агентов не претерпели существенных изменений. Повышение качества интерактивных агентов в современных играх обусловлено, в основном, увеличением количества состояний в которых может находится агент, а также увеличением числа считываемых внешних событий. Основными нововведениями в данной области можно считать использование в разработке некоторых элементов искусственного интеллекта, таких как деревья решений или нейронные сети. Тем не менее все еще не удается достигнуть необходимого уровня интеллектуальности агентов. Несмотря на увеличение вычислительных ресурсов, на данный момент пока еще невозможно создать систему, которая будет самостоятельно принимать решения за короткий промежуток времени.
Для решения поставленных задач будут использоваться методы и понятия из теории графов и множеств, конечные автоматы, элементы интеллектуальных систем. Для создания новой системы будут использованы методы объектно-ориентированного проектирования, а именно язык UML. Для реализации самой системы будет использован скриптовой язык LUA и графический движок Sahara Engine.
1. Анализ требований и подходов к разработке интерактивных агентов
Анализ является первым этапом разработки программного обеспечения. На данном этапе необходимо выявить требования к разрабатываемому продукту, определить основные вехи проекта и рассчитать его окупаемость. В данной главе раскрывается понятие интерактивного агента, определяются функциональные и нефункциональные требования к разрабатываемой системе интерактивных агентов, проводится анализ популярных подходов к разработке, выбранных на основе анализа литературы. Помимо этого, проводится анализ уже существующей на данный момент системы агентов, выявляются ее недостатки. Далее с учетом выявленных недостатков и требований создается архитектура новой системы. Также в данной главе рассчитывается окупаемость всего проекта в целом.
1.1 Интерактивный агент как система
Игра “Exoplanet: First Contact” находится в разработке уже достаточно длительное время и несмотря на наличие большого количества функционала и контента существует еще множество нерешенных задач. Одной из таких проблем являются интерактивные агенты. Интерактивные агенты играют важную роль в каждой игре, благодаря им создается иллюзия жизни игрового мира и устанавливается взаимодействие между игроком и игрой. На данный момент в игре уже имеется система управляющая поведением интерактивных агентов, но поведение агентов выглядит однообразно и предсказуемо, кроме того в системе имеются ошибки, ввиду которых агент может потерять сигнал о наличии противника в области зрения и прекратить атаку в середине боя.
К сожалению, в открытом доступе нет качественных готовых примеров систем управления интерактивными агентами, но имеется множество литературы, предлагающей алгоритмы и подходы к разработке. Так же в некоторых движках, например, таких как Unity или Unreal Engine, имеются инструменты для создания интерактивных агентов, но поскольку игра разрабатывается на собственном движке воспользоваться этими инструментами не получится. Использование в проекте узкоспециализированного скриптового языка так же ограничивает возможность использования сторонней системы интерактивного агента. Все эти условия в совокупности определяют необходимость разработки собственной системы для управления поведением интерактивных агентов.
В данной работе производится разработка интерактивного агента для компьютерной игры Exoplanet: First Contact.
Игра представляет собой Action RPG от третьего лица в сеттинге космического вестерна с открытым миром. Данная игра является однопользовательской, а значит, в виду отсутствия реальных противников, поведение интерактивных агентов играет критическую роль в вовлеченности игрока в игровой процесс.
Интерактивный агент - автономная сущность принимающая данные из внешней среды и реагирующая на них в рамках заложенных сценариев. Впервые данное понятие было введено Шампандаром, известным деятелем в области игрового искусственного интеллекта. Данный агент предназначен для имитирования противников в компьютерных играх.
Интерактивный агент состоит из трех основных компонент - рецепторы, система принятия решений и исполнительные устройства. Пример общей архитектуры такого агента приведён на рисунке 1.1.
Рецепторы предоставляют агенту информацию как о состоянии внешней среды, так и о состоянии самого агента. В рамках игрового интерактивного агента это может быть информация о положении игрока или других агентов, количество «здоровья» агента.
Система принятия решений получает данные от рецепторов и обрабатывает их, выдавая на выход набор действий для исполнительных устройств. Алгоритмы, применяемые в этой системе, определяют поведение агента. Существует множество подходов для организации процесса принятия решений, данные подходы будут рассмотрены и проанализированы позднее.
Исполнительные устройства -- это инструменты для влияния на игровой мир или на самого агента. Они принимаю набор необходимых действий от системы принятия решений и исполняют его. Примерами таких действий может быть проигрыш анимации, взаимодействие с игровым миром или изменение положения в пространстве.
Рисунок 1.1. Общая архитектура интерактивного агента
Помимо этих трех компонент в архитектуре интерактивного агента можно выделить набор уровней. Каждый уровень отвечает за определенную функциональность агента и включает в себя все три основные компоненты. На рисунке 1.2 представлена архитектура агента с наиболее общим набором уровней.
Уровни располагаются иерархически. Каждый уровень в иерархии может управлять поведением нижестоящих уровней. Например, уровень поведения может передавать информацию и задачи уровню навигации, который будет решать эти задачи, основываясь на информации, предоставленной рецепторами этого уровня.
Как уже упоминалось выше, каждый уровень включает в себя три основные компоненты агента. В зависимости от области ответственности уровень запрашивает определенный набор данных, обрабатывает их, опираясь не только на заложенную в нем логику, но и на задачи, продиктованные вышестоящим уровнем, а затем, по результатам обработки выдает набор действий, исключительно в рамках зоны своей ответственности.
Рисунок 1.2. Архитектура агента с функциональными уровнями
1.2 Требования к системе интерактивных агентов
К системе интерактивного агента предъявляется ряд требований, которые можно подразделить на функциональные и нефункциональные требования.
Среди нефункциональных требований можно выделить такие требования как низкая ресурсоемкость, ведь интерактивные агенты, не единственные сущности в игре, другим системам так же нужны ресурсы, и высокое потребление ресурсов интерактивными агентами негативно скажется на производительности игры.
Другим важным нефункциональным требованием к данной системе является гибкость и масштабируемость. Система должна легко расширяться и изменяться в зависимости от особенностей поведения определенного агента. В основном поведение агентов подобно, но некоторые из них имеют небольшие особенности, такие как например дополнительные анимации или тактики поведения в бою. При таком раскладе необходимо чтобы базовая модель поведения могла быть повторно использована в других агентах, но при этом была достаточно гибкой, чтобы встроить в нее необходимые изменения.
Нефункциональные требования являются основными параметрами в анализе подходов для разработки интерактивного агента.
Что касается функциональных требований то, в общем, агент должен реагировать на изменения внешней среды и действия пользователя взаимодействием с внешней средой и изменением собственного состояния. Агент должен иметь пять моделей поведения:
1. Бездействует - агент находится в состоянии покоя, проигрывает анимацию бездействия и, через случайные промежутки времени, двигается на небольшое расстояние в случайном направлении.
2. Преследует противника - в данное состояние агент переходит, когда в его поле зрения появляется противник. Противником может являться, как и сам игрок, так и другой интерактивный агент. Агент начинает бежать в направлении противника. В данном состоянии агент находится до тех пор, пока противник находится в его поле зрения, либо пока противник не убит.
3. Атакует - в данном состоянии агент находится, когда противник находится в непосредственной близости от агента. Тогда агент проигрывает анимацию атаки и наносит урон противнику. В данном состоянии агент находится до тех пор, пока противник находится в его поле зрения, либо пока противник не убит.
4. Сбегает от противника - в данном состоянии агент прибывает в том случае если противник сильнее агента, тогда агент начинает двигаться в противоположном от противника направлении. В данном состоянии, как и в предыдущих двух моделях, агент находится до тех пор, пока противник находится в его поле зрения, либо пока противник не убит.
5. Реагирует на нанесение урона - в данное состояние агент попадает при получении урона от игрока или других агентов. В данном состоянии агент должен продемонстрировать получение урона, чаще всего это демонстрируется с помощью анимаций и звуков.
6. Умирает - данное состояние является финальным состоянием агента, то есть, при попадании в это состояние он не может вернуться в другие. В данном состоянии агент должен продемонстрировать смерть и прекратить свою работу.
На основе функциональных требований была составлена диаграмма прецедентов, представленная на рисунке 1.3.
Рисунок 1.3. Диаграмма прецедентов для интерактивного агента
Ниже представлены подробные описания прецедентов, выявленных из функциональных требований к интерактивному агенту компьютерной игры.
Название: Бездействие.
Акторы: пользователь, интерактивный агент.
Описание: агент двигается в случайном направлении, не выходя из круга заданного радиуса. Иногда агент стоит на месте, проигрывая анимацию бездействия.
Триггер: в зоне видимости агента не находится игрок или другие вражеские агенты, агент не получает никаких повреждений.
Основной поток: Игрок находится вне зоны видимости агента. Агент выбирает случайное направление и начинает двигаться в нем. Через случайный промежуток времени агент останавливается и либо меняет направление и продолжает двигаться, либо проигрывает анимацию бездействия. Агент старается оставаться в пределах заданной для бездействия территории. Если агент выходит за пределы этой территории выполняется подпоток S1.
Подпоток (S1): если в процессе движения агент выходит за пределы отведенной для бездействия площади, он разворачивается к центральной точке этой площади и начинает движение к ней.
Название: Преследование противника.
Акторы: пользователь, интерактивный агент.
Описание: Игрок или враждебный агент появляются в зоне видимости агента
Триггер: в зоне видимости агента появляется игрок или враждебный агент. Раздражитель находится вне зоны поражения агента.
Основной поток: Игрок подходит к агенту и попадает в зону его видимости. Агент разворачивается к игроку и начинает движение. Скорость движения агента больше, чем скорость движения в состоянии бездействия. Агент продолжает движение до тех пор, пока не достигнет противника, либо пока не перейдет в более приоритетное состояние.
Название: Атака противника.
Акторы: пользователь, интерактивный агент.
Описание: Если противник находится в зоне поражения агента, агент атакует противника используя оружие. Внешне это проявляется в проигрыше анимации.
Триггер: Противник находится в зоне видимости агента и в зоне поражения.
Основной поток: Игрок подходит ближе к агенту. Агент экипирует оружие и наносит удар игроку, в это же время играет соответствующая анимация атаки.
Название: Побег от противника.
Акторы: пользователь, интерактивный агент.
Описание: Игрок или вражеский агент находится в поле зрения агента, агент решает избежать битвы и начинает удаляться от противника.
Триггер: в поле зрения агента находится более сильный игрок или агент.
Основной поток: Игрок заходит в зону видимости агента. Агент поворачивается в противоположную от игрока сторону и начинает движение в этом направлении с высокой скоростью. Агент двигается в этом направлении до тех пор, пока игрок не окажется вне зоны видимости.
Название: Реакция на урон.
Акторы: пользователь, интерактивный агент.
Описание: При получении урона агент реагирует на него, путем проигрыша анимации и звуков.
Триггер: Агент получает урон.
Основной поток: Игрок наносит повреждения агенту. Если агент находится в движении, то он останавливается. Далее агент проигрывает анимацию и звук получения урона. Здоровье агента уменьшается.
Название: Смерть.
Акторы: пользователь, интерактивный агент.
Описание: Получив большое количество урона, агент переходит в состояние смерти в котором он прекращает свою деятельность.
Триггер: Уровень здоровья меньше нуля или равен ему.
Основной поток: Игрок наносит повреждения агенту. Если агент находился в движении, он останавливается. Агент проигрывает анимацию смерти и останавливает свою деятельность.
1.3 Анализ литературы
Для того чтобы подобрать наиболее продвинутые и в тоже время надежные подходы к разработке интерактивных агентов было проанализировано множество литературы, покрывающей довольно большой промежуток времени - больше десяти лет. Технологический прогресс не стоит на месте и объемы доступных машинных ресурсов постоянно увеличиваются, что позволяет разработчикам экспериментировать с алгоритмами и подходами к разработке интерактивных агентов, тем не менее некоторые подходы не теряют своей популярности. Данный анализ направлен на выявление таких подходов, чтобы потом, путем применения к подходам требований к агентам, разрабатываемым для данной игры, выбрать наиболее подходящую архитектуру для новой системы.
Ян Милингтон в своей книге “Artificial Intelligence for Games” рассматривает большое количество подходов к разработке интерактивных агентов. Среди рассмотренных им методов есть, как и довольно распространённые такие как конечные автоматы, продукционные правила и деревья решений, так и менее известные, например, нечеткая логика, нейронные сети, деревья поведения с обучением. Ян считает, что выбор подхода к разработке интерактивного агента должен быть обусловлен жанром игры. Он так же приводит несколько примеров архитектур и алгоритмов, наиболее подходящих для каждого из рассмотренных жанров. В список рассмотренных им жанров попадают наиболее распространенные жанры игр, в этом списке находятся шутеры, стратегии (пошаговые и реального времени), гонки и спортивные игры. Из описанных им жанров для разрабатываемой игры наиболее подходящим является шутер. Миллингтон считает, что в данном жанре наиболее популярным является подход на основе конечного автомата, а гибкости или расширяемости системы агента можно добиться, увеличив количество конечных автоматов.
Мэт Букланд в своей книге “Programming AI by Example” рассматривает несколько меньше подходов чем Миллингтон. В основном он фокусируется на подходе, основанном на конечном автомате, но также упоминает нечеткую логику и целенаправленные системы. Мэт предлагает необычный подход к разработке конечного автомата, когда переходы в другие состояния содержатся внутри самого состояния, а не являются его отдельным атрибутом.
В своих ранних работах о разработке интерактивных агентов, одной из которых является книга “AI Game Development: Synthetic Creatures with Learning and Reactive Behaviors”, Алекс Шампандар в основном фокусируется на создании агентов на основе нейронных сетей или генетических алгоритмов и лишь мельком упоминает нечеткую логику, конечные автоматы и системы продукционных правил, но в более поздних работах он уделяет большое внимание деревьям поведения, и считает их наиболее приоритетным направлением в развитии интеллектуальности интерактивных агентов. Среди основных преимуществ деревьев Алекс выделяет их гибкость, простоту реализации и реалистичность поведения основанных на них агентов.
Пол Тозу в его статье о эволюции систем интерактивных агентов, приведенной в книге “AI Game Programming Wisdom” обозревает наиболее популярные в последние года подходы. Среди упомянутых им подходов присутствуют системы не упоминаемые рассмотренными выше авторами. Среди таких систем находятся мульти-агентные системы, системы на основе логики первого порядка, экспертные системы. Несмотря на обзор такого большого количества систем, Пол утверждает, что наиболее эффективно себя проявляют популярные подходы, основанные на конечных автоматах, деревьях поведения и продукционных правилах.
Дэвид М. Бург, Гленн Симан в своей книге “AI for Game Developers” обозревают такие техники как конечные автоматы, системы продукционных правил, нечеткую логику, нейронные сети и генетические алгоритмы. Они разделяют данные алгоритмы на два вида - детерминированные и недетерминированные. Детерминированные алгоритмы, к которым относятся конечные автоматы, системы продукционных правил и нечеткая логика, просты для реализации и не требовательны к ресурсам, что с одной стороны позволяет легко их протестировать, переопределить и не беспокоиться о производительности, но с другой стороны, эти алгоритмы создают предсказуемое поведение, что сокращает время геймплея. Недетерминированные алгоритмы, такие как нейронные сети и генетические алгоритмы, позволяют получить разнообразное и непредсказуемое поведение агентов без написания дополнительного кода, но они сложны в тестировании и ресурсоемки. Тем не менее авторы считают, что будущее интерактивных агентов стоит именно за недетерминированными алгоритмами, потому что, обучаясь они создают все больше и больше моделей поведения, поддерживая интерес игрока.
Сборники статей Стива Рабина, собирающие в себе последние достижения в сфере игрового искусственного интеллекта, наглядно демонстрируют тенденции в выборе подходов к разработке интерактивных агентов. Если раньше в играх жанра FPS или RPG для создания агентов чаще всего использовались конечные автоматы, то в последние годы популярным подходом стало использование деревьев поведений.
Анализ литературы показал, что несмотря на большое количество разнообразных подходов к разработке интерактивных агентов и их постоянное развитие, некоторые подходы не теряют своей популярности. К таким подходам можно отнести конечные автоматы, системы продукционных правил, нечеткую логику и деревья решений. Помимо этого, довольно часто авторами упоминаются машинное обучение в виде нейронных сетей и генетических алгоритмов. Несмотря на то, что данные подходы считаются довольно перспективными, они очень редко используются в коммерческих играх, в виду их специфики. Данные подходы никогда не использовались в играх жанра Action RPG, поэтому они не будут включены в анализ подходов к разработке интерактивных агентов для игры Exoplanet: First Contact.
1.4 Анализ подходов к разработке интерактивного агента
Для выбора наиболее оптимального способа принятия решений агентом будут проанализированы наиболее популярные подходы к разработке интерактивного агента, а именно: система на основе продукционных правил, конечный автомат и дерево решений. Нечеткая логика, несмотря на свою популярность, является больше дополнением к подходам, чем самостоятельным алгоритмом, поэтому в данном анализе она рассматриваться не будет.
Данные подходы будут проанализированы на основе следующих параметров:
1. Расширяемость - параметр, отвечающий за поведение алгоритма при увеличении количества состояний. Важно, чтобы при увеличении сложности поведения агента, алгоритм оставался читаемым, сложность тестирования не увеличилась и, помимо этого, добавление новых состояний не должно вызвать затруднений или занимать много времени.
2. Повторное использование - этот параметр отвечает за возможность повторного использования элементов разработанных алгоритмов. Наличие такой возможности позволит уменьшить время разработки, поскольку большинство агентов, несмотря на уникальность поведения каждого, имеют одинаковые состояния, и данная возможность повторно использовать эти состояния для множества агентов
3. Гибкость к изменениям - данный параметр отвечает за то, насколько легко изменить поведение агента. Игра разрабатывается итеративно, и в процессе итераций требования часто меняются, поэтому важно чтобы была возможность изменить поведение агента, не затратив при этом много времени на удаление и добавление новых состояний.
4. Потребление оперативной памяти - очень важный параметр для любого агента любой игры. Несмотря на технический прогресс, ресурсы оперативной памяти по-прежнему ограничены, а в играх реального времени необходимо чтобы агент быстро реагировал на изменения внешней среды. Для определения реакции агента на внешнюю среду необходимо часто обращаться к системе, поэтому алгоритмы принятия решений не должны потреблять много памяти.
5. Реализация целенаправленного поведения - важный параметр, поскольку помимо стандартного поведения, часто необходимо чтобы агенты могли выполнять определенные задачи, например, во внутриигровых задачах - квестах. Для реализации этого поведения необходимо, чтобы имелась возможность расширить стандартное поведение добавлением новых сценарием. Важно чтобы добавление нового поведение не требовалось прописывать в коде вручную, чтобы имелся инструмент, позволяющий удобно подключать и убирать новое поведение без повреждения стандартного. Рассмотрим подробнее что представляет из себя каждый из подходов.
Система на основе продукционных правил -- это подход, основанный на наборе правил IF…THEN. Данный подход один из самых старых подходов к разработке интерактивного агента.
Систему продукционных правил очень просто разработать и часто она используется для создания быстрых прототипов, но при увеличении сложности поведения и количества состояний она становится практически нечитаемой, сложной для тестирования и часто хранит большое количество ошибок, возникающее из-за противоречащих правил.
С одной стороны различные правила и действия не имеют тесной связи, что делает модификацию проведения достаточно простой, но с другой стороны, опять же, в случае со сложным поведением при добавлении правила будет необходимо проверить непротиворечивость данного правила относительно существующих, что представляется достаточно трудоемкой задачей.
Повторное использование элементов практически нереализуемо. Правила и действия тесно связаны и закреплены в коде. Для применения тех же состояний к другим агентам, необходимо будет переписать состояния.
Что касается производительности, данный подход, согласно исследованиям, потребляет больше оперативной памяти, чем конечный автомат, и, по всей видимости, имеет самую низкую производительность среди рассматриваемых алгоритмов.
Конечный автомат - так же довольно популярный подход для разработки интерактивного агента. Представляет собой набор состояний и переходов между ними. В каждый момент времени только одно состояние может быть активным.
Данный подход является удобным и наглядным, если агент имеет простое поведение с небольшим количеством состояний, но при большом количестве состояний в нем становится тяжело разобраться. Количество переходов растет с экспоненциальной сложностью, и модель поведения сильно теряет в гибкости к изменениям, ведь при удалении или добавлении состояния необходимо будет вручную пройтись по всем связанным состояниям и внести изменения. Если таких состояний большое количество, это может занять много времени.
Повторное использование элементов конечного автомата не представляется возможным из-за высокой связности состояний и переходов. Переходы и информация о состояниях напрямую задокументированы в коде, так что при использовании состояний в новых моделях поведения необходимо будет их переписывать.
Согласно исследованиям, конечный автомат является самым производительным алгоритмом из всех рассмотренных, хотя разница в потреблении оперативной памяти относительно дерева поведения незначительна. В большинстве случаев конечный автомат и дерево поведения будут иметь одинаковые показатели, существенная разница может проявиться только в случае неправильно спроектированной архитектурой дерева.
Реализовать целенаправленное поведение с помощью конечного автомата очень сложно, поскольку работа конечного автомата представляет собой Марковский процесс, иными словами, на текущее состояние никак не влияют состояния, которые были выбраны до этого.
Дерево поведения - это ориентированный ациклический граф, узлами которого являются некие состояния агента, а листьями непосредственно действия агента.
Из всех рассмотренных подходов дерево поведения является наиболее гибким подходом. Поведение агента определяется структурой дерева, а не набором явно заданных связей, поэтому удаление и добавление новых состояний не требует внесения изменений в уже имеющиеся состояния.
Поведение агента описывается набором основных узлов, которые потом декомпозируются на поддеревья, поэтому при увеличении сложности поведения бота, система по-прежнему останется удобочитаемой и простой для тестирования.
Так же благодаря отсутствию явно заданных связей и высокой степени абстракции деревьев, возможно повторное использование уже разработанных элементов дерева в системах других агентов.
Относительно потребления оперативной памяти дерево поведения имеет примерно такие же показатели, как и у конечного автомата, но, в случае если дерево будет иметь неправильную архитектуру, с большим количеством проверок условий, его показатели производительности будут ниже чем у конечного автомата.
Целенаправленное поведение довольно просто реализуется в системе, основанной на деревьях поведения. Данное поведение возможно, благодаря влиянию поведения узла на поведение дерева в целом, а также благодаря общей гибкости системы, которая позволяет подключать и удалять целые поддеревья, не нанося вреда остальной системе.
На основе анализа подходов была составлена таблица 1.1, обобщающая показатели подходов относительно параметров. Как можно видеть из этой таблицы наиболее подходящим подходом для разработки интерактивного агента является дерево поведения, поскольку его оценки по показателям в основном положительные. Данная система является гибкой к изменениям, легко расширяемой, позволяет внедрить целенаправленное поведение, а ее показатели по потреблению оперативной памяти в общем не отличаются от других подходов.
Таблица 1.1. Анализ подходов к разработке интерактивного агента
Продукционные правила |
Конечный автомат |
Дерево поведения |
||
Расширяемость |
Тяжело поддерживать сложное поведение |
Тяжело поддерживать сложное поведение |
Легко поддерживать при поведении любой сложности |
|
Повторное использование |
Нельзя использовать повторно |
Нельзя использовать повторно |
Можно использовать повторно |
|
Гибкость к изменениям |
Не гибкий |
Не гибкий |
Гибкий |
|
Потребление оперативной памяти |
Выше чем у FSM |
Такое же, как и у BT |
Такое же, как и у FMS |
|
Целенаправленное поведение |
Сложно реализовать |
Сложно реалиовать |
Реализуемо |
1.5 Модель “AS IS”
На данный момент интерактивный агент в игре Exoplanet: First Contact основан на дереве поведения, но это дерево не сбалансированно, что негативно сказывается на производительности. Помимо этого, архитектура дерева не позволяет запомнить длительное действие, выполняемое агентом, что ведет за собой бесконечный старт действия. Подобная работа дерева негативно сказывается на реалистичности поведения агента. Так же агенты имеют проблемы с переходами между состояниями. Очень часто в середине боя агент теряет игрока и перестает атаковать, что выглядит странно и нелогично и демонстрирует некорректную работу дерева. В совокупности получаются агенты, которые не решают проблему, для решения которой они были созданы, а именно не создают иллюзию интеллектуального поведения и не имитируют противника для игрока.
Помимо проблем с поведением текущая система имеет неудачную архитектуру, что так же является существенным недостатком. Внешние системы и классы, которые, логически, не должны иметь контроля над поведением агента вмешиваются в его поведение. Данная архитектура является небезопасной и сложна для тестирования. При такой архитектуре, во-первых, при изменении или удалении системы необходимо учитывать ее зависимости с другими системами, которые логически не как не связаны с агентом (например, система управления игроком), во-вторых данные зависимости необходимо учитывать при тестировании системы, поскольку несмотря на правильную работу системы, вмешательство других систем может привести к появлению дополнительных плавающих и неочевидных ошибок.
На рисунке 1.4 представлена диаграмма сотрудничества для текущей системы. Как видно из этой диаграммы класс агента является промежуточным классом между движком и прикладной логикой, что делает его перегруженным. Если позволить прикладным классам напрямую взаимодействовать с движком, это позволит разгрузить класс агента и сделать логику системы более наглядной. Так же на диаграмме видно, что внешние классы могут нарушить работу дерева, диктуя ему свои правила, что сделает поведения агента сложным для тестирования и непредсказуемым.
Рисунок 1.4. Диаграмма сотрудничества системы AS IS
1.6 Модель “TO BE”
Система, разрабатываемая в этой работе, позволит решить эти проблемы. Как показал анализ подходов дерево поведения по-прежнему является наиболее удобным способом организации работы интерактивного агента данной игры, но в рамках данной работы будет разработано новое дерево, архитектура которого позволит запоминать состояния узлов, благодаря чему длительный действия, выполняемые агентом, будут выполняться полностью, а не начитаться с начала до тех пор, пока условия не изменятся. Данные действия увеличат реалистичность поведения агентов, что положительно скажется на вовлеченности пользователя в игровой процесс.
Помимо улучшения поведения путем создания и внедрения новых систем, уже имеющаяся система, отвечающая за взаимодействие с игровым движком будет изменена. В измененной системе внешние классы, логически не имеющие доступа к системам агента, не смогут на него повлиять. Агент через класс, отвечающий за рецепторы агента будет поставлять информацию из игрового мира. Данная информация не будет влиять на действия агента напрямую, а будет считываться деревом поведения, которое будет возвращать агенту набор действий, подходящих для имеющейся на данный момент в игре ситуации. Класс агента будет распределять данные действия по прикладным классам, отвечающим за определенный аспект агента, например, передвижение или анимацию. Эти прикладные классы, в свою очередь, будут вызывать необходимые функции в движке. Данная архитектура повысит стабильность системы, упростит тестирование и будет более наглядной. Новая архитектура представлена в виде диаграммы сотрудничества на рисунке 1.5. Функции, представленные на диаграмме сотрудничества обобщенные и абстрактные. Из названия определяют содержание основных вызываемых функций и передаваемой информации. В реальной системе эти функции будут декомпозированы на десятки других.
Рисунок 1.5. Диаграмма сотрудничества для компонентов системы
1.7 Экономическое обоснование
Поскольку игра является уникальным программным продуктом, значительно отличающимся от стандартных приложений и программ на рынке ИТ, то к ней не применимы популярные методики расчета трудоемкости, такие как COCOMO II, IFPUG или Cetin. В основном, центральным элементом в этих методиках является база данных, которая напрочь отсутствует в играх. Кроме того, разработка игр и прочих программных продуктов сильно отличается, поскольку разработка включает в себя деятельность композиторов, художников и геймдизайнеров, в то время как ни одна из популярных методик не способна включить эту деятельность в трудоемкость. На основании этих выводов было решено для расчета трудоемкости взять за основу метод аналогов. В качестве аналогов был подобран набор игр с подобным жанром, наличием открытого мира и разрабатываемых, как и в данном случае, независимыми инди-разработчиками. Помимо этого, в список аналогов были включены игры, которые, как и данная игра, разрабатываются на собственном движке и игры, чья механика и геймплей были взяты за основу. Список выбранных игр и сроки их разработки представлены в таблице 1.2.
Таблица 1.2. Список аналогов для расчета трудоемкости
Название игры |
Численность команды (чел) |
Срок разработки (лет) |
|
Rime |
16 |
5 |
|
The long dark |
20 |
4 |
|
Ark: Survival Evolved |
8 |
4 |
|
DayZ |
17 |
5 |
|
The forest |
11 |
4 |
|
Morrowind |
34 |
6 |
|
Oblivion |
34 |
5 |
|
Gothic |
27 |
3 |
Для расчета трудоемкости будет использована стандартная формула - время разработки = трудоемкость/ количество разработчиков, только поскольку в данном случае необходимо рассчитать трудоемкость время разработки будет умножено на количество разработчиков. После определения трудоемкости разработки каждого проекта в отдельности, была найдена средняя трудоемкость, величина которой равняется 1164 человеко-месяцев. Величина команды для данной игры составляет 10 человек. Таким образом срок разработки будет составлять около восьми лет.
Теперь, когда определен срок разработки необходимо определить основные статьи расходов проекта. Поскольку этот проект является продуктом инди разработчиков, и не имеет инвестора расходы на его разработку минимальны. Большая часть команды работает без оплаты, разработка ведется, в основном, с использованием бесплатного программного обеспечения. Тем не менее некоторых расходов избежать нельзя. Ниже перечислены основные расходы.
Расходы на программное обеспечение. В проекте имеется всего один художник, для нужд которого необходимо платное ПО в виде Photoshop CC и 3D Max, подписка на которые сроком в восемь лет обойдется в 468 788 рублей. Остальные разработчики не нуждаются в платном ПО, но для хранения файлов используется dropbox. Услугами данного хранилища файлов разработчики начали пользоваться после получения инвестиций с сайта kikstarter, что произошло после четырех лет разработки, соответственно траты на использование данного сервиса рассчитываются только для оставшихся четырех лет и составляют 537 600 рублей.
Помимо этого, некоторые из разработчиков получают заработную плату. Всего таких разработчиков четверо. Ввиду ограниченности в средствах, зарплаты составляют всего 40 000 рублей. Как и с использованием dropbox, возможность выплаты зарплат появилась только при получении средств с kikstarter, поэтому зарплаты рассчитываются на 4 года и затраты на них составляют 7 680 000 рублей. Поскольку все работают неофициально зарплаты не облагаются налогами или страховыми взносами.
Помимо постоянных трат имеются и единоразовые траты. Такие траты включают в себя взнос для прохождения игры в Steam Greenlight, оформление юридического лица. Траты по данным категориям составили 11 560 рублей. Итого траты за весь срок разработки составляют 8 697 948 рублей.
Теперь, когда определены основные расходы, можно переходить к расчету доходов. Основной доход будет получен после того как разработка будет закончена. Планируется продать 20 000 электронных копий в первые две недели игры. Учитывая стоимость игры в размере 700 рублей планируется получить доход в 14 млн. рублей. Помимо этого, проект имеет инвестиции, полученные с kikstarter в размере 4 586 396 рублей и, находясь в данный момент в раннем доступе в сервисе цифрового распространения компьютерных игр и программ Steam, получает пассивный доход в виде 40 000 рублей в месяц.
Ставка дисконтирования была рассчитана по методике WACC, поскольку большая часть методик подходит только для кампаний с акциями и ценными бумагами, которых данная кампания не имеет. Экспертов в области разработки игр, которые могли бы дать свою оценку по ставке дисконтирования найти очень сложно, помимо этого кампания не может позволить себе оплатить их услуги, поэтому методика WACC является наиболее приемлемой из всех имеющихся.
Ставка дисконтирования WACC рассчитывается по формуле:
WACC = Re*E/(E+D) + Rd*(1-t)*D/(E+D),
где Re составляет 7%, что является процентной ставкой по вкладам в сбербанке,
E составляет 258 240 рублей вложенных командой до того, как были получены инвестиции,
D составляет 4 586 396 рублей инвестиций, полученных на платформе kikstarter.
Rd в данной формуле составляет 0%, так как данные инвестиции безвозмездны и не облагаются процентами,
t составляет 6% т.к. кампания зарегистрирована как индивидуальный предприниматель и имеет упрощенную систему налогообложения.
После расчета ставки с указанными выше данными ставка дисконтирования составляет 0,003%.
Экономическая эффективность была рассчитана на основе показателя чистой приведенной стоимости. Так же на основе данного показателя была построена диаграмма, представленная на рисунке 1.6, которая демонстрирует окупаемость проекта на восьмом году разработки.
Рисунок 1.6. Диаграмма показателя NVP
Расчет окупаемости позволил определить целесообразность продолжения разработки проекта. Как видно из графика, проект окупится, но принесет достаточно небольшую прибыль, тем не менее, данная прибыль может стать основой для дальнейших разработок, а наличие прибыльного проекта в портфолио студии, позволит привлечь больше инвесторов в следующие проекты.
2. Проектирование системы и организация разработки
После того, как этап анализа завершен, определены требования к системе, рассчитана ее окупаемость и определен основной фронт работ, можно переходить ко второму этапу - проектированию. В данной главе подробно отражен данный этап разработки проекта, а именно - определена методология разработки проекта, ее основные этапы и вехи. Спроектировано базовое дерево поведения для агентов системы и, на его основе, спроектированы индивидуальные деревья поведения для агентов B, H и P.
2.1 Организация процесса разработки системы
В данном проекте используется гибкая методология разработки Agile. Данный подход обусловлен тем, что игра находится в раннем доступе в сервисе цифрового распространения компьютерных игр и программ Steam и, чтобы удерживать внимание старых пользователей и привлекать новых, необходимо постоянное улучшение игры. В данном случае это улучшение реализуется через систему ежемесячных обновлений. Существование этой системы и ее успешная реализация возможны как раз благодаря гибкой системе разработки.
В разработка систем интерактивных агентов разделена на четыре итерации. На первой итерации должен был быть проведен анализ подходов к разработке агентов, выделение требований к системе и выбор наиболее оптимального подхода. Вторая итерация предполагала собой проектирование новой системы интерактивных агентов. На третьей итерации предполагалась изолированная разработка системы и ее тестирование. На четвертой итерации было запланировано внедрение системы в игру, перенос на новую систему агентов, уже имеющихся в игре, тестирование их поведения. Окончание разработки планировалось на начало апреля, но к сожалению, одна из итераций отказалась неудачной, что вызвало смещение сроков разработки. Далее более подробно о длительности итераций и их содержании.
Первая итерация, посвященная выбору подхода к разработке, длилась два месяца. За это время было проанализировано большое количество материалов, посвященных разработке. Анализ данных материалов был приведен в первой главе. В результате анализа были выявлены наиболее популярные подходы к разработке интерактивного агента. Наиболее подходящий подход был выбран путем применения требований системы к подходам. Изначально требование к расширяемости системы не было учтено, поэтому изначально было решено разрабатывать агента на основе конечного автомата.
В декабре была начата новая итерация, которая по длительности была рассчитана на полтора месяца. В процессе этой итерации была спроектирована новая система на основе подхода, предложенного Мэтом Букландом, когда каждое состояние хранит в себе переходы в другие состояния. В процессе проектирования системы было обнаружено что большая часть агентов должны обладать уникальными системами поведения, а архитектура на основе конечного автомата не обладает требуемой гибкостью. Ввиду отказа от данной архитектуры данная итерация была внепланово завершена. Помимо этого, был произведен возврат к анализу подходов к разработке. При применении к подходам нового требования было выявлено что наиболее подходящим подходом является подход, основанный на деревьях поведения. В текст данной работы вошел только конечный вариант анализа, включающий требование к гибкости. Данный анализ был приведен в первой главе. Данная итерация, ввиду прерывания была завершена за месяц. Поскольку она была неудачной были вызваны задержки в планах.
Ввиду неудачи предыдущей итерации новая итерация была так же посвящена проектированию системы, но в этот раз система проектировалась на основе деревьев поведения. Данная итерация была рассчитана на полтора месяца и была завершена в срок. В течении данной итерации было разработано базовое дерево поведения, которое агенты будут использовать как основу для имитации интеллектуального поведения. Помимо этого, был определен список необходимых видов узлов дерева и спроектированы классы для них. Подробное описание дерева и классов приведено ниже.
Далее была итерация, посвященная разработке самого дерева. Дерево поведения - абстрактная структура, поэтому была возможна изолированная разработка. На данной итерации была разработана библиотека дерева, позволяющая разрабатывать поведения любой сложности. Подробности разработки данной библиотеки приведены в третьей главе. Так же на этой же итерации данная библиотека была протестирована и стабилизирована. Подробности тестирования так же приведены в третьей главе.
Следующая итерация была посвящена внедрению дерева в игру и переводу всех основных игровых агентов на новую систему. Данная итерация была рассчитана на три месяца и подразделялась на три подэтапа. Перенос агента-B на новую систему, перенос агента-P на новую систему и перенос агента-H на новую систему.
Первым на новую систему был перенесен агент с самой простой моделью поведения. Данный агент представлял собой инопланетного жука. Данный агент имел всего 5 состояний. Как и все остальные агенты он был основан на базовом дереве, но некоторые состояния были убраны из стандартного и было добавлено одно новое. Подробности разработки жука приведены в третьей главе. После того как жук был переведен на новую систему его поведение было протестировано. По окончании тестирования и исправления ошибок данный подэтап был завершен.
Следующим на новую систему был перенесен агент-P. Его поведение практически полностью совпадало с базовым деревом поведения, но отсутствовало состояние побега от противника, а состояние бездействия имело более сложную структуру. Как на предыдущем подэтапе поведение агента было протестировано и отлажено и, после этого подэтап был завершен. Подробности приведены так же в третьей главе.
Последним в данной итерации был перенесен агент-H. Его поведение подобно поведению агента-P. Подробная информация о разработке приведена в третьей главе. После завершения переноса данного агента на новую систему, данная итерация была завершена.
После того как агенты будут перенесены на новую систему, создание новой системы для интерактивных агентов игры будет завершено.
2.2 Проектирование базового дерева поведения для агентов
Интерактивный агент будет основан на дереве поведения. Дерево поведения состоит из набора узлов различных типов. Основными типами узлов, использующихся в разработке интерактивного агента являются:
1. Node - обычный узел (обычно листовой), предназначен для выполнения набора действий. Типичными примерами использования могут быть выполнение действия или проверка условия.
2. Composite - узел работающий с набором других узлов. Типичные примеры - выбор узла из набора или последовательное выполнение всех узлов из набора.
3. Decorator - данный тип узлов изменяет поведение какого-либо узла.
Каждый узел имеет набор состояний, благодаря которым определяется поведение дерева. В этом наборе всего три состояния, это SUCCESS, RUNNING и FAILURE. Если узел находится в состоянии SUCCESS, значит узел был успешно пройден. Если узел находится в состоянии RUNNING, значит обработка этого узла все еще выполняется. И, наконец, если узел находится в состоянии FAILURE, значит выполнение этого узла невозможно.
В дереве, разрабатываемом в рамках данной работы будут применяться все три типа узлов. Далее более подробно рассмотрим какие подтипы узлов будут использованы в дереве.
При описании первого типа, Node, были упомянуты два примера использования - проверка условия и действие. Именно данные подтипы узлов будут использоваться для дерева в данной работе. Узлы этих подтипов также будут являться листовыми узлами.
Узлы условий будут использоваться для определения контекста необходимого для перехода в состояние, а узлы действий будут содержать необходимые функции для отражения этих состояний. Взаимодействие между этими двумя подтипами узлов будет организованно с помощью второго типа узлов - Composite.
Тип Composite будет также разделен на два подтипа, оба из которых будут использованы для создания дерева. Первый подтип это Selector, который выбирает первый узел, вернувший состояние SUCCESS и заканчивает на этом свою работу, вернув это же состояние. Если же невозможно выполнение ни одного из узлов, то узел данного типа возвращает состояние FAILURE. Другим подтипом, использующимся в дереве, является Sequence. Данный подтип последовательно выполняет имеющийся набор узлов, до тех пор, пока все узлы не будут выполнены или пока один из узлов не вернет состояние FAILURE. В первом случае узел будет считаться успешно выполненным, а во втором так же вернет состояние FAILURE.
Из типа Decorator так же можно выделить множество подтипов, но использоваться в данной работе будет только один из них, а именно Invertor. Данный тип узла изменяет состояние заданного ему узла на обратное. Например, если узел находится в состоянии SUCCESS, то узел данного типа будет в состоянии FAILURE. Благодаря типу Invertor возможно уменьшение количества узлов, что позитивно скажется на производительности.
Теперь рассмотрим, как будет организовано само дерево основательно данных типов узлов и требований, предъявляемых к поведению интерактивного агента.
Как уже упоминалось в требованиях, агент должен иметь четыре состояния, бездействие, атака, преследование и побег. Помимо этих состояний в дерево необходимо добавить состояние смерти и состояние получения урона. Они неочевидны, но необходимы для корректного поведения агента. Так как в один момент времени агент должен находиться только в одном состоянии, то корневым узлом будет узел типа Selector. Состояния в данном узле расположены в порядке приоритетности. Диаграмма корневого узла представлена на рисунке 2.1.
Рисунок 2.1. Корневой узел дерева поведения
Теперь подробнее разберём каждое состояние. Состояние смерти представляет собой узел типа Sequence, так как для корректной работы этого состояния необходимо чтобы все узлы были пройдены. Само состояние содержит два листовых узла, это условие, проверяющее что у агента, еще остались пункты «здоровья» и узел, который хранит набор действий, которые необходимо предпринять если «здоровья» не осталось. Схема данного состояния представлена на рисунке 2.2.
Состояние смерти стоит первым в приоритете состояний, т.к. если агент не имеет достаточно «здоровья» он не должен переходить в другие состояния.
Рисунок 2.2. Схема узла состояния смерти
Если агент все еще имеет достаточно «здоровья», то корневой узел переходит к следующему узлу, которым является состояние получения урона. Данное состояние стоит вторым в списке состояний, так как агент должен мгновенно реагировать на урон, не предпринимая никаких других действий.
Как и предыдущее состояние, это состояние представляет собой узел типа Sequence. Стоит упомянуть, что все состояния представляют собой узлы данного типа, так как до того, как предпринять действия, необходимо проверить имеется ли необходимый для состояния контекст.
Необходимым условием для данного состояния является получение агентом урона. Если урон был получен, то агентом предпринимаются действия, необходимые для отображения состояния. Схема данного состояния аналогична состоянию смерти и состоит из двух листовых узлов, один из которых является узлом-условием, а другой действием. Данное состояние представлено на рисунке 2.3.
Рисунок 2.3. Схема узла состояния получения урона
Поскольку для состояний атаки, преследования и побега контекст частично совпадает, т.е. для перехода в эти состояния необходимо чтобы в зоне видимости агента находился противник, то все эти состояния были логически определены в один узел «Опасность рядом». Как и предыдущие два состояния, это узел типа Sequence, но только теперь он содержит лишь один листовой узел-условие, другим же узлом является узел типа Selector, который в зависимости от различных условий выбирает в какое состояние перейти. Данный узел содержит два состояния - атака и побег. Схема данного узла представлена на рисунке 2.4. В данном случае подразумевается, что состояние атаки так же содержит в себе два состояния - нанести удар и преследовать.
Подобные документы
Анализ и виды интеллектуальных агентов в системе дистанционного обучения и их характеристики. Построение интеллектуального агента глоссария на платформе Jadex с помощью XML формата. Среда разработки и описание интеллектуального агента с помощью BDI.
курсовая работа [113,6 K], добавлен 10.02.2011Обзор средств создания обучающих программ и формирование требований к электронному учебнику. Исследование этапов разработки интерактивного обучающего ресурса. Выбор инструментов реализации. Создание интерфейсной части приложения, проектирование тестов.
дипломная работа [3,2 M], добавлен 20.05.2013Технология программных агентов. Форматы метаданных, использующиеся для описания электронных ресурсов. Разработка интеллектуальных агентов. Среда разработки Jadex для построения интеллектуальных агентов. BDI модель интеллектуального агента ресурсов.
курсовая работа [279,8 K], добавлен 20.02.2011Диаграмма прецедентов взаимодействия игрока и программного продукта. Требования к пользовательскому интерфейсу. Диаграмма состояний проектируемого приложения. Выбор инструментальных средств разработки. Проектирование алгоритмов и иерархии классов.
дипломная работа [9,9 M], добавлен 20.03.2017Алгоритмическое представление и описание правил игры "Эволюция". Построение диаграммы прецедентов. Разработка графического интерфейса пользователя. Реализация интерфейса в среде Unity. Структура файла сохранения игры. Проектирование поведения компьютера.
дипломная работа [3,3 M], добавлен 18.02.2017Понятие информации и роль компьютерных и Интернет-технологий в современном мире. Плюсы и минусы внедрения ERP-систем. Языки программирования для разработки Web-приложений. Методология разработки интерактивного справочника. Расчёт эксплуатационных затрат.
дипломная работа [962,7 K], добавлен 13.10.2012Обзор методов и средств реализации поставленной задачи. Описание компьютерной игры "Японские кроссворды". Обоснование инструментария разработки программного продукта. Алгоритмический анализ задачи. Графический интерфейс и лингвистическое обеспечение.
курсовая работа [725,4 K], добавлен 27.08.2013Выбор языка программирования и средств реализации поставленной задачи. Диаграмма прецедентов использования лифта. Построение основной диаграммы классов. Создание интерфейса, с помощью которого пользователь мог бы легко понять моделирование лифта.
курсовая работа [477,2 K], добавлен 01.05.2016Проектирование интерактивного справочника магазина "Азарт", для реализации продукции посредством сети Интернет. Разработка базы данных, описание программы и составление руководства для оператора. Экспериментальное исследование разработанного продукта.
дипломная работа [3,8 M], добавлен 06.06.2014Создание электронного учебника, написанного на языке гипертекстовой разметки HTML. Характеристика программного обеспечения ЭВМ, необходимого для создания и эксплуатации информационной системы. Алгоритм функционирования системы, отладка программы.
курсовая работа [1,0 M], добавлен 22.12.2012