Искусственный интеллект должен быть простым с точки зрения программирования. Скотт Орр считает: «Чем больше вычислений вы используете, тем сильнее загружен процессор». Как это влияет на игру?
Это может снизить частоту кадров, что, конечно, скажется на игре. Используйте подстановочные таблицы для хранения упорядоченных данных и ускорения вычислений. Чем выше скорость вычислений, тем сообразительнее будет искусственный интеллект.
Насколько, по сравнению с другими жанрами, трудно программировать ИИ для спортивной игры? «И труднее, и проще...» И вот почему:
С одной стороны, поскольку наши программы строятся на основе известных правил, нам проще решить, что же, собственно, нужно делать. С другой стороны, покупатели тоже знакомы с тем, как этот вид спорта выглядит в реальности, и поэтому уровень их ожиданий повышен. Нельзя махнуть рукой на поведение компьютерного игрока только потому, что вам не удается добиться точности в его действиях. Если что-то происходит в реальной игре, это должно присутствовать и в компьютерной, иначе пользователь быстро решит, что его в чем-то обделили. Мощность современных ПК вполне позволяет создавать достаточно сложный интеллект. Просто диву даешься, сравнивая то, что вытворяют компьютерные игроки теперь (речь об игровой тактике и согласованности действий), с тем, что они могли пять лет назад. И все это непрерывно совершенствуется, ведь мы разрабатываем игры для все более мощных машин и закладываем в них опыт, полученный нами в то время, когда мы создавали предыдущие игры.
Мы напомнили Скотту, что наша книга планируется как «библия» для начинающего разработчика, мечтающего, быть может, программировать ИИ для условно-бесплатных и бесплатных игр, а может, и для полноценных коммерческих продуктов. Когда Скотта Орра попросили дать какой-нибудь совет по программированию ИИ на языке Си++, он ответил так:
Мастерство приходит с опытом. Используйте разные подходы и смотрите на результаты. В конце концов, у вас получится что-нибудь, что будет работать лучше того, с чего вы начинали.
Создайте библиотеку стандартных подпрограмм, которые вы часто используете. После этого (будем надеяться, что собранные в вашей библиотеке программы окажутся эффективными и экономичными) вы сможете гораздо успешнее пользоваться предыдущими наработками. Кроме того, не забывайте о выгоде использования подстановочных таблиц. Это уменьшает необходимый объем вычислений, ускоряет обновление экрана и сам процесс игры.
Марк Обейнел (Marc Aubanel), ЕА Sports
Познакомьтесь с еще одним сотрудником ЕА Sports: Марк Обейнел, продюсер прекрасно раскупаемых и всемирно известных футбольных игр серии FIFA (включая игры World Cup).
Марк считает, что для командных спортивных игр приходится программировать довольно сложные системы искусственного интеллекта, ведь компьютер одновременно имеет дело с несколькими персонажами. «Люди обладают невероятной интуицией, они чувствуют, как должно выполняться то или иное действие, - говорит Марк. - У компьютера такого чувства нет, поэтому необходимо научить его моделировать интуицию». По словам Марка, сложнее всего программировать ИИ для бейсбола. Этому есть несколько причин.
Дело в том, что у пользователя есть подсознательное представление о том, что должен делать игрок. Если запрограммированные в ИИ действия отличаются от этого представления, считайте свою работу неудовлетворительной. Допустим, игрок, находящийся на дальней стороне поля, ловит мяч слева. Что он предпримет дальше? Бросит мяч в «дом»? На вторую базу? На третью? Не будет бросать вообще? Как предусмотреть все эти варианты при программировании? Ведь во внимание должны быть приняты десятки факторов: сколько людей находится на каждой базе, сколько аутов на счету команды и так далее...
«В футболе, - считает Марк Обейнел, - все основано на форме, пространстве и подчиненности единой цели». Марк признает, что без проблем не обходится и здесь, однако «футбольный» ИИ моделировать несколько легче, чем «бейсбольный».
Один из описанных Марком способов настройки системы ИИ в играх серии FIFA (например FIFA '99), состоит в том, что игрок бьет по воротам с вратарем, которым управляет компьютер.
При этом подсчитывается: а) количество забитых мячей, которые должны были быть взяты, б) количество взятых мячей, которые должны были попасть в ворота. После тщательного анализа данных в алгоритм вводится наиболее реалистичное среднее значение.
Еще одна цель программиста - попытаться научить компьютерных игроков чувствовать пространство игрового поля. Марк утверждает, что это серьезная проблема:
Расставить футболистов на поле нетрудно. Гораздо труднее сделать так, чтобы игрок «осознавал», зачем его поставили на конкретную позицию, когда он должен оставаться на месте и в каких случаях может это место покидать, чтобы он умел правильно выбирать тактику игры и так далее. Одним словом, необходимо привить ему «чувство пространства».
Дополнительная задача для системы ИИ - компенсация потери игрока (в случае его удаления). «Игроки должны согласовано изменить свое расположение, чтобы «прикрыть» отсутствующего», - говорит Марк.
| На этих экранах показано, каким образом Марк Обейнел и его сотрудники тестируют ИИ для серии игр FIFA. Обратите внимание на команды для каждого из игроков: «стремиться к мячу», «атаковать», «обороняться» и «пасовать». Номера обозначают позиции игроков на координатной сетке (поле). (Приводится с разрешения компании Electronic Arts, Inc.) |
![]() |
| Джею Уилсону хочется, чтобы враги в шутерах действовали, как люди, и время от времени допускали ошибки, а не были бы идеальными ботами из дефматч-режима. Внимание: враг прячется за стойкой (скриншот из игры Blood 2)! (Приводится с разрешения Monolith Productions, Inc.) |
![]() |