Услужливый ИИ опаснее врага
Интеллигент у нас в округе — редкий вид:
Берег бы шкуру — нет, под пули норовит!
Хоть мог бы жить, умрет во цвете лет;
А жаль, прекрасный человек — интеллигент!
х/ф «Не бойся, я с тобой»
В Германии бытует такой анекдот:
— Герр фельдмаршал, Италия вступила в войну!
— Понятно. Пошлите против них две дивизии.
— Герр фельдмаршал, она вступила в войну на нашей стороне!
— Дело плохо... Придется послать им на помощь десять дивизий.
Подобная же ситуация бытует в большинстве компьютерных игр. Союзник, наемник, спутник сплошь и рядом оказываются то бесполезным «довеском», то обузой. Его надо беречь, защищать (а то он подставится, а мы отвечай...), помогать материально. Причем такие эффекты возникают не только в боевиках и ролевках, но и в стратегиях.
В чем причина этого странного явления, мы сейчас и попробуем разобраться.
Эффект эскадры
Хорошо известно, что скорость эскадры равна скорости самого медленного из ее кораблей. Так вот, это неправда: на самом деле она еще меньше. И тому есть весьма объективные причины: на координацию действий нескольких судов уходит драгоценное время. Это если не считать тех случаев, когда приходится перестраиваться, менять походный порядок, и так далее.
Но у эскадры есть хотя бы один-единственный командующий, чье решение непререкаемо. А вот союзы — в реальной жизни! — страдают от этого эффекта еще сильнее. Пока речь идет о взаимных поставках и так далее — все более-менее ничего, но стоит запланировать совместную операцию... У Наполеона под Ватерлоо были какие-то шансы только благодаря триединому командованию противника. По аналогичной причине он управился с русскими и австрийцами под Аустерлицем.
Чем более оперативно надо принимать решения — тем опаснее совместные действия. В командовании сражением простое устранение непонимания может стать фатальным, потому что решение успевает «устареть».
Спрашивается: если с живыми людьми, опытными генералами происходит такая петрушка — почему ИИ должен быть лучше?
Правда, это не действует в случае боевиков и ролевок. Малые группы вполне способны действовать слаженно на гораздо больших скоростях, нежели доступны воинским частям.
Избавь меня от друзей...
А уж если интересы у союзников расходятся в рамках предпринимаемой операции, тогда все совсем грустно. Русские войска на этом не раз горели синим пламенем — так потеряли множество жизней Самсонов и Ренненкампф в начале Первой мировой.
Кроме того, цели союзников могут сходиться в стратегии, но расходиться в тактике — или наоборот.... Скажем, победа в сражении нужна обеим сторонам, но потери неизбежны, и все участники спят и видят, как бы свалить самое тяжелое на ближнего своего. Именно поэтому, например, русские во времена того же Аустерлица (и позже) куда больше французов не любили австрийцев; австрийское командование не блистало по части громких побед, зато отлично владело техникой спихивания трудностей. В Первой мировой такого мнения о союзниках придерживались, кажется, все воюющие стороны... и не исключено, что все были правы. А по поводу Второй мировой мы до сих пор слышим отзвуки этих словесных баталий: дескать, мы кровь проливали, а они...
Интересно, что создатели компьютерных игр эту проблему начисто игнорируют.
Вот простейший пример.
Две страны одержали совместную победу над третьей. Что должно последовать за этим? Конечно же, дележ трофеев! Захваченных земель, материальных ценностей... А много ли вы знаете игр, где это интересное явление присутствует? Хотя бы одну назовете?
Даже там, где механизм заключения мира и определения послевоенных границ вообще имеет место, все проблемы касаются исключительно борьбы на дипломатическом поле с бывшим противником и его друзьями. Тогда как процесс заключения, например, Версальского мира показывает: грызня между союзниками куда яростнее, побежденному уже как-то не с руки активно сопротивляться.
Распределение военной добычи в компьютерных играх решается единственным способом: явочным порядком. На что успел наложить лапу — то твое. Да, так в реальной жизни тоже бывает (вспомним о Второй мировой и образовании соцлагеря...),
Для того чтобы ввести «правильный» механизм, сегодня нужно только доработать ИИ (а между живыми игроками такие соглашения заключаются всегда, когда есть возможность договориться). Еще изящнее было бы задать разным сторонам конфликта принципиально разные цели, и совместить эти две идеи... но это тема для совсем другой статьи.
Стоп, стоп, стоп! Кажется, мы хотим еще усугубить проблемы с компьютерным союзником? В каком-то смысле — да.
Но.... игрока раздражают не проблемы, в конце концов, он ведь и ждет от игры трудностей. Раздражают трудности немотивированные: тупость ИИ, например. А вот если ИИ не делает глупости, а отстаивает свои интересы — это совсем другая история.
Однако здесь есть еще одна проблема, которую хорошо бы до того разрешить...
Цена договорная?
Известно несколько причин, по которым в компьютерных играх обычно плохо чувствует себя дипломатия. Сейчас я хочу поговорить об одной из них: о неспособности ИИ идти на компромиссы.
Стандартная дипломатическая модель для стратегий выглядит следующим образом: вычисляется «стоимость» каждого действия, и от партнера по переговорам просят не меньше, чем стоит то, чего он запрашивает. И совершенно неважно, насколько актуальна в данной конкретной ситуации та или иная уступка. Это если силы примерно равны; если же ИИ чувствует себя сильнее — требует уступок безвозмездно, если слабее — готов несколько «прогнуться».
Однако, как совершенно правильно выразился один персонаж, «дипломатия — это искусство оставлять всех неудовлетворенными».
Вышеописанная модель худо-бедно работает при подавляющем превосходстве одной из сторон: сильный требует, слабый старается не отдать слишком много. Но если превосходство не очень велико, то нормальный игрок идет на компромиссы, а ИИ — нет.
(Тут отчасти сказывается еще один недостаток большинства стратегических игр. В реальной жизни правители не так уж стремятся к войне: не потому, что им жалко гибнущих людей, а потому, что, если не удастся одержать решительную победу, можно «увязнуть». После чего явится третья сторона и пожнет все лавры — как Америка в Первой мировой. Впрочем, в парадоксовских стратегиях все устроено в этом плане очень реалистично.)
Кроме того, эта самая стоимость мало зависит от актуальности предмета торга. Часто можно «закормить» ИИ совершенно ненужными ему подарками и добиться при этом весьма значимых уступок.
И это еще полбеды; настоящая беда в том, что компьютер при этом не понимает: у союзных сторон есть такая штука, как общие интересы. Ленд-лизовские поставки снаряжения и пищи в Советский Союз были выгодны не только СССР, но и Штатам с Англией. И если уж ведутся совместные действия — предельно глупо этого не учитывать в дипломатии.
Предел глупости можно пронаблюдать во многих играх, когда, например, за объявление войны Индии ИИ требует целую гору всего, вы отказываете... и через 5 ходов он сам предлагает вам повоевать с Индией, уже ценой уступок с его стороны. Как можно достичь такого эффекта? Очень просто: ИИ оценивает сам по себе акт объявления войны Индии, совершенно не задумываясь о том, сколько от этого факта выиграет каждая из сторон.
Интересно, что иногда причиной такого нелепого подхода называют ограничения не ИИ, а.... интерфейса. Дескать, если реализовать алгоритм дипломатии «честно», игрок не будет понимать, чего от него хочет компьютерный партнер: теряется «прозрачность» стандартного способа. А поскольку проблема генерации естественной речи не решена «и вряд ли завтра», надо как-то дать ему понять, в чем недостатки его предложения, чтобы игрок не утонул при этом в ворохе таблиц и диаграмм.
Но на самом деле все не так страшно: вместо аргументов надо выдавать контрпредложения. Вообще, неразумна ситуация, когда (как в большинстве игр), инициатива во время переговоров всегда принадлежит одной из сторон. Правильные переговоры должны выглядеть так:
— Дайте нам уголь и нефть, а мы поделимся технологией радио и пришлем лошадей!
— Нет, дайте вместо лошадей алюминий, и договоримся!
— Тогда добавьте еще вино...
— Заметано!
До сих пор речь шла о стратегиях. А разве в других игровых жанрах намного проще?
Третий закон роботехники
Как известно, робот, согласно Азимову, должен заботиться о своей безопасности, покуда это не противоречит интересам безопасности людей и их прямым приказам. Однако даже у Азимова этот закон вызывал немало проблем, в частности — тем, что не выполнялся. Если человек велел роботу пересечь реку по мосту, а мост в это время разведут, робот в полном соответствии с законами утопится в реке. Закон, требующий повиноваться, оказывается сильнее закона о собственной безопасности.
Правильная реализация инстинкта самосохранения — штука чрезвычайно трудная. Непросто даже определить для себя, какая реализация желательна. В «Космических рейнджерах», например, наемники очень ценят свою шкурку — настолько, что, опять-таки, начинаются споры между игроков — есть ли вообще смысл в наемниках, или проще воевать в одиночку?
Но это — огромный шаг вперед по сравнению со стандартной для игр ситуацией, когда наемник, с одной стороны, обходится очень дорого, а с другой — совершенно себя не бережет и почем зря лезет под удар.
Вот в Neverwinter Nights решили ввести «нестандартный» режим, когда мы управляем только своим персонажем, а его спутниками — командуем, то есть они действуют под управлением ИИ, которому мы можем отдавать приказы.
В итоге все более-менее неплохо, если наш напарник — вор; в остальных случаях возникают проблемы. Воин тяжелой тушей проносится через все ловушки, а маг упорно лезет на рожон. Можно скомандовать наемнику не торопиться и подождать... но тогда нам придется чуть ли не за уши тащить его от локации к локации, поминутно требуя от него: «стой... иди... стой... опять иди... снова стой...».
Вообще, много ли вы знаете игр — любого жанра! — где бы NPC берегли себя? Но если в противниках это вызывает только легкую усмешку и чувство собственного превосходства, то в союзниках бесит, бесит, бесит!!
Действуем по плану
Как объяснить спутнику, чего мы от него хотим?
Этот вопрос встает всякий раз, когда спутнику нельзя (или — неудобно) отдать прямой приказ и приходится полагаться на искусственный разум. Если человеку мы бы все объяснили парой фраз, то ИИ...
Вот и приходится изобретать заменители.
Самый распространенный среди них — строй, он же «формация» и так далее. Смысл в том, чтобы задать группе определенный порядок перемещения на местности, дабы снайпер или там маг не оказывались лицом к лицу с вражеским «человеком с ножом». Беда в том, что такая группа теряет боевой порядок при прохождении через узкие места. Да и в случае если вдруг вашу команду атакуют с тыла — у магов не хватит ума пропустить бойцов...
(Между прочим, строй, который состоит целиком из компьютерных персонажей, действует обычно заметно разумнее. Это потому, что они «понимают», что будет делать каждый член команды. А игрок, с точки зрения ИИ, ведет себя непредсказуемо...)
Даже в RTS мы никак не можем рассчитывать на то, что солдат будет сколько-нибудь разумно выбирать цель своей атаки (правда, на то есть дополнительные причины — иногда разработчики опасаются, что после этого игра станет совсем примитивной...). В ролевках и боевиках дела тоже плохи.
В World of Warcraft авторы, немного поиграв с возможностями, решились отказаться от любого командования союзником, кроме набора команд вроде «фас — к ноге — фу» (плюс возможности вселиться в него и управлять им как собой). Оказывалось, что, чем больше дается ему свободы — тем хуже он ею пользуется.
Более интеллигентный метод управления союзниками — скрипты. Здесь можно достичь многого: например, в Lineage 2 не редкость — герой, расхаживающий с целой командой «ботов». Но считается (и не совсем зря), что такая игра — для программистов, а не для «простого пользователя». Впрочем... в Lineage эту возможность прикрутили именно пользователи (она встроена не в игру, а во внешнюю программу), и она обрела немалую популярность. Вероятно, разработчики (а может, издатели) все же ошибаются в своей оценке игроков.
Некоторые упрямые разработчики не сдаются, а пытаются сделать программирование скрипта занятием сродни сборке конструктора «Лего» — много ярких кнопочек, все такие понятные-понятные. Так устроены макросы в нескольких онлайновых играх.
Есть и вариант, в котором пытаются придумать нечто среднее между строем и скриптом: примерно так (хотя это не совсем по теме) управляют сражением в Dominions 2 — расставляют войска и каждому отряду дают задание.
Пока что эта схема развита совсем мало; однако не исключено, что за ней будущее. Особенно — если любителям программирования будут оставлять возможность заскриптовать поведение компьютерных напарников более серьезно.
Из сказанного следует, что есть три основных группы причин, по которым компьютерные союзники раздражают нас своей «тупостью»:
- объективные трудности работы с союзником, которые работают и в реальной жизни;
- неправильная постановка задачи, возникшая изначально «для блага игроков»;
- отсутствие разумного интерфейса для общения с компьютерным союзником.
А как же проблемы искусственного интеллекта? А до них обычно даже очередь не доходит. У ИИ отбирают все шансы еще на стадии проектирования его целей и задач. Он и делает то, о чем его попросили.
Удивительно? Нет. Скорее типично.