Как мы искусственный интеллект пилили / Разработка / Блоги независимых разработчиков игр

МЕНЮ


Новости искусственного интеллекта
Поиск

ТЕМЫ


Big data
Беспилотный автомобили
БПЛА
генетические алгоритмы
Головной мозг
дополнительная реальность
ИИ проекты
искусственный интеллект
квантовые компьютеры
Кластеризация
Машинное обучение
нейронные процессоры
нейронные сети
Нейронные сети: искусственные
Нейронные сети: реализация
облачные вычисления
Поведение животных
Психология
распознавание образов
робототехника и БПЛА
Семинары
суперкомпьютеры
Теория эволюции
Трансгуманизм

АРХИВ


Апрель 2016
Март 2016
Февраль 2016
Январь 2016
Декабрь 2015
Ноябрь 2015
Октябрь 2015
Сентябрь 2015
Август 2015
Июль 2015
Июнь 2015
Май 2015
Апрель 2015
Март 2015
Февраль 2015
Январь 2015
Декабрь 2014
Ноябрь 2014
Октябрь 2014
Сентябрь 2014
Август 2014
Июль 2014
Июнь 2014
Май 2014
Апрель 2014
Март 2014
Февраль 2014
Январь 2014
Декабрь 2013
Ноябрь 2013
Октябрь 2013
Сентябрь 2013
Август 2013
Июль 2013
Июнь 2013
Май 2013
Апрель 2013
Март 2013
Февраль 2013
Январь 2013
Декабрь 2012
Ноябрь 2012
Октябрь 2012
Сентябрь 2012
Июль 2012
Июнь 2012
Май 2012
Апрель 2012
Март 2012
Февраль 2012
Январь 2012
Декабрь 2011
Ноябрь 2011
Октябрь 2011
Сентябрь 2011
Август 2011
Май 2011

RSS


RSS новости
свиной грипп
new balance кроссовки

Новостная лента форума ailab.ru

2016-04-28 17:00

искусственный интеллект

При разработке игры GumGuy, над которой работаем мы с командой, возникла необходимость в написании искусственного интеллекта для четырех боссов, которых в рамках разработки игр называют неигровыми персонажами (Non-player character). Это такие персонажи, которые управляются программой.
Нашей главной задачей было выбрать легкий в реализации и достаточно функциональный алгоритм. В настоящее время популярны машина состояний, или как еще ее называют конечный автомат, и дерево поведения.
Машина состояний хорошо подходит только для шаблонного и повторяющегося поведения.

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

Для босса обезьяны в GumGuy нужна была система, выполняющая действия одно за другим по заданному сценарию, и которую можно было создать достаточно быстро. Решением стало создание собственной системы. Язык программирования, на котором создана система и скрипты для уровня - C#, а движок для самой игры - Unity3D.
Схема действия системы команд следующая:
1) Каждая новая команда для выполнения наследуется от класса GameCommand и переопределяет методы Start и Update, отвечающие за инициализацию команды и за ее обновление;

2) Затем команды группируются с помощью объекта класса CommandsPacket, который регулирует последовательность их выполнения;

3) Созданные пакеты команд передаются объекту класса CommandsQueue. Этот класс отвечает за обновление пакетов команд и связывает созданную систему с движком Unity3D.

Вот некоторые из команд, которые используются на уровне с боссом этой игры:
- MonkeyGoTo - идти к заданной точке на этаже, чтобы потом выполнить какое-то другое действие;

- MonkeyThrowBox - бросить ящик в направлении игрока, чтобы он мог уклониться от него;

- MonkeyThrowBanana - бросить бананы в сторону, чтобы они пролетели сквозь боковые трубы к игроку, и он подпрыгнул, избежав столкновения;


- MonkeyJump - подпрыгнуть на месте, чтобы сбросить ящики или балки вниз;

- MonkeyFallBox - сбросить ящики при приземлении после прыжка;


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


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

Рассмотрим преимущества и недостатки созданной системы
Преимущества:
- Не обязательно создавать состояния для контролируемого объекта
- Система быстро интегрируется в проект
- Созданные команды можно использовать повторно
- Есть возможность приостанавливать выполнение пакета команд
- Можно создавать новые пакеты команд в процессе игры и добавлять их на выполнение
Недостатки:
- Недостаточная гибкость при изменении условий с необходимостью выполнения другого набора команд (текущий пакет просто приостанавливается, даже если он уже не нужен)
- Рост количества объектов для одной команды при использовании различных входных данных
- Часто метод Start команды остается пустым
Созданная система позволяет с легкостью конструировать насыщенные и динамичные сцены, использовать повторно созданные команды и применять их не только к неигровым персонажам, но и к другим объектам на сцене. Благодаря этому построен целый игровой уровень в реальном проекте.

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

Если кому интересно - вот наши, пока-что небольшие, сообщества: VK,FaceBook, Twitter, Instagram!

gamedevblogs.ru

Создать тему для обсуждения на форуме ailab.ru


кроссовки нью баланс