26 октября 2006
Обновлено 17.05.2023

Форум разработчиков: искусственный разум

Форум разработчиков: искусственный разум - изображение обложка

При фразе «искусственный интеллект» фантазия обычных людей выдает картинки каких-нибудь андроидов, механических собачек и ужасы «Матрицы». Редкий собеседник вспомнит о компьютерных играх, хотя применительно к ним это словосочетание используется уже четверть века. Впрочем, чему удивляться? В каждом втором боевике про звездное будущее человечества встречаются разумные андроиды, которые думают как люди (а иногда и вместо людей). Успехи же искусственного интеллекта (он же AI , далее по тексту ИИ ) в играх вечно подвергаются сомнениям. Как обстоят дела на интеллектуальном фронте, нам сегодня расскажут:

nekЮрий Некрасов , генеральный директор CrioLand ;

dabАлексей Дубовой , руководитель и главный программист Elemental Games ;

AGМакс Тумин , менеджер и геймдизайнер GFI Russia (бывшая MiST landSouth );

ChSМихаил Пискунов , ведущий сценарист KDV Games ;

FeodorФедор Мукин , директор компании Arise ;

MushroomerВасилий Кашников , менеджер Temporal Games ;

ZeitcatcherИван Никитин , директор и ведущий программист Temporal Games ;

Представители «Игромании » в лице Владимира Болвина, Алексея Макаренкова и Светланы Померанцевой тоже складывали извилины в копилку общего коллективного разума. По окончании беседы ни одна капля серого вещества не пропала.

Имитация мозга

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

[Игромания]: Все давно привыкли к понятиям «графический движок» и «физический движок». Их можно приобрести, чтобы сэкономить время на разработке. А вот ИИ отдельно от игры пока не предлагает никто. Нет таких движков. Почему?

[nek]: Есть еще понятие «игровой движок». В нашем проекте « Завтра война » ИИ присутствует точно. Но вот как его оттуда выделить? Чтобы продавать ИИ, нужно для начала разобраться, что это такое. А в этом человечество за последнее два тысячелетия не особенно преуспело.

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

Скорее мы увидим летающие машины или еще какие-нибудь не менее удивительные плоды научных прорывов в физике и математике. Там задачи чисто прикладные, а вот философские вопросы, к каковым относится ИИ, технари решать не умеют. Быть может, человечеству стоит лучше финансировать философов? Глядишь, и надумают чего-нибудь…

[ChS]: Действительно, ИИ-движков нет. Есть только модные методики — вроде отсечения шума, многовариантного анализа (с трудом представляю, что это такое, просто подслушал разговор). Почему нет таких движков? Потому, что все объекты в игре — это наборы параметров, не больше и не меньше. Любое действие, видимое или невидимое, — это изменения параметров в этих наборах.

Для игрока монстр представляет собой совокупность «здоровье + скорость + damage + 3D-модель». Для программиста все не так. Он видит огромную абстрактную структуру данных с кучей переменных с длинными именами, о назначении которых знает только он один. То, что называют ИИ, является прежде всего системой всестороннего анализа параметров, с помощью которых игра манипулирует юнитами и устанавливает правила их взаимодействия. К тому же этот набор параметров для каждой игры глубоко индивидуален.

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

Для каждого проекта приходится создавать свои анализаторы параметров — системы ИИ (в отличие от графических сред, в которых разнообразие и уникальность сведена к минимуму). Игровой интеллект легко представить в виде черного ящика. На входе — жестко заданный программистом список параметров и переменных, которые надо проанализировать. На выходе — не менее жестко заданный список действий, которые выполняются в ответ на изменение входящих сигналов. По сути, это никакой не интеллект, а просто автомат, неспособный выйти из заданных рамок.

ИИ-имитации

[ChS]: Вообще, анализ и логика — не главные признаки разума. Главное — творчество, создание чего-то такого, что не имело никаких аналогов, что невозможно логически вывести из проанализированной картины мира (тот же тетрис). Творческие существа в качестве врагов, несомненно, опасны. Но чтобы создать таких, надо хотя бы понимать, как происходит это самое творчество у самих людей, а на этом направлении пока полный порядок. В смысле понимания — ноль целых ноль десятых.

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

Механика искусственных извилин

[Feodor]: Грубо говоря, любой современный ИИ построен по схеме «событие — реакция». Мы и в нормальной жизни определяем интеллект собеседника, к примеру, по его реакции на наши слова. Так и тут. Для каждого отдельного игрового события (а иногда и группы) программистами специально пишется отдельный код, «объясняющий», что именно должен сделать компьютер в том или ином случае. Например, что может произойти, если игрок грабит персонажа:

1. NPC не реагирует, поскольку ситуация разработчиками не предусмотрена. « У-у-у , — говорит пользователь. — Компьютер совсем без мозгов! »

2. NPC нападает на геймера. Программисты написали реакцию « если игрок грабит NPC, его атакуют ». И так на протяжении всей игры. « У-у-у , — говорит игрок. — Какие-то они не живые, все время одно и то же делают ».

3. Программисты закодировали 10 вариантов поведения NPC на случай грабежа. Включаются дополнительные условия (день, ночь, подкрались со спины или шарят по карманам, глядя в лицо). Поначалу кажется — вот он, настоящий ИИ. Однако если провести за игрой много времени, все 10 вариантов будут перепробованы многократно. Игрок опять разочарован: « Скрипты ! »

4. Гипотетически можно прописать 1000 вариантов поведения NPC. Очевидно, что объем работы увеличивается в разы. При этом основной массе игроков достаточно упрощенного варианта ИИ. Поэтому подобная роскошь еще долго останется чисто гипотетической.

[dab]: Сейчас в играх применяются два основных варианта ИИ. В первом случае все заскриптовано: сам юнит не принимает практически никаких решений. Все прописано заранее: в какую точку идти и что там делать. Это очень простой путь. Однако такую игру неинтересно переигрывать — все известно заранее.

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

[Feodor]: По большому счету, в обоих вариантах ИИ все заскриптовано. В первом случае юнит реагирует только на одно событие в один момент времени. И реакция на каждое событие у него тоже только одна. Во втором варианте юниту прописано несколько реакций. Они выбираются случайно, либо по каким-то правилам, которые устанавливают разработчики. Сам юнит никаких решений не принимает. Он не способен на это.

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

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

[dab]: Скрипт — это жестко заданная, неизменяемая последовательность действий (логическая цепочка). Как правило, пишется небольшой код (не более 100 строчек на юнита), в котором полностью определяется поведение объекта (пойди туда, сделай то). Если же в игре возникают ситуации, когда по каким-то причинам бот может поступить так или иначе, это уже не скрипт, а игровая логика (как раз ИИ).

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

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

[AG]: На самом деле неважно, жесткая ли это последовательность, fuzzy-logic или нейронные сети, главное, чтобы играть было интересно. Если можно достичь этого жесткой последовательностью — надо использовать ее. Если нужно что-то более комплексное, придется делать продвинутый ИИ. Однако действовать надо осторожно, поскольку жалобы « ой, тут все на скриптах » ничем не лучше жалоб « ой, какой тупой ИИ ». Только стоят значительно дороже.

Умные движки

[Zeitcatcher]: На Западе есть нечто похожее на ИИ-движки. Распространяются в виде middleware-модулей, вроде RenderWare, или как отдельные SDK. Поскольку искусственный интеллект очень тесно связан с другими компонентами игрового движка, его «прикручивают» к логической части (некоторые даже считают ИИ с игровой логикой синонимами). Только нужно понимать, что эти библиотеки не научат игровых персонажей принимать решения. Они представляют собой скорее сборник алгоритмов и методик.

Например, «поиск пути» — по этому алгоритму игровые персонажи двигаются из точки А в точку Б и успешно обходят препятствия. Или «конечный автомат», «нечеткая логика», «нейронные сети» — эти технологии задают очень гибкую (применимую практически для любых задач и жанров) основу, которая открывает широкие возможности для программирования игровой логики. А главное, не требуется заново изобретать велосипед.

На мой взгляд, идеалом игрового ИИ можно считать некий конструктор, который не только подстраивает игру под игрока (меняет сложность в зависимости от уровня подготовки геймера), но и перестраивает ее либо в рамках заданных разработчиком, либо вообще свободно. Тогда получится столько вариантов прохождения, что игрок даже не поймет, играет ли он в одну и ту же игру или в разные. Однако заскриптованные события обходятся значительно дешевле разработок инновационного ИИ. Поэтому на сегодняшний день мало кто считает эту область приоритетной. В 90-х гг. все были одержимы графикой, сейчас — физикой. Так и до ИИ время дойдет.

Железный друг лучше нубов двух

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

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

[dab]: Эх… Если бы все было так просто. Я очень много играл в онлайне и могу сказать, что найти партнера для продолжительной игры, да еще с подходящим игровым опытом, очень сложно. Да что там — практически невозможно. Несколько раз пытался поиграть в H eroes of M ight and M agic 5 по локалке и через интернет. И ни разу не то что не завершил игру, а даже наполовину не продвинулся! Все время возникают какие-то проблемы, причем вовсе не технические.

Не каждый захочет играть с тобой целый день. Не каждый будет ждать, пока ты обдумаешь свой ход. А отложенная партия практически наверняка никогда не будет закончена, поскольку потом непросто выбрать время, которое устраивало бы обоих игроков. Другой пример — из W orld of Warcraft. Помниться, надо было мне выполнить квест. Причем для этого требовалось пройти через регион Scholomance партией из пяти человек. А это восемь часов геймплея. Поход оказался затяжным, поскольку остальные четверо квестом особо не интересовались. Некоторые из них уже бывали в этом инстансе. Кроме того, область населена высокоуровневыми монстрами и гибнуть за здорово живешь никто не хотел. Надеюсь понятно, насколько зубодробительным получился поход? К слову сказать, я выполнил этот квест через два месяца, после множества неудачных попыток… За эти долгие восемь часов, пока шли по инстансу, в партии сменилось много людей.

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

[Mushroomer]: Основное отличие того ИИ, который хотелось бы видеть, от того, который мы наблюдаем сейчас, заключается в неадекватной оценке ситуации. Безусловно, основная задача компьютера — не победить игрока, а красиво ему проиграть. И это очень непросто, учитывая насколько все геймеры разные.

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

Интуитивный ИИ

[dab]: Хороший ИИ сделать сложнее, чем хорошую графику. Мало того что имеется множество решений одной и той же задачи, так еще и существует огромное количество разных правил, которые необходимо учитывать. Зачастую просто невозможно предусмотреть все возможные комбинации. К тому же иногда нельзя точно поставить и описать даже основную задачу. Мы, люди, применяем в этих случаях интуицию. ИИ применять нечего — у него есть только то, что мы в него заложили.

* * *

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

Комментарии
Чтобы оставить комментарий,Войдите или Зарегистрируйтесь