Искусственный интеллект в играх и не только
Чуть больше года назад я принял в очередной раз участие в разработке компьютерной игры в качестве программиста AI (искусственного интеллекта), а поскольку время позволяло, то решил "выложиться" по полной. В результате произошел казус — компьютер стало практически невозможно обыграть. Жанр игры — RTS (военная стратегия реального времени). А в качестве основного алгоритма лег, если объяснять простыми словами, не математическо- переборный принцип, известный нам из мира шахматных программ, а чуть более адаптированный под поведенческую модель человека. Хотя оба варианта схожи. "Интеллект"-то мы ослабили, а подумал я вот о чем…
То, что компьютер может быть умнее человека — это уже неоспоримый факт. Причем в данном случае мы говорим не о бытовом устройстве типа телевизора, а о железе, в которое человек вдохнул разум. Звучит красиво, хотя… в принципе, так оно и есть. И речь идет отнюдь не о фетишизме. Как говорил Генрих Рудольф Герц (благодаря успешным опытам которого мы сейчас имеем беспроводную связь): "Уравнения умнее своих создателей". То есть AI, или, как у нас его называют, ИИ, существует и развивается. В принципе, читая сейчас литературу, можно встретить разделение романтизированного понятия "искусственного интеллекта" на чисто научно направление и прикладное, хотя бы в рамках тех же игр. Честно сказать, ваш покорный слуга, который активно интересуется данной темой в силу профессиональной необходимости, все-таки убрал бы границу. Во-первых, потому, что игры — это одна из первых ниш, где серьезно занялись практическим воплощением ИИ, во-вторых… 2000-е во многом оказались переломными. Раньше под AI в играх подразумевали несколько строк кода if… then… else либо небольшой скрипт или еще как-то.
Сейчас же AI занимает значительную часть программ, и это будет только совершенствоваться и усложняться впоследствии. Подумать только, методологии, которые на сегодня считаются обыденностью, несколько десятилетий назад считались крутейшей фантастикой. 2000-е оказались переломными и по той причине, что пользователи, не видя "в лице" компьютера равного интеллектуального соперника, организовали виртуальные миры в сетях и интернете. Но! Это только переходный этап. Уже сейчас появляются игры с множеством разумных искусственных персонажей, и сами являющиеся огромными мирами. Причем компьютерные обитатели таких виртуальных сред являются их полноценными жителями. То есть подчиняются определенным законам тех миров, как физическим, так и поведенческим. Алгоритмическая база, используемая в рамках научных разработок в области искусственного интеллекта, практически идентична тому, что используется в играх. Правда, на сегодня это идет с некоторыми упрощениями, но само отставание невелико, и есть некоторое различие. Для объяснения возьмем книгу Стюарта Рассела и Питера Норвига "Искусственный интеллект. Современный подход". Не пугайтесь, саму книгу сейчас печатать не будем, а используем в качестве базиса их четыре категории в описаниях самого понятия ИИ, то есть это могут быть системы:
. которые думают подобно людям;
. которые действуют подобно людям;
. которые думают рационально (в данном случае речь скорее о выборе математически оптимального решения, а не о том, что человек может думать нерационально);
. которые действуют рационально.
В данном случае понятие ИИ применяется в рамках сравнения с человеком, хотя определенной долей искусственного разума в играх обладает множество различных объектов и персонажей. Даже если брать обычную биологию, то для той же кошки нужно писать свой вариант ИИ. Но все же изначально возьмем за основу сравнение с человеком. Честно сказать, приведенные четыре пункта из списка несколько спорны именно из-за сравнения с людьми, поскольку сам ИИ строится несколько по другим законам, даже если и наблюдается подобие. Немного непонятно. ОК. Перейдем к конкретике. Берем некий отдельный автономный виртуальный персонаж (я специально не буду вас пичкать специализированной терминологией с "аниматами", NPC и т.п., чтобы лишний раз не запутывать). Ему (этому персонажу) соответствует собственный ИИ, который является, по существу, фрагментом кода, или отдельным программным модулем. Тот, в свою очередь, говоря фигурально, должен взаимодействовать с виртуальным игровым миром практически точно так же, как и игрок. То есть у него должна присутствовать собственная сенсорная система, например, для определения тех же стен (он должен их обходить и не видеть через них) и т.п., модули анализа и самостоятельной выработки решений. В играх старого поколения поведение того или иного виртуального персонажа было вполне предсказуемым и практически полностью программировалось. Поэтому для ряда игр вы можете найти такие абсолютные для применения вещи, как прохождения, опубликованные на сайтах фанатов. Виртуальные персонажи нового поколения подразумевают более сложные системы ИИ, которые уже практически не нужно программировать от и до. То есть они предусматривают некоторую самостоятельность… а в современных вариантах уже и самообучаемость. То есть современным программистам не нужно прописывать код "от корки до корки", а просто поиграть с тем же виртуальным персонажем. Плюс к этому добавим улучшенную физику, гораздо больший реализм — и получаем… великолепную картину современности. Но все же вернемся к нашему списку. На самом деле человек — не машина, и рациональное мышление свойственно ему в меньшей мере. Например, уже множество исследований доказало, что мы гораздо чаще поступаем интуитивно, нежели запланированно. Причем данные исследования в основном проводились в рамках изучения поведения людей при игре в шахматы и т.п. В принципе, и мышление у нас образно-ассоциативное.
ИИ таковым не обладает, и ему гораздо ближе переборно-математический принцип. Поэтому зачастую (особенно или в старых, или в недорогих проектах) "очеловечивание" производится обычным введением случайностей и т.п. в процессе расчетов. В данном случае не подразумевается конкретно выбор оптимального маршрута следования из пункта А в пункт Б, а вообще реакция на определенные события. Тут мне вспомнился наглядный пример-случай, когда вашему покорному слуге неожиданно позвонили ночью коллеги по цеху. Оказалось, что они срочно сдавали свою игру, а AI, как всегда… э-эх… о нем иногда думают в последнюю очередь — проблема была в том же "очеловечивании" рационального алгоритма, но нужно было все сделать быстро. Я и сказал тогда, зевая и посмотрев на спящую девушку рядом, ключевое слово: random:). Правда, это уже относится несколько к другой природе нашего мышления, но такая "микстура" тогда помогла. Хотя каждый из нас склонен к спонтанности и непредсказуемости в большей или меньшей степени (random — в пер. с англ.: сделанный или выбранный наугад, случайный, беспорядочный; в большинстве языков программирования есть такая функция). Самообучаемость ИИ очень хороша и тем, что виртуальные персонажи либо вообще виртуальные игроки могут копировать поведенческую модель того или иного игрока-человека и/или подстраиваться под него. В последнем случае мы получаем максимально возможную интерактивность. Особенно хорошо это проявляется не в рамках отдельных персонажей для RPG, шутеров и т.п., а стратегических игр, когда пользователь сражается с компьютером. Например, если игрок-человек атакует военную базу компьютерного соперника только с одной стороны, то электронный "мозг" адаптируется и начинает укреплять ее в первую очередь. И в данном случае мы уже получаем полноценные и так необходимые два первых пункта из приведенного списка. Помимо этого, на данный момент существует множество различных подходов к созданию ИИ, выраженных не только в разных алгоритмах, но и вообще в видении решений. Например, методик для решения каждого из вопросов по ИИ существует огромное количество. И это, на самом деле, просто удивительно. Ведь мы говорим не об устоявшейся науке, а о направлении, которое только начало формироваться. Уже сейчас есть множество организаций типа AI Interface Standards Committee, которые, как понятно, в той или иной степени хотят ввести некоторые стандарты, правила, распространить их до общепринятых норм. С одной стороны, это очень хорошо, поскольку есть конкретные организации, которые занимаются вопросом. С другой стороны, это попытка стать доминантой на формирующемся и весьма перспективном направлении, хотя никто не мешает формированию конкурирующих объединений. Что касается самообучающихся ИИ, то тут нельзя не вспомнить общество исследователей в области изучения и моделирования адаптивного поведения International Society for Adaptive Behavior, которое образовалось в 1990 году. А если упомянуть о конференции Animals and Animats Conference, в рамках которых ученые из различных областей обсуждают поведенческие реакции и адаптацию у биологических видов и… синтетических "жителей" виртуальных миров ("аниматов"), то сама картина разворачивания направления становится более ясной. И это мы не упомянули еще ряд организаций и мероприятий, конкретно увязанных на разработке ИИ.
10-ка Алекса Дж. Шампандара
Это только один из примеров, к тому же, хороший повод для того, чтобы статья была "с картинками":). Ведь не забывайте, что у нас образно- ассоциативное мышление, и текст с изображениями мы воспринимаем гораздо лучше. Алекс Дж. Шампандар — это один из нынешних гуру игрового ИИ. На полках наших книжных магазинов сейчас вы можете найти перевод его книги "Искусственный интеллект в компьютерных играх", которая уже несколько лет считается одним из главных настольных учебников для программистов AI по всему миру. В принципе, в книге изложены все современные методики создания искусственного интеллекта — вернее, основные из них. Причем Шампандар является ведущим программистом FEAR (проект разработки игровых средств ИИ с открытым кодом), состоит в нескольких ключевых организациях по AI, в том числе и в AI Interface Standards Committee, постоянно публикует статьи на тему. На его сайте сайт выставлена собственная оценка компьютерным играм с точки зрения искусственного интеллекта, оформленная в виде ТОП-10. Смотрим…
1. Black & White (2001, Lionhead Studios).
2. F.E.A.R. (2005, Monolith Productions).
3. Faзade (2005, Procedural Arts).
4. Halo (2001, Bungie).
5. Creatures (1996, Millennium Interactive).
6. The Sims (2000, Maxis).
7. Thief (1996, Looking Glass Studios).
8. Total War (2000-2006, The Creative Assembly).
9. Half-Life (1996, Valve).
10. Sim City (1989, Maxis).
Ну что же, видно, что список с 2005-го не обновлялся, хотя на самом деле в последнее время происходила большей частью "откатка" прежних наработок, и в области ИИ в том числе. Сейчас же наступил период "великой модернизации" всего и вся. Отдельно стоит отметить, что AI на сегодня является одним из самых дорогих "кирпичиков" в рамках игр — это не сравнить с парой строчек кода, что было много лет назад. Очень многие разработчики на этом пытаются сэкономить, но результат виден сразу невооруженным глазом. Особенно когда мы наблюдаем игру, в которой идет движение "от ролика к ролику", а сам виртуальный мир не является свободным. Вводя ограничения, сужая рамки, разработчики принуждают игрока принять какое-то конкретное решение, но это старый подход. А вот те же вышеупомянутые Gothic3, Oblivion — это уже новое поколение игр с большими мирами, множеством сюжетных линий и т.п. И, хоть мы снизошли до конкретики, стоит отметить, даже посмотрев на рейтинг Шампандара, что великолепная история всему уже есть.
В завершение
Само направление ИИ как раздел науки еще очень молодое (началось в 1943 году, хотя как молодое… практически как теория информации), и, в принципе, в реальном мире его двигают в основном роботы:) и военные, а в виртуальном — игры, даже шахматы. И зачастую решается множество отнюдь нетривиальных задач, о возникновении которых раньше писали только в чисто теоретических выкладках, а иногда и просто не задумывались. Компьютерные игры с их разумными виртуальными мирами на сегодня являются основным плацдармом для откатки систем искусственного интеллекта различных типов, и первое, где человек сможет увидеть, не побоюсь этого слова, разумное лицо ИИ — это экран монитора.
Кристофер, christopher@tut.by
То, что компьютер может быть умнее человека — это уже неоспоримый факт. Причем в данном случае мы говорим не о бытовом устройстве типа телевизора, а о железе, в которое человек вдохнул разум. Звучит красиво, хотя… в принципе, так оно и есть. И речь идет отнюдь не о фетишизме. Как говорил Генрих Рудольф Герц (благодаря успешным опытам которого мы сейчас имеем беспроводную связь): "Уравнения умнее своих создателей". То есть AI, или, как у нас его называют, ИИ, существует и развивается. В принципе, читая сейчас литературу, можно встретить разделение романтизированного понятия "искусственного интеллекта" на чисто научно направление и прикладное, хотя бы в рамках тех же игр. Честно сказать, ваш покорный слуга, который активно интересуется данной темой в силу профессиональной необходимости, все-таки убрал бы границу. Во-первых, потому, что игры — это одна из первых ниш, где серьезно занялись практическим воплощением ИИ, во-вторых… 2000-е во многом оказались переломными. Раньше под AI в играх подразумевали несколько строк кода if… then… else либо небольшой скрипт или еще как-то.
Сейчас же AI занимает значительную часть программ, и это будет только совершенствоваться и усложняться впоследствии. Подумать только, методологии, которые на сегодня считаются обыденностью, несколько десятилетий назад считались крутейшей фантастикой. 2000-е оказались переломными и по той причине, что пользователи, не видя "в лице" компьютера равного интеллектуального соперника, организовали виртуальные миры в сетях и интернете. Но! Это только переходный этап. Уже сейчас появляются игры с множеством разумных искусственных персонажей, и сами являющиеся огромными мирами. Причем компьютерные обитатели таких виртуальных сред являются их полноценными жителями. То есть подчиняются определенным законам тех миров, как физическим, так и поведенческим. Алгоритмическая база, используемая в рамках научных разработок в области искусственного интеллекта, практически идентична тому, что используется в играх. Правда, на сегодня это идет с некоторыми упрощениями, но само отставание невелико, и есть некоторое различие. Для объяснения возьмем книгу Стюарта Рассела и Питера Норвига "Искусственный интеллект. Современный подход". Не пугайтесь, саму книгу сейчас печатать не будем, а используем в качестве базиса их четыре категории в описаниях самого понятия ИИ, то есть это могут быть системы:
. которые думают подобно людям;
. которые действуют подобно людям;
. которые думают рационально (в данном случае речь скорее о выборе математически оптимального решения, а не о том, что человек может думать нерационально);
. которые действуют рационально.
В данном случае понятие ИИ применяется в рамках сравнения с человеком, хотя определенной долей искусственного разума в играх обладает множество различных объектов и персонажей. Даже если брать обычную биологию, то для той же кошки нужно писать свой вариант ИИ. Но все же изначально возьмем за основу сравнение с человеком. Честно сказать, приведенные четыре пункта из списка несколько спорны именно из-за сравнения с людьми, поскольку сам ИИ строится несколько по другим законам, даже если и наблюдается подобие. Немного непонятно. ОК. Перейдем к конкретике. Берем некий отдельный автономный виртуальный персонаж (я специально не буду вас пичкать специализированной терминологией с "аниматами", NPC и т.п., чтобы лишний раз не запутывать). Ему (этому персонажу) соответствует собственный ИИ, который является, по существу, фрагментом кода, или отдельным программным модулем. Тот, в свою очередь, говоря фигурально, должен взаимодействовать с виртуальным игровым миром практически точно так же, как и игрок. То есть у него должна присутствовать собственная сенсорная система, например, для определения тех же стен (он должен их обходить и не видеть через них) и т.п., модули анализа и самостоятельной выработки решений. В играх старого поколения поведение того или иного виртуального персонажа было вполне предсказуемым и практически полностью программировалось. Поэтому для ряда игр вы можете найти такие абсолютные для применения вещи, как прохождения, опубликованные на сайтах фанатов. Виртуальные персонажи нового поколения подразумевают более сложные системы ИИ, которые уже практически не нужно программировать от и до. То есть они предусматривают некоторую самостоятельность… а в современных вариантах уже и самообучаемость. То есть современным программистам не нужно прописывать код "от корки до корки", а просто поиграть с тем же виртуальным персонажем. Плюс к этому добавим улучшенную физику, гораздо больший реализм — и получаем… великолепную картину современности. Но все же вернемся к нашему списку. На самом деле человек — не машина, и рациональное мышление свойственно ему в меньшей мере. Например, уже множество исследований доказало, что мы гораздо чаще поступаем интуитивно, нежели запланированно. Причем данные исследования в основном проводились в рамках изучения поведения людей при игре в шахматы и т.п. В принципе, и мышление у нас образно-ассоциативное.
ИИ таковым не обладает, и ему гораздо ближе переборно-математический принцип. Поэтому зачастую (особенно или в старых, или в недорогих проектах) "очеловечивание" производится обычным введением случайностей и т.п. в процессе расчетов. В данном случае не подразумевается конкретно выбор оптимального маршрута следования из пункта А в пункт Б, а вообще реакция на определенные события. Тут мне вспомнился наглядный пример-случай, когда вашему покорному слуге неожиданно позвонили ночью коллеги по цеху. Оказалось, что они срочно сдавали свою игру, а AI, как всегда… э-эх… о нем иногда думают в последнюю очередь — проблема была в том же "очеловечивании" рационального алгоритма, но нужно было все сделать быстро. Я и сказал тогда, зевая и посмотрев на спящую девушку рядом, ключевое слово: random:). Правда, это уже относится несколько к другой природе нашего мышления, но такая "микстура" тогда помогла. Хотя каждый из нас склонен к спонтанности и непредсказуемости в большей или меньшей степени (random — в пер. с англ.: сделанный или выбранный наугад, случайный, беспорядочный; в большинстве языков программирования есть такая функция). Самообучаемость ИИ очень хороша и тем, что виртуальные персонажи либо вообще виртуальные игроки могут копировать поведенческую модель того или иного игрока-человека и/или подстраиваться под него. В последнем случае мы получаем максимально возможную интерактивность. Особенно хорошо это проявляется не в рамках отдельных персонажей для RPG, шутеров и т.п., а стратегических игр, когда пользователь сражается с компьютером. Например, если игрок-человек атакует военную базу компьютерного соперника только с одной стороны, то электронный "мозг" адаптируется и начинает укреплять ее в первую очередь. И в данном случае мы уже получаем полноценные и так необходимые два первых пункта из приведенного списка. Помимо этого, на данный момент существует множество различных подходов к созданию ИИ, выраженных не только в разных алгоритмах, но и вообще в видении решений. Например, методик для решения каждого из вопросов по ИИ существует огромное количество. И это, на самом деле, просто удивительно. Ведь мы говорим не об устоявшейся науке, а о направлении, которое только начало формироваться. Уже сейчас есть множество организаций типа AI Interface Standards Committee, которые, как понятно, в той или иной степени хотят ввести некоторые стандарты, правила, распространить их до общепринятых норм. С одной стороны, это очень хорошо, поскольку есть конкретные организации, которые занимаются вопросом. С другой стороны, это попытка стать доминантой на формирующемся и весьма перспективном направлении, хотя никто не мешает формированию конкурирующих объединений. Что касается самообучающихся ИИ, то тут нельзя не вспомнить общество исследователей в области изучения и моделирования адаптивного поведения International Society for Adaptive Behavior, которое образовалось в 1990 году. А если упомянуть о конференции Animals and Animats Conference, в рамках которых ученые из различных областей обсуждают поведенческие реакции и адаптацию у биологических видов и… синтетических "жителей" виртуальных миров ("аниматов"), то сама картина разворачивания направления становится более ясной. И это мы не упомянули еще ряд организаций и мероприятий, конкретно увязанных на разработке ИИ.
10-ка Алекса Дж. Шампандара
Это только один из примеров, к тому же, хороший повод для того, чтобы статья была "с картинками":). Ведь не забывайте, что у нас образно- ассоциативное мышление, и текст с изображениями мы воспринимаем гораздо лучше. Алекс Дж. Шампандар — это один из нынешних гуру игрового ИИ. На полках наших книжных магазинов сейчас вы можете найти перевод его книги "Искусственный интеллект в компьютерных играх", которая уже несколько лет считается одним из главных настольных учебников для программистов AI по всему миру. В принципе, в книге изложены все современные методики создания искусственного интеллекта — вернее, основные из них. Причем Шампандар является ведущим программистом FEAR (проект разработки игровых средств ИИ с открытым кодом), состоит в нескольких ключевых организациях по AI, в том числе и в AI Interface Standards Committee, постоянно публикует статьи на тему. На его сайте сайт выставлена собственная оценка компьютерным играм с точки зрения искусственного интеллекта, оформленная в виде ТОП-10. Смотрим…
1. Black & White (2001, Lionhead Studios).
2. F.E.A.R. (2005, Monolith Productions).
3. Faзade (2005, Procedural Arts).
4. Halo (2001, Bungie).
5. Creatures (1996, Millennium Interactive).
6. The Sims (2000, Maxis).
7. Thief (1996, Looking Glass Studios).
8. Total War (2000-2006, The Creative Assembly).
9. Half-Life (1996, Valve).
10. Sim City (1989, Maxis).
Ну что же, видно, что список с 2005-го не обновлялся, хотя на самом деле в последнее время происходила большей частью "откатка" прежних наработок, и в области ИИ в том числе. Сейчас же наступил период "великой модернизации" всего и вся. Отдельно стоит отметить, что AI на сегодня является одним из самых дорогих "кирпичиков" в рамках игр — это не сравнить с парой строчек кода, что было много лет назад. Очень многие разработчики на этом пытаются сэкономить, но результат виден сразу невооруженным глазом. Особенно когда мы наблюдаем игру, в которой идет движение "от ролика к ролику", а сам виртуальный мир не является свободным. Вводя ограничения, сужая рамки, разработчики принуждают игрока принять какое-то конкретное решение, но это старый подход. А вот те же вышеупомянутые Gothic3, Oblivion — это уже новое поколение игр с большими мирами, множеством сюжетных линий и т.п. И, хоть мы снизошли до конкретики, стоит отметить, даже посмотрев на рейтинг Шампандара, что великолепная история всему уже есть.
В завершение
Само направление ИИ как раздел науки еще очень молодое (началось в 1943 году, хотя как молодое… практически как теория информации), и, в принципе, в реальном мире его двигают в основном роботы:) и военные, а в виртуальном — игры, даже шахматы. И зачастую решается множество отнюдь нетривиальных задач, о возникновении которых раньше писали только в чисто теоретических выкладках, а иногда и просто не задумывались. Компьютерные игры с их разумными виртуальными мирами на сегодня являются основным плацдармом для откатки систем искусственного интеллекта различных типов, и первое, где человек сможет увидеть, не побоюсь этого слова, разумное лицо ИИ — это экран монитора.
Кристофер, christopher@tut.by
Компьютерная газета. Статья была опубликована в номере 16 за 2008 год в рубрике технологии