Старпом
12.09.2007, 03:01
ИНТЕЛЛЕКТ ПЯТОЙ ТОЧКИ
Здравствуйте, Светлана, Старпом, а также многоуважаемый и жутко брутальный Ктулху. Кстати, товарищ Ктулху, очень рад, что вы появились среди ведущих — в «Почте», на мой взгляд, давно не хватало именно вашей категоричности, всеобъемлющего несогласия и, как это ни странно звучит, нетерпимости к откровенной халтуре со стороны разработчиков и авторов некоторых писем в журнал.
Но хватит дифирамбов, плавно перейдут непосредственно к главной теме письма. В журнале вы уже много раз разбирали проблему искусственного интеллекта. Но очень мало писали о том, почему же на современной, на мой взгляд, очень мощной компьютерной базе до сих пор не реализовали очень-очень крутой AI. Ведь, по сути, ситуация в современных играх мало отличается от той, что была в выходящих три-четыре и более лет назад.
Если сравнивать, скажем, с первым Doom, то прогресс, конечно на лицо. Но если проводить аналогии с тем же Quake (первым и вторым), с Venom (а ему уже сколько лет стукнуло!), то получается что AI и не развивается вовсе. Прогресс стоит на месте. Куда же смотрят разработчики? Почему графика становится значительно лучше, почему сюжеты часто делаются сложнее, а интеллект противников топчется на месте?
Я уже 4 года изучаю программирование и сейчас понимаю, что, в принципе, можно было бы реализовать куда лучший искусственный интеллект, чем в подавляющем большинстве компьютерных игр. То есть даже сейчас, хотя я еще далеко не профессионал, если мне дать задание сделать классный умный интеллект в каком-нибудь «Сталкере», то я, возможно, справлюсь с задачей лучше, чем создатели игры.
Но! Я не верю, что они глупее меня или хуже знают программирование. А это значит только одно — есть какие-то неизвестные мне ограничения и проблемы. Расскажите, пожалуйста, в чем они состоят.
Ведь я не один такой. Даже на вашем форуме есть несколько десятков тем, посвященных именно проблеме AI в играх. Причем мне интересно было бы услышать не просто перечень проблем, но и возможные варианты выхода из них. Вы ведь постоянно общаетесь с разработчикам, наверняка, они делились с вами мыслями по этому поводу.
С уважением, Николай Косарев (г. Киев).
АЛЕКСЕЙ МАКАРЕНКОВ
:eek: (Трагично вздыхал и разглагольствовал)
Вопрос — в самое яблоко. Червивое и подгнившее с краев. AI в компьютерных играх, действительно, развивается крайне медленно. Еле-еле перебирает слабенькими ложноножками в огромной грязной луже прогресса. Давайте для начала разберемся с вопросом, почему геймеры так негодуют по поводу недостаточно качественного AI и существует ли идеальный искусственный интеллект, о котором все так мечтают.
От любого компьютерного противника геймер в первую очередь ждет действий адекватных — внимание! — своему собственному поведению. Звучит это странно, но именно так и есть. Для любого геймера идеал AI — это такое поведение компьютерных болованчиков, которое полностью соответствует ожиданию данного конкретного игрока. Стоит ли говорить, что ожидания у всех разные.
Представьте себе ну, скажем, тактический экшен. Играет в него начинающий геймер, который тактикой в целом не очень-то интересуется, как действуют войска специального назначения в боевой ситуации не знает, основных приемов полевой стратегии не изучал. Если в игре есть хоть сколько-нибудь слаженное действие компьютерных оппонентов и их (даже не в тему) выкрики о перегруппировках будут выглядеть как очень умный AI. Просто потому, что наш геймер не представляет себе, как оно должно быть на самом деле, он банально не знает, чего ждать от игры и воспринимает то, что есть как идеал.
А вот вам другая ситуация. Играет в тактический экшен спецназовец, который и пороху в реальных стычках уже нюхнул, и о тактике в локальных боевых ситуациях знает больше, чем любой генерал. Для него практически любой AI будет некачественным. Потому, что для него мерило качества — точная имитация тактики боя в реальных условиях. С точностью до миллиметра.
У геймеров же требования к AI варьируют между этими двумя описанными крайностями. И какие запросы у каждого предугадать заранее невозможно. А вот что очень даже реально, так это собрать статистику и делать искусственный интеллект таким, каким он устраивает подавляющее большинство геймеров. Большинство же, как это ни печально, не очень требовательно и совершенно не хардкорно. Это мы тут в «Игромании» все из себя такие подкованные и требовательные. Это и к вам, кстати, товарищи читатели, относится. Вы же «Игроманию» не просто так читаете, а в частности потому, что ваши запросы к играм столь же высоки, как и наши.
Но факт на лицо — у большинства требования ниже. И игры делаются с расчетом на них. Мы же можем хоть слюной изойти, лучше не станет до тех пор, пока большая часть геймеров во всем мире не станут хоть немного хардкорщиками.
Но это лишь одна сторона медали. Есть на пути классного AI и вполне технические проблемы. Одна из главных — крайне сложно, почти невозможно, реализовать достоверное поведение врагов скриптовыми методами. Скрипт это, по сути, всегда триггер (двух или многопозиционный), работающий по схеме «Если А, то Б». Компьютерный болванчик, оказавшись в какой-то игровой ситуации, всегда действует именно по такому алгоритму. Прописали ему разработчики возможность убегать или прятаться в ответ на меткий выстрел в пятую точку — будет убегать или прятаться. Научили метко стрелять главному герою в репу в ответ на попытку заколоть ножом — будет метко стрелять.
Человек, если утрировать, в жизни тоже действует по триггерному алгоритму. Коснулся горячего чайника — отдернул руку. Съел несвежую колбасу — вывернуло наизнанку. Увидел красивую девушку на улице — заголосил, забегал, телефончик попросил.
Казалось бы, проблемы нет. Знай себе программируй «человеческие триггеры» и делай AI очень крутым. Ан, нет! У живого человека, во-первых, таких триггеров несметное множество. Во-вторых, каждый из них имеет очень широкий вариативный ряд. То есть в одной и той же ситуации разные программы поведения реализуются по-разному. Иногда очень похоже, иногда совершенно непохоже, но — отличаются всегда у одного и того же индивида. Как бы грубо это не звучало, но интеллект, разум и сознательное мышление — это и есть число вариаций заложенных в каждого из нас триггеров. Чем этих алгоритмов больше, тем выше интеллект.
Вот мы и вышли с вами на вполне конкретную проблему разработчиков компьютерных игр. Можно было бы запрограммировать весь спектр триггеров живого человека. Но это — колоссальная по объему работа. Миллионы разных ситуация, миллиарды возможных ответных реакций на эти ситуации. И несметное число вариантов одной и той же реакции.
Баста, карапузики! Приехали. За всю жизнь ни один программист не напишет столько триггеров. Ни один современный процессор столько не просчитает. Поэтому девелоперы выбирает только основные ситуации реагирования (триггеры) и программируют только их, каждую с минимумом вариантов.
Что самое интересное, на нынешней технической базе вполне можно создать первоклассный AI (как глобальный для RTS, так и локальный, скажем, для экшенов), если освободить процессор от просчета графики, геометрии огромных уровней и прочего, прочего, прочего. Вот только продать игру с графикой уровня первого Quake и с уровнями размером в пару комнат — не удастся. Вот и вкладываются игрострой-компании в первую очередь в графику и дизайн, а AI разрабатывается чуть ли не по остаточному принципу. Такие дела.
СВЕТЛАНА ПОМЕРАНЦЕВА
:sml: (Пронзала девелоперов мыслью)
Мне кажется, что проблема современного AI не столь глобальна, хотя и это, конечно, тоже. Думаю, что для того, чтобы все остались довольны, совсем не обязательно делать полную имитацию поведения людей. Все дело не в широте охвата, а в невнимании к деталям.
Мне, как заядлой геймерше, было бы достаточно, чтобы монстры и другие враги в играх делали все то же, что делают и сейчас. Лишь бы они все действия осуществляли реалистично. Приведу несколько простых примеров. Если я выстрелила в монстра, и он начал убегать, то чтобы делал он это не просто по стандартной схеме, а, скажем, в некоторых случаях сломя голову, иногда прихрамывая на ногу, в которую я попала. Или падал на землю и пытался отползти по-пластунски.
Если враг спрятался в укрытие, то для достоверности, он мог бы настороженно оттуда выглядывать. Высунет только голову и снова спрячется. Или всего лишь оружие из-за преграды подымет и даст пару очередей.
С командными действиями врага та же ситуация. Когда группа неприятелей, управляемых AI, берет меня в кольцо, я прощу им неточности тактики, если они будут по ходу дела переговариваться, обмениваться разными жестами (прикрой меня, атакуем, отступаем). Ведь это запрограммировать совсем несложно. Триггеров, о которых говорил Алексей, нужно всего ничего. От силы раза в полтора больше, чем делается в большинстве современных игр.
То есть, на мой взгляд, проблема не столько в AI, сколько в его имитации. А она основана на скриптах лишь отчасти, в основном это анимация. И вот мы снова вышли на графику. Разработчики просто не так ее совершенствуют. Ну, сделайте вы поменьше полигонов в модельке, только различных фаз анимации прибавьте и на скрипты «повесьте». Мы же, геймеры, все в восторге будем и звонкой монетой за вашу игру проголосуем.
Кстати, пока не забыла, скажу очень важную вещь. Многие разработчики часто говорят, что они разработали супер-новаторскую, неповторимую систему естественного поведения врагов, совсем не завязанную на скрипты. Мне очень неприятно читать подобные анонсы, потому что я точно знаю, что любой AI так или иначе основан именно на скриптах. По-другому просто быть не может. Другое дело, что скрипты можно использовать с умом, а можно совершенно бездумно, во вред геймплею.
Здравствуйте, Светлана, Старпом, а также многоуважаемый и жутко брутальный Ктулху. Кстати, товарищ Ктулху, очень рад, что вы появились среди ведущих — в «Почте», на мой взгляд, давно не хватало именно вашей категоричности, всеобъемлющего несогласия и, как это ни странно звучит, нетерпимости к откровенной халтуре со стороны разработчиков и авторов некоторых писем в журнал.
Но хватит дифирамбов, плавно перейдут непосредственно к главной теме письма. В журнале вы уже много раз разбирали проблему искусственного интеллекта. Но очень мало писали о том, почему же на современной, на мой взгляд, очень мощной компьютерной базе до сих пор не реализовали очень-очень крутой AI. Ведь, по сути, ситуация в современных играх мало отличается от той, что была в выходящих три-четыре и более лет назад.
Если сравнивать, скажем, с первым Doom, то прогресс, конечно на лицо. Но если проводить аналогии с тем же Quake (первым и вторым), с Venom (а ему уже сколько лет стукнуло!), то получается что AI и не развивается вовсе. Прогресс стоит на месте. Куда же смотрят разработчики? Почему графика становится значительно лучше, почему сюжеты часто делаются сложнее, а интеллект противников топчется на месте?
Я уже 4 года изучаю программирование и сейчас понимаю, что, в принципе, можно было бы реализовать куда лучший искусственный интеллект, чем в подавляющем большинстве компьютерных игр. То есть даже сейчас, хотя я еще далеко не профессионал, если мне дать задание сделать классный умный интеллект в каком-нибудь «Сталкере», то я, возможно, справлюсь с задачей лучше, чем создатели игры.
Но! Я не верю, что они глупее меня или хуже знают программирование. А это значит только одно — есть какие-то неизвестные мне ограничения и проблемы. Расскажите, пожалуйста, в чем они состоят.
Ведь я не один такой. Даже на вашем форуме есть несколько десятков тем, посвященных именно проблеме AI в играх. Причем мне интересно было бы услышать не просто перечень проблем, но и возможные варианты выхода из них. Вы ведь постоянно общаетесь с разработчикам, наверняка, они делились с вами мыслями по этому поводу.
С уважением, Николай Косарев (г. Киев).
АЛЕКСЕЙ МАКАРЕНКОВ
:eek: (Трагично вздыхал и разглагольствовал)
Вопрос — в самое яблоко. Червивое и подгнившее с краев. AI в компьютерных играх, действительно, развивается крайне медленно. Еле-еле перебирает слабенькими ложноножками в огромной грязной луже прогресса. Давайте для начала разберемся с вопросом, почему геймеры так негодуют по поводу недостаточно качественного AI и существует ли идеальный искусственный интеллект, о котором все так мечтают.
От любого компьютерного противника геймер в первую очередь ждет действий адекватных — внимание! — своему собственному поведению. Звучит это странно, но именно так и есть. Для любого геймера идеал AI — это такое поведение компьютерных болованчиков, которое полностью соответствует ожиданию данного конкретного игрока. Стоит ли говорить, что ожидания у всех разные.
Представьте себе ну, скажем, тактический экшен. Играет в него начинающий геймер, который тактикой в целом не очень-то интересуется, как действуют войска специального назначения в боевой ситуации не знает, основных приемов полевой стратегии не изучал. Если в игре есть хоть сколько-нибудь слаженное действие компьютерных оппонентов и их (даже не в тему) выкрики о перегруппировках будут выглядеть как очень умный AI. Просто потому, что наш геймер не представляет себе, как оно должно быть на самом деле, он банально не знает, чего ждать от игры и воспринимает то, что есть как идеал.
А вот вам другая ситуация. Играет в тактический экшен спецназовец, который и пороху в реальных стычках уже нюхнул, и о тактике в локальных боевых ситуациях знает больше, чем любой генерал. Для него практически любой AI будет некачественным. Потому, что для него мерило качества — точная имитация тактики боя в реальных условиях. С точностью до миллиметра.
У геймеров же требования к AI варьируют между этими двумя описанными крайностями. И какие запросы у каждого предугадать заранее невозможно. А вот что очень даже реально, так это собрать статистику и делать искусственный интеллект таким, каким он устраивает подавляющее большинство геймеров. Большинство же, как это ни печально, не очень требовательно и совершенно не хардкорно. Это мы тут в «Игромании» все из себя такие подкованные и требовательные. Это и к вам, кстати, товарищи читатели, относится. Вы же «Игроманию» не просто так читаете, а в частности потому, что ваши запросы к играм столь же высоки, как и наши.
Но факт на лицо — у большинства требования ниже. И игры делаются с расчетом на них. Мы же можем хоть слюной изойти, лучше не станет до тех пор, пока большая часть геймеров во всем мире не станут хоть немного хардкорщиками.
Но это лишь одна сторона медали. Есть на пути классного AI и вполне технические проблемы. Одна из главных — крайне сложно, почти невозможно, реализовать достоверное поведение врагов скриптовыми методами. Скрипт это, по сути, всегда триггер (двух или многопозиционный), работающий по схеме «Если А, то Б». Компьютерный болванчик, оказавшись в какой-то игровой ситуации, всегда действует именно по такому алгоритму. Прописали ему разработчики возможность убегать или прятаться в ответ на меткий выстрел в пятую точку — будет убегать или прятаться. Научили метко стрелять главному герою в репу в ответ на попытку заколоть ножом — будет метко стрелять.
Человек, если утрировать, в жизни тоже действует по триггерному алгоритму. Коснулся горячего чайника — отдернул руку. Съел несвежую колбасу — вывернуло наизнанку. Увидел красивую девушку на улице — заголосил, забегал, телефончик попросил.
Казалось бы, проблемы нет. Знай себе программируй «человеческие триггеры» и делай AI очень крутым. Ан, нет! У живого человека, во-первых, таких триггеров несметное множество. Во-вторых, каждый из них имеет очень широкий вариативный ряд. То есть в одной и той же ситуации разные программы поведения реализуются по-разному. Иногда очень похоже, иногда совершенно непохоже, но — отличаются всегда у одного и того же индивида. Как бы грубо это не звучало, но интеллект, разум и сознательное мышление — это и есть число вариаций заложенных в каждого из нас триггеров. Чем этих алгоритмов больше, тем выше интеллект.
Вот мы и вышли с вами на вполне конкретную проблему разработчиков компьютерных игр. Можно было бы запрограммировать весь спектр триггеров живого человека. Но это — колоссальная по объему работа. Миллионы разных ситуация, миллиарды возможных ответных реакций на эти ситуации. И несметное число вариантов одной и той же реакции.
Баста, карапузики! Приехали. За всю жизнь ни один программист не напишет столько триггеров. Ни один современный процессор столько не просчитает. Поэтому девелоперы выбирает только основные ситуации реагирования (триггеры) и программируют только их, каждую с минимумом вариантов.
Что самое интересное, на нынешней технической базе вполне можно создать первоклассный AI (как глобальный для RTS, так и локальный, скажем, для экшенов), если освободить процессор от просчета графики, геометрии огромных уровней и прочего, прочего, прочего. Вот только продать игру с графикой уровня первого Quake и с уровнями размером в пару комнат — не удастся. Вот и вкладываются игрострой-компании в первую очередь в графику и дизайн, а AI разрабатывается чуть ли не по остаточному принципу. Такие дела.
СВЕТЛАНА ПОМЕРАНЦЕВА
:sml: (Пронзала девелоперов мыслью)
Мне кажется, что проблема современного AI не столь глобальна, хотя и это, конечно, тоже. Думаю, что для того, чтобы все остались довольны, совсем не обязательно делать полную имитацию поведения людей. Все дело не в широте охвата, а в невнимании к деталям.
Мне, как заядлой геймерше, было бы достаточно, чтобы монстры и другие враги в играх делали все то же, что делают и сейчас. Лишь бы они все действия осуществляли реалистично. Приведу несколько простых примеров. Если я выстрелила в монстра, и он начал убегать, то чтобы делал он это не просто по стандартной схеме, а, скажем, в некоторых случаях сломя голову, иногда прихрамывая на ногу, в которую я попала. Или падал на землю и пытался отползти по-пластунски.
Если враг спрятался в укрытие, то для достоверности, он мог бы настороженно оттуда выглядывать. Высунет только голову и снова спрячется. Или всего лишь оружие из-за преграды подымет и даст пару очередей.
С командными действиями врага та же ситуация. Когда группа неприятелей, управляемых AI, берет меня в кольцо, я прощу им неточности тактики, если они будут по ходу дела переговариваться, обмениваться разными жестами (прикрой меня, атакуем, отступаем). Ведь это запрограммировать совсем несложно. Триггеров, о которых говорил Алексей, нужно всего ничего. От силы раза в полтора больше, чем делается в большинстве современных игр.
То есть, на мой взгляд, проблема не столько в AI, сколько в его имитации. А она основана на скриптах лишь отчасти, в основном это анимация. И вот мы снова вышли на графику. Разработчики просто не так ее совершенствуют. Ну, сделайте вы поменьше полигонов в модельке, только различных фаз анимации прибавьте и на скрипты «повесьте». Мы же, геймеры, все в восторге будем и звонкой монетой за вашу игру проголосуем.
Кстати, пока не забыла, скажу очень важную вещь. Многие разработчики часто говорят, что они разработали супер-новаторскую, неповторимую систему естественного поведения врагов, совсем не завязанную на скрипты. Мне очень неприятно читать подобные анонсы, потому что я точно знаю, что любой AI так или иначе основан именно на скриптах. По-другому просто быть не может. Другое дело, что скрипты можно использовать с умом, а можно совершенно бездумно, во вред геймплею.