Компьютерные игры. Как это делается

       

Чем проще, тем лучше


Искусственный интеллект должен быть простым с точки зрения программирования. Скотт Орр считает: «Чем больше вычислений вы используете, тем сильнее загружен процессор». Как это влияет на игру?

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

Насколько, по сравнению с другими жанрами, трудно программировать ИИ для спортивной игры? «И труднее, и проще...» И вот почему:

С одной стороны, поскольку наши программы строятся на основе известных правил, нам проще решить, что же, собственно, нужно делать. С другой стороны, покупатели тоже знакомы с тем, как этот вид спорта выглядит в реальности, и поэтому уровень их ожиданий повышен. Нельзя махнуть рукой на поведение компьютерного игрока только потому, что вам не удается добиться точности в его действиях. Если что-то происходит в реальной игре, это должно присутствовать и в компьютерной, иначе пользователь быстро решит, что его в чем-то обделили. Мощность современных ПК вполне позволяет создавать достаточно сложный интеллект. Просто диву даешься, сравнивая то, что вытворяют компьютерные игроки теперь (речь об игровой тактике и согласованности действий), с тем, что они могли пять лет назад. И все это непрерывно совершенствуется, ведь мы разрабатываем игры для все более мощных машин и закладываем в них опыт, полученный нами в то время, когда мы создавали предыдущие игры.

Мы напомнили Скотту, что наша книга планируется как «библия» для начинающего разработчика, мечтающего, быть может, программировать ИИ для условно-бесплатных и бесплатных игр, а может, и для полноценных коммерческих продуктов. Когда Скотта Орра попросили дать какой-нибудь совет по программированию ИИ на языке Си++, он ответил так:

Мастерство приходит с опытом. Используйте разные подходы и смотрите на результаты. В конце концов, у вас получится что-нибудь, что будет работать лучше того, с чего вы начинали.
Создайте библиотеку стандартных подпрограмм, которые вы часто используете. После этого (будем надеяться, что собранные в вашей библиотеке программы окажутся эффективными и экономичными) вы сможете гораздо успешнее пользоваться предыдущими наработками. Кроме того, не забывайте о выгоде использования подстановочных таблиц. Это уменьшает необходимый объем вычислений, ускоряет обновление экрана и сам процесс игры.

Марк Обейнел (Marc Aubanel), ЕА Sports

Познакомьтесь с еще одним сотрудником ЕА Sports: Марк Обейнел, продюсер прекрасно раскупаемых и всемирно известных футбольных игр серии FIFA (включая игры World Cup).

Марк считает, что для командных спортивных игр приходится программировать довольно сложные системы искусственного интеллекта, ведь компьютер одновременно имеет дело с несколькими персонажами. «Люди обладают невероятной интуицией, они чувствуют, как должно выполняться то или иное действие, - говорит Марк. - У компьютера такого чувства нет, поэтому необходимо научить его моделировать интуицию». По словам Марка, сложнее всего программировать ИИ для бейсбола. Этому есть несколько причин.

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

«В футболе, - считает Марк Обейнел, - все основано на форме, пространстве и подчиненности единой цели». Марк признает, что без проблем не обходится и здесь, однако «футбольный» ИИ моделировать несколько легче, чем «бейсбольный».

Один из описанных Марком способов настройки системы ИИ в играх серии FIFA (например FIFA '99), состоит в том, что игрок бьет по воротам с вратарем, которым управляет компьютер.


При этом подсчитывается: а) количество забитых мячей, которые должны были быть взяты, б) количество взятых мячей, которые должны были попасть в ворота. После тщательного анализа данных в алгоритм вводится наиболее реалистичное среднее значение.

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

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

Дополнительная задача для системы ИИ - компенсация потери игрока (в случае его удаления). «Игроки должны согласовано изменить свое расположение, чтобы «прикрыть» отсутствующего», - говорит Марк.

На этих экранах показано, каким образом Марк Обейнел и его сотрудники тестируют ИИ для серии игр FIFA. Обратите внимание на команды для каждого из игроков: «стремиться к мячу», «атаковать», «обороняться» и «пасовать». Номера обозначают позиции игроков на координатной сетке (поле). (Приводится с разрешения компании Electronic Arts, Inc.)


И еще совет: лучше всего создавать игровой ИИ в соответствующей тестовой среде. О чем идет речь?

Работая над искусственным интеллектом для игр FIFA, мы не использовали ни звуковых эффектов, ни графических «красивостей», - просто каркасные фигурки на плоском зеленом поле. Таким образом исключается путаница. Кроме того, на экран выводились разноцветные стрелки и линии, исходящие от игроков, которые отражали все решения ИИ при передаче мяча, определении траектории движения и т.п., - это сильно облегчало отладку программы. Не будь этого, ошибки ИИ мог распознать только программист. Словом, получилась очень эффективная и «демократичная» среда для тестирования игры, позволившая нам проводить отладку безостановочно.



«Главное - не путать реализм и интересность», - говорит Марк.

Хорошая система может выглядеть совершенно реальной, но на самом деле это далеко не так, и делается это нарочно, дабы игра стала лучше. Мы чаще нарушаем правила реального мира, чем следуем им. Например, настоящему футболисту требуется примерно 18 секунд, чтобы пробежать от одного края поля до другого; в играх FIFA это можно сделать в два раза быстрее, потому что 18 секунд для виртуального футбола - это слишком долго.

Вы еще встретитесь с Марком в главе 12, где он обсуждает интерфейс пользователя в спортивных играх.

Джей Уилсон (Jay Wilson), Monolith Productions

Джей Уилсон, ведущий дизайнер уровней игр Blood и Blood: Plasma Pak, а также руководитель проекта Blood 2: The Chosen, считает, что создание ИИ - один из самых важных этапов работы над 3D-шутерами.

По его убеждению, в индустрии игровых программ достигнут значительный прогресс в разработке ИИ. В качестве «передовиков» он называет игры Half-Life, Unreal и StarCraft. Тем не менее Джей согласен, что далеко не каждому нравятся сетевые игры, и говорит, что его отец, к примеру, играет в компьютерные игры, чтобы отдохнуть, а не посоревноваться (что предлагается в большинстве многопользовательских игр).

Что касается ИИ для шутеров от первого лица, Джей говорит, что персонажи игры обычно воспроизводят не реальных людей, а скорее виртуальных противников из сетевой битвы в дефматч-режиме. А именно:

Компьютерные персонажи современных шутеров, наделенных продвинутым ИИ, играют как боты, а не реальные люди. Увы, лично мне хочется, чтобы соперничающие со мной «железные мозги» вели себя, подобно живым людям: бежали в укрытие, роняли оружие, стреляли и промахивались и так далее.

Любителям веб-серфинга обязательно следует заглянуть на знаменитый веб-сайт www.cris.com/-swoodcoc/ai.html, посвященный искусственному интеллекту для компьютерных игр. На странице Game AI проблема создания ИИ обсуждается на примере ряда новых и классических игр для ПК. Кроме того, здесь есть раздел со множеством ссылок на другие веб-сайты по данному вопросу.Не проходите мимо!

Джею Уилсону хочется, чтобы враги в шутерах действовали, как люди, и время от времени допускали ошибки, а не были бы идеальными ботами из дефматч-режима. Внимание: враг прячется за стойкой (скриншот из игры Blood 2)! (Приводится с разрешения Monolith Productions, Inc.)



Содержание раздела