AI для смешанной боевой системы Turn Based + Real Time. Что-то вроде «Gambit like» правильный подход?

Это, возможно, вопрос, который был задан 100 раз 1000 различными способами. Я прошу прощения за это:)

Я в процессе создания ИИ для игры, над которой я работаю. Игра основана на повороте, в духе Final Fantasy, но также имеет множество вещей, которые происходят в реальном времени (реакции). Я экспериментировал с FSM, HFSM и деревьями поведения. Никто из них не чувствовал себя «правильным» для меня, и все чувствовали либо слишком ограниченное, либо слишком общее /большое.

Идея, с которой я сейчас играю, - это что-то вроде «механизма правил», который можно сравнить с системой Gambit от Final Fantasy 12. У меня был бы набор предопределенных личностей. Каждая из этих личностей будет иметь набор условий, которые она проверила бы на каждом событии (Turn start, время для реагирования и т. Д.). Эти условия будут упорядочены по приоритету, а первая, которая возвращает true, будет действием, которое я принимаю. Эти условия также могут указывать на действие «выбора», которое является лишь действием, которое сделает выбор, основанный на некоторой функции Utility. Сортировка сочетания FSM /HFSM и подход «Утилита».

Итак, «гамбит» с личностью «Целителя» может выглядеть примерно так:

  

(ON) Союзник HP = 0% -> Выберите заклинание «Рельеф»

     

(ON) Ally HP <50% -> Выберите заклинание «Исцеление»

     

(ON) Self HP <65% -> Выберите заклинание «Исцеление»

     

(ON) Ally Debuff -> Выберите заклинание «Дебафф-удаление»

     

(ON) Ally Lost Buff -> Выберите Buff spell

Аналогично, «гамбит» с личностью «Агрессор» может выглядеть так:

  

(ON) Foe HP <10% -> Выберите навык атаки

     

(ON) Foe any -> Выберите цель -> Выберите навык атаки

     

(ON) Self Lost Buff -> Выберите Buff spell

     

(ON) Foe HP = 0% -> Толкайте игрока

Что мне нравится в этом подходе, это имеет смысл в моей голове. Также было бы очень легко построить «Редактор AI» с таким подходом. Я беспокоюсь о том, будет ли это слишком ограничивать? Может быть, это будет слишком сложно?

Есть ли у кого-нибудь опыт работы с ИИ в играх Turn Based, которые могли бы дать мне некоторое понимание этого подхода .. или предложить другой подход?

Большое спасибо заранее!

5 голосов | спросил Jason L. 7 J0000006Europe/Moscow 2013, 23:57:55

2 ответа


4

Для такой игры, как вы описали, вы можете рассмотреть возможность использования полного Планировщика . Это позволяет описать простые преобразования мирового состояния, которое может выполнять ИИ. По сути, AI планирует несколько шагов загодя, чтобы достичь желаемой цели. Этот подход является дорогостоящим, но для игры с поворотом он отлично подходит для классических методов min /max и альфа /бета.

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

STRIPS - хорошо известный алгоритм планирования, который очень эффективно использовался в F.E.A.R http://en.wikipedia.org/wiki/STRIPS

статья Джеффа Оркина на его STRIPS для FEAR - отличное стартовое место. SDK до F.E.A.R также доступен, чтобы взглянуть на некоторые из деталей реализации ИИ. http://web.media.mit.edu/~jorkin/gdc2006_orkin_jeff_fear.pdf

ответил David Young 8 J0000006Europe/Moscow 2013, 02:02:35
1

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

Каждый «узел» в моем ИИ имеет метод, который я вызываю в зависимости от типа («Решение», «Условие» или «Действие»). У всех них также есть шаг предварительного условия и постусловия, который позволяет мне оценить, должен ли я даже запустить это действие или если это действие было успешным. Если все 3 метода возвращают true, я могу продолжить переход на следующий узел (или, если последний узел, я закончил).

Каждый метод также принимает текущий BattleState и текущий AIState. При необходимости AIState изменяется по каждому поведению. BattleState не изменяется AI, а вместо этого системой битвы в результате ИИ.

Я действительно надеюсь, что это имеет смысл. Если нет, вот скриншот моего AI Editor. Он показывает «глупое» дерево личности, которое я могу оценить слева направо, когда это необходимо. Я также могу предварительно оценить узел на основе того, где объект будет в X секунд.

введите описание изображения здесь>> </p>

<p> Каждый узел имеет в себе немного умней, которые не представлены в редакторе. Например, в действии «ChooseTarget» есть куча умений, по которым должна быть выбрана цель: кто имеет самую высокую угрозу, кто имеет самое низкое здоровье и т. Д. Я мог бы представлять все эти решения в дереве, но я не видел нужно для этого ... еще. </p>

<p> Каждый из этих узлов также выполняется независимо (в основном). Только узлы зависят от узлов до них. И, более точно, только несколько узлов имеют ВОЗМОЖНОСТЬ в зависимости от узла перед ними. Например, «UseAttackSkill on Target» зависит от узла перед ним, потому что ему нужен целевой набор в AIState. Если бы это было, скажем, «UseAttackSkill на Enemy Any», я мог бы выполнить этот узел без учета его текущего местоположения в дереве поведения. </p></body></html>

ответил Jason L. 3 J000000Wednesday13 2013, 17:06:42

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132