12 мая 2011 г.

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


Рассмотрим в этой статье искусственный интеллект. Статья будет разбита на разделы, поэтому каждый сможет быстро найти то, что его интересует.
1. Искусственный интеллект и его понятие.
2. Главные проблемы.
3. Задачи.
4. Технологии создания.



1. Искусственный интеллект и его понятие.
Искусственный интеллект (ИИ, Artificial intelligence, AI) — набор программных методик, которые используются в компьютерных играх для создания иллюзии интеллекта в поведении персонажей, управляемых компьютером. Его применяют для контролирования неигровых персонажей (Non-player character, NPC).

Искусственный интеллект является не просто частью игры, а одним из самых главных её составляющих. Кто то может представить себе игру без врагов? С кем нам сражаться и воевать, если их не будет?

Даже тетрис становится интересней, если компьютер будет играть параллельно с нами в каком-нибудь уголку окна, ведь появляется дух соперничества. Но не только вражеские интеллектуалы доставляют радость в играх. К большому сожалению, не во всех играх разработчики на сторону игрока ставят дружественных объектов «с мозгами». Постоянно бегать/летать/скакать одному очень угнетает, а когда кто-то рядом уже не так страшно, да и намного интересней.



2. Главные проблемы
Многие наверно скажут, что главная проблема, это то, что искусственный интеллект никогда не заменит человека. А ведь в компьютерных играх этого совсем и не нужно. Кто захочет перестреливаться с вражеским юнитом в какой-нибудь FSP (First-person shooter) десятки минут? Для этого вполне подойдет игра по сети.
По мне, две главные проблемы это – «сверхглупые» и «сверхумные» враги. В первом случае игрок довольно быстро заскучает, во втором обидится, а это приведет к тому, что игра будет закрыта. А кому нравится проигрывать? Целью искусственного интеллекта является вовсе не обыгрывать игрока.

Супер пупер врага наверно легче написать, чем глупого, так как у них нет погрешности при стрельбе, он знает куда надо стрелять (чтобы сразу попасть в голову), он имеет данных больше чем игрок, поэтому его от них надо ограничить. Можно сделать проверку, которая скажет виден ли враг для нашего NPC или нет, можно сделать ему разброс при стрельбе, способов подпортить его читерские способности навалом.



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

  • Движение (нахождение пути, патрулирование, перемещение, преследование, уклонение и др.);
  • Атака (стрельба, перезарядка, бросок гранаты, установка мины и др.);
  • Взаимодействие с предметами (включить/выключить свет, пнуть предмет, попавшийся на пути, подобрать боеприпасы и др.);
  • Связь с другими NPC (переговоры по рации, включение сигнализации, запуск сигнальной ракеты и др.)
Полно других очень и очень даже интересных задач.



4. Технологии создания ИИ в играх
Теперь ознакомимся с некоторыми самыми популярными технологиями создания игрового ИИ.

Система, основанная на правилах (Rule Based Systems).

Она заключается в составлении узкой области поведения при каких либо условиях. Таким образом, частичка этой системы состоит из условия и действия, а при объединении этих частиц получается - автоматизированная система, основанная на правилах (проверках). Как только одно из условий этой цепи возвращает истину, выполняется его действие и выход из системы.

Пример вражеского патрулирующего NPC:

Если наши жизни < 20%, то убегаем.
Если враг в зоне нашей атаки, то атакуем.
Если мы видим врага, бежим к нему.
Если наши силы = 100%, патрулируем.
Стоим.


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

Конечные автоматы (Finite State Machine).

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

Например: в состоянии патрулирования, если мы увидели врага, мы переходим в состояние «атаковать», а в случае если устали, то в состояние «стоять».

Конечные автоматы бывают детерминированными и недетерминированными. Детерминированные это те конечные автоматы, переход состояний которых определен строго. Недетерминированные же имеют некую случайность. Скажем, мы можем и вовсе не входить в состояние убегать, а воевать до победного конца или смерти. А так же мы можем «случайно» не увидеть врага, которого бы увидели в детерминированном конечном автомате.

Нейронные сети (Neural Network).

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




0 коммент.:

Отправить комментарий