- Это, вне сомнения, машина глупая, но глупость ее - не то, что обычная, так сказать, рядовая глупость. Это, насколько я разбираюсь - а ведь я, как тебе известно, знаменитый специалист, - самая глупая мыслящая машина в мире!
С.Лем, «Кибериада»
Что такое AI, знает каждый игрок: эта английская аббревиатура расшифровывается как Artificial Idiot. Какие бы дифирамбы не пел игре журналист, в один прекрасный момент он размахивается как следует и отвешивает AI смачного пинка пониже спины: и хромой-де он, и тупой, и медленный, и вааще неинтеллигентный!
Знали бы вы...
Безумный робот на свободе
В прошлом веке роботы, взбесившиеся и напавшие на людей, были одним из любимейших кошмаров. Сегодня этот сюжет уже непопулярен. Но только потому, что фантасты никогда не видели сами, на что способен искусственный интеллект, из которого отладчик еще не изгнал бесей.
Тот ИИ, который вы ругаете почем зря - это, между прочим, уже укрощенный зверь. Подлинные возможности железного монстра видят только разработчики, да еще, краем глаза, бета-тестеры. И то тестеров обычно зовут только после того, как самая опасная часть работы уже сделана.
Вы, клеймящие позором тупого огра, которого программисты наделили всего двумя функциями - идти вперед и не идти вперед! Подумайте, что было бы, столкнись вы с ним во всей красе, до того, как заботливый разработчик обрезал ему мозги по самый четырнадцатый позвонок!
Не представляете себе? Так я расскажу.
В некотором царстве...
Жили-были разработчики игры. Были они молодые и глупые, так что игра у них так в свет и не вышла. Но сказка сегодня не об этом; самым прилежным мы расскажем эту историю в другой раз.
Дело в том, что игру они делали не простую, а ролевую. И пришла им в головы мысль дерзновенная: а не поселить ли нам в игре нашей зверя редкого, интеллекта искусственного, детишкам на забаву, а нам на утешение?
Но знали наши разработчики, что зверюшка эта в ролевых степях да лесах не водится; то ли делать ей там нечего, то ли корму не хватает, а только вся ролевая живность знает обычно всего одну команду: «Вперед!» Самые умные - те еще «Назад!» учат. До таких премудростей, как «Фу!» и «Апорт!», не доходит никак. Не разгуляешься тут интеллекту-то.
И рассудили они: раз не живет там тварь эта редкостная, стало быть, рады будут ролевики познакомиться с нею и зарубать ее мечами своими двуручными (знамо, зачем они по ролевым степям да лесам ходят). И вот отыскали они чуд-юд разных, умных превыше разумения, и в мир ролевой запустили...
Бедуин генетически модифицированный
Первым делом рассудили разработчики так. Не будем мы никаких действий прописывать, просто объясним нашему монстрику, чего ему хочется, а чего - совсем наоборот. Вот, к примеру, есть разбойник-бедуин. Цели у него проще, чем у верблюда: хочет он убивать путинков и забирать их вещи, а не хочет - чтоб убивали его.
Теперь сделаем много-много таких бедуинов и зададим им набор случайных действий. А потом те, кто лучше действовал, оставят потомство, а остальные позорно вымрут во славу Дарвина. И будут они скрещиваться, плодиться и размножаться. Это нонеча модно: генетический алгоритм называется...
Танец феечек предельно затрудняет прицеливание. Правда, это обычно и не нужно. |
И бегали бедуины по пустыне три дня и три ночи. А на день четвертый взял программист из них самого умного, самого душевного - сорок душ положил, шутка ли! - дал ему саблю вострую, лук да стрелы каленые и сказал всем прочим разработчикам так:
- Кто, дескать, разбойника этого убьет, я тому богатырю сто дискеток подарю и сбойный винчестер пожалую.
И началась охота... Надобно сказать вам, что была игра эта многопользовательская, и охотиться на супостата решили всей толпой.
Однако бедуин, он и вправду был умный. Знал он, что игрок-то только с виду грозен. А вот выстрелить, к примеру, через ветки саксаула не может: ветки прицел сбивают. Ну, а ему, бедуину, знамо дело, двигать мышкой не надо...
Еще знал бедуин, что, ежели забраться куда ни то, где живности много, то будет игроку зело грустно. Умного слова «FPS» не знал бедуин, но видел, что игрок в таких местах бывает дерганый, медленный и несчастный.
Многому научился мудрый разбойник. И даже сам программист не ведал - как оно так? Вот бедуин есть, а вот его нету. Все баги он прошел и превзошел, и те, которые видно, и те, что до поры до времени под кодом таятся. И наконец познал он тайну невидимости. Как - то и до сих пор неведомо. Однако ж не исчез он: и то и дело герои обнаруживали у себя в спине нежелательную вентиляцию, вызванную сабелькой его да стрелами.
И вот день прошел, и ночь, и день другой - а никто не явился к программисту со скальпом. И порешил тогда программист: с глупым монстром плохо, да и с умным нехорошо. Нужно что-то среднее - да где ж его взять?
Физическое отступление. В серьезных трудах бывают отступления лирические, а нам в нашей сказке надлежит сделать физические. Так вот: самая главная беда таких систем, как наш бедуин, не в том, что они слишком умные (тем паче, что весь ум разбойника был в использовании багов игры), а в том, что такого монстра не возьмешь за шкирку и не спросишь: почему, дескать, делаешь так, а не иначе? И не исправишь ничего. Приделаешь запрет - а что из того выйдет, неведомо...
Сага о предивном звере тушкане
И пришла как-то авторам в голову другая мысль. Пускай, дескать, будет у нас в полях да лесах мирная живность. Дело-то, чай, неплохое? А то, когда каждой твари на свете только и дела, что игрока загрызть, скучно это зело.
Сказано - сделано. И появились в игре звери мирные и дружелюбные: тушканчики.
Но только не сидеть же тушканчику без дела? Это уж не тушкан, а монумент какой-то получится, Юрий Долгоухий. И решили разработчики: пущай он питается, от хищников спасается, а в свободное время - истово размножается...
Черное дело сделано. Тушканы размножились. |
Поелику среди игроков могут быть и детишки малые, не стали они во всей красе показывать, как тушкан размножается. Сделали они проще: вот встретил один тушкан другого, также ничем не занятого, произошла у них любовь платоническая, и в результате где-то неподалеку родился новый зверек. И славно, и благостно, и кобры всех грызунов не перекушают. Чего уж лучше? А дабы не размножались тушканы слишком уж быстро, велено им было: после свершения любви грызунской немедля бежать опрометью друг от друга. Пока не заставили алименты платить.
Стал быть, дали тушканам три цели: есть, не быть съедену и размножаться. И задумался тушкан...
Но только разработчики долго ничего дурного не замечали. Покуда не случилось одному из них забрести на крутой утес. И тут он увидел: тушканы-та с утеса прыгают, как ни в чем не бывало, а внизу - обрыв сто сажен. Разбиваться тушкану никто не запретил: только велел съедену не быть. Вот он и плющится, сердешный, в кашицу.
Посмотрел тот программист, потылицу почесал: дети малые посмотрят на безобразие такое, решат - всякому можно с обрыва прыгать. Нехорошо. И издал программист указ: отныне с утеса тушканам отнюдь не прыгать, а ежли видит, что разобьется он - не лезть на рожон ни под каким видом.
Что за притча? Число тушканов не по дням, и даже не по часам, а по минутам растет. Вот уже FPS'ы умерли, и игра из реально-временной пошаговой сделалась. Хоть кнопку «Следующий кадр» приклеивай. Пришлось программисту специальный тушканометр включить. Видит: в самом деле безобразие творится. По двести тушканов в секунду прибывает.
Искал он, бедолага, в чем дело, искал - нет ответа. Тогда издал он новый указ: ежели в окрестности слишком много зверья развелось - не искать себе подобного, а прочь бежать (не ведал он, горемычный, легких путей).
Однако же тушканов все прибавлялось.
И ввек бы ему загадку ту не разгадать, кабы случай ему не помог. Увидел он как-то такую картину: спускается на дохлую тушку с небес гриф. Бегущий мимо тушкан, ничтоже сумняшеся, запрыгивает к нему на спину. Гриф взлетает...
Очень программиста заинтриговала эта картина. И увидел он, изучая код, что для тушкана что собрат-грызун, что гриф - все одно: ошибочка вкралась. Но только раньше, пока не влез программист со своими указами, запрыгивал этот тушкан, делал свое грязное дело и... спрыгивал. Всмятку. А теперь ему запретили. Вот он катается на грифе и... это самое... Деваться-то некуда! Он и рад бы!
Много еще было дивных историй о тушканах. Например, такая: днем тушканы людей боялись, а ночью подходили поближе - из любопытства. И вот в один прекрасный день включили программисты звук (ну, не было его раньше в движке). Входят они тестировать - а тут ночь случилась. И слышит программист сопение. Все громче, громче... Страшно ему сделалось, но пересилил он себя - свет включил. И видит: вокруг собралась толпа тушканов и все разом нюхают воздух...
Физическое отступление: самое интересное в этой сказке - то, что все это чистая правда. Именно так бывает, когда разработчики не ищут легких путей и придают своим монстрикам свободы сверх обычного. И самое смешное, что найти ошибку сплошь и рядом удается только случайно.
Верить в себя, не видеть препятствия...
Тушкан тоже научился лазить через стены. Вместо копья он использует хвост. |
Был в той славной игре город. А в нем - стражники. Но носили они не мечи, как у приличных людей, а - копья. Это и послужило причиной забавной истории...
Дело в том, что копье - штука длинная; и порой оно ненароком застревало в какой-нибудь детали местной архитектуры, после чего стражник прилипал к этому месту, словно муха к меду, и полностью выходил из строя. Потому как куда ни двигайся - придется проходить через препятствие (раз уж копье внутри него).
Тогда программист, отчаявшись отыскать способ решить проблему честно, повелел игнорировать то препятствие, в которое мы каким-то образом уже зашли. И вот мы увидели простую картинку:
Стражник собирается отрапортовать начальству (которое, как он догадывается, находится по ту сторону стены). Он стоит рядом с углом, задумчиво качая копьем. Наконец находит «слабое звено» (то самое, что никак не мог обнаружить ни программист, ни дизайнер уровня) и вонзает в него копье. После чего с чувством собственной правоты проходит на ту сторону...
А одна женщина, по замыслу, должна была заплатить герою, если он выкосит энное количество кактусов вокруг ее жилища. Так уж ей было велено скриптом. Но хитрая особа нашла способ оставить деньги при себе. Для этого она самолично вырубала один кактус.
В скрипте было сказано, что задание считается выполненным после уничтожения героем десяти кактусов....
Физическое отступление: прелесть в том, что все такие фокусы находятся игрой случайно. А потом, когда она убеждается в их эффективности, они начинают воссоздаваться в серии...
Будучи купцами, они стараются экономить деньги. За наш счет. |
Когда генетику только начали внедрять в игру, в коде была небольшая «натяжка». Расстояние от атакующего до цели определялось так: расстояние между ближайшей точкой цели и центром атакующего минус радиус (максимальный размер) атакующего. Кто догадается, что тут что-то не так? Заметить это «упрощение» было невозможно. Пока не появился генетический алгоритм...
Дело в том, что в пустыне жили гигантские кобры. И были они агрессивно настроены по отношению к человеку. Вот идет однажды наш персонаж между двумя барханами и видит, что здоровье его начинает стремительно падать. Без всяких видимых на то причин.
Еще несколько секунд - и бедолага падает на песок. И тут из-за бархана выплывает довольная собой кобра...
Боком.
Длина той змейки была... гм... шагов двадцать. Когда она повернулась к нам «в профиль», расстояние от нее до нас не изменилось - см. описание алгоритма. А ее саму не видно - до нее ведь двадцать шагов, она за барханом!
Случай с тушканами, которые умирали, но не съедались, не был единичным. Еще немало видов всякого зверья, которым программа велела стремиться к самосохранению, кончали жизнь самоубийством, чтобы не достаться врагу. Пока этот код не прописали по-человечески, зверье нашло множество лазеек: кобра, например, топилась в море, гриф разбивался о скалы, а скорпионы устраивали между собой турниры (разработчики как-то не предусмотрели скорпиона в качестве естественного врага для него самого). Самое экзотическое решение нашел уже поминавшийся ранее бедуин - он убивал самого себя, тем самым увеличивая на единицу свой «счетчик жертв». Правда, это решение все же не было для него оптимальным, и он на нем не остановился.
Вы мне, наверное, не поверите - но примерно так все и было на самом деле...
Вот что бывает, когда разработчики не побоятся нехоженых троп и решат порадовать игрока чем-то необычным. Конечно, в данном случае этот эффект умножился на неразумие программистов... но где вы видели сложный код, который работает с первого раза?
А мораль проста: старый добрый скрипт не подведет. Конечно, за разумное существо его никто и никогда не примет. Зато после нескольких месяцев возни с «умным» ИИ за разумное существо перестанут принимать вас...
Поручение убить разбойника Зеида удалось выполнить только после лишения бедняги мозгов. |