2013-02-24 2 views
2

Я делаю ИИ для решения простой игры-невидимки. Цель состоит в том, чтобы идти в точку цели, не будучи пойманным врагами (с фонариками). Я уже реализовал алгоритм поиска пути (A *), но без логики для избежания или ожидания в определенном месте, прежде чем двигаться снова. На карте нет других элементов. Там только игрок, охранники и цель. Единственная идея, которую я имею сейчас, заключается в том, что когда ИИ уже построил путь, координаты на пути, которые будут замечены, будут исключены, и ИИ постоянно восстанавливает путь. Но враги постоянно движутся (динамическая обструкция), поэтому я думаю, что достичь цели невозможно только с этим. Любые другие идеи?stealth game AI solver

ответ

2

Предполагая, что у вас достаточно памяти для игры, и движения охраны известны/детерминированы, вы можете моделировать время как другое измерение (например, ваша 2D-карта становится ареной 3D пространства-времени).

Тогда вы можете сделать A * через время ... враги с движущимися прожекторами будут «статичными» в пространстве-времени.

+0

Спасибо. Я действительно думал о чем-то подобном, что в определенное время охранники не заметят вас, если вы пойдете по этому пути, но я не знал, как его реализовать. – Zik

+0

Не говорите мне больше, как реализовать это пространство-время, я просто подумаю об этом. :) По крайней мере, у меня появилась идея, что будет другое измерение. – Zik

0

Построение хорошей эвристики - это ключ.

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

+0

Спасибо. Охранники имеют фиксированный рисунок. – Zik

+0

Если у охранников есть фиксированный шаблон, относительно легко сделать, чтобы ваш эвристический подход учитывал этот шаблон, и тогда у вас будет детерминированный поиск A *, который может найти оптимальное решение каждый раз. –

+0

Хорошо, я подумаю об эвристике. :) – Zik