Игровой ИИ (Искусственный интеллект) является в последнее время предметом множества дискуссий, и на то есть причины. Чем дальше игры продвигаются в области графики и звука, тем более очевидным становится всё менее «интеллектуальная» игра игрока-компьютера, противника человека.

Поведенческий ИИ

Игровой ИИ не обязательно должен быть ИИ в стандартном смысле этого слова. На самом деле AI в играх должен обеспечить как можно большее соответствие своего поведения реальности.

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

Есть две категории действий AI: спонтанные действия и реакция юнита на что-либо.

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

Реализовав оба этих поведенческих типа в своей игре, вы можете создать иллюзию того, что игровые юниты самостоятельны и «интеллектуальны», а не просто боты.

Реакционный ИИ

Реакционные вводные как правило должны быть основаны на чувствах юнита. При моделировании AI человеческого персонажа необходимо принимать во внимание их диапазон и расстояние зрения, слуха и, если применимо, запаха.

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

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

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

Спонтанный ИИ

Спонтанный AI чрезвычайно важен для создания чувства жизни в игровых мирах. Если все, кого вы встречаете, просто стоят и ждут, пока вы не заговорите с ними или не убьете их, или, что почти ещё хуже, бродят по кругу бесцельно, такой игровой мир не будет выглядеть убедительно. Метод борьбы с этой проблемой — дать всем юнитам множество не-тревожных целей. Это может быть ходьба по заданному пути, остановка около различных других юнитов, чтобы поговорить, и ходьба в месте с другими юнитами по заданным маршрутам. Я говорю «заданным», т.к. иначе, пока вы не придумаете очень хороший алгоритм поиска пути, будет казаться блуждающими бесцельно.

Групповые действия

Что действительно заставит вашего юнита выглядеть реалистично? Если в различных ситуациях он будет поступать так же, как мог бы поступить игрок — это и будет реалистично. На самом деле, не нужно придумывать бесконечное число действий, нужно всего лишь предусмотреть достаточно действий, чтобы покрыть любую ситуацию, в которую может попасть юнит.
И чем больше вы их предусмотрите, тем выше вероятность, что игрок поверит в то, что ваши войска действуют «разумно». Поставьте себя на место ваших юнитов. Как бы вы отреагировали на различные виды атаки врага, на встречу врага? Что бы вы делали, если ничего вообще не происходит?

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