Шрифт:
Интервал:
Закладка:
Моим партнером в разработке Covert Action был гейм-дизайнер по имени Брюс Шелли, до этого работавший на компанию Avalon Hill. Мы далеко не в первый раз приглашали человека без опыта в индустрии компьютерных игр, ведь она образовалась сравнительно недавно, и мало кто тогда мог похвастаться отраслевым опытом. Большинство наших сотрудников поначалу имели только опыт, не связанный с цифровыми технологиями, и уже по ходу дела учились использовать его при разработке. Однако даже когда речь шла о художниках компьютерной графики, инженерах по звукозаписи и тестировщиках, разработка игр в то время была почти что синонимом программирования. Пригласить в штат человека, который никогда раньше не занимался программированием, было для нас серьезным шагом, и этот сотрудник должен был быть чертовски хорош.
Но талант Брюса был очевиден всем, кто проводил с ним собеседование. Обычно я не участвовал в процедуре отбора кандидатов, я почти про всех говорил: «Конечно, я за!» – и мои отзывы были не слишком информативны. Так что не уверен, что смог бы сразу распознать в Брюсе какие-то особые способности. Он был не слишком разговорчив и вел себя очень скромно. Но когда он стал с огромным рвением и тщательностью решать одну задачу за другой вместе с остальными участниками нашей многочисленной команды F-19 Stealth Fighter, я обратил внимание на его целеустремленность и глубокие знания. Он относился к числу людей, которые работают над проблемой до тех пор, пока она не будет решена. Он любил делать все как следует и в любой версии продукта всегда находил хотя бы одну деталь, которую можно улучшить.
Как это часто бывает у интровертов, наша дружба изначально родилась из общих интересов, а не из взаимной симпатии. Мы обсуждали телесериалы и исторические романы, играли в настольные игры в комнате для отдыха, в том числе в те, которые Брюс создал сам, когда работал в Avalon Hill. После релиза F-19 Брюса официально включили в команду, которой предстояло разрабатывать очередной авиасимулятор, но неофициально он стал моим верным помощником и критиком моих идей, помогал мне разгребать завалы и направлял меня в поисках образа будущей шпионской игры.
В одном аспекте шпионам не подходила модель Pirates!: линейная структура игрового сюжета. Пират при желании мог до бесконечности драться на саблях с врагами, но шпион не может разъезжать по всему миру и ставить прослушку во всех зданиях подряд без веской на то причины. Одна улика непременно ведет к другой. Собрать эти улики можно разными способами, но в конце концов все они приведут к одному и тому же преступному гению. А после того как тайна будет разгадана, во второй раз в нашу игру никто играть не станет.
Не страшно, подумал я. Мы просто сделаем так, что компьютер будет придумывать новые тайны!
Эта задача была лишь отчасти нерешаемой, а это совсем не то же самое, что абсолютно нерешаемая задача. Одним из первых апологетов творческого мышления компьютера был Кристофер Стрейчи, одногруппник Алана Тьюринга по колледжу. После окончания колледжа их жизненные пути немного разошлись, но в 1951 году Стрейчи возобновил общение, когда услышал о новом компьютере Тьюринга под названием Манчестерский Марк I. Позже Стрейчи в своем отчете перед Ассоциацией информационных и вычислительных систем утверждал, что его работа с машиной Тьюринга была успешной: компьютер, по его словам, мог на разумной скорости разыгрывать партию в шашки, то есть Стрейчи запрограммировал его для этой игры.
Вскоре после этого появилась усовершенствованная версия этой машины – Ферранти Марк 1. Ее Стрейчи тоже старался использовать для решения скорее творческих, чем математических задач. Сначала он выработал способ изменять высоту звука щелчков и скрежетания, издаваемых компьютером, и выстроил их в мелодии «God save the Queen» и «Baa, Baa, Black Sheep». В 1952 году он нашел себе новый интерес: теперь он решил, что Ферранти необходимо научить писать любовные письма.
Стрейчи написал шаблон, который позволял случайным образом сочетать несколько текстовых фрагментов и отдельных слов в формате письма. Получившиеся послания были хоть и нескладными, но вполне понятными. Иногда компьютер даже создавал нечто близкое к поэзии: «Я горю от страсти к тебе, вся душа моя от тебя в огне» или «Мое обожание страстно жаждет твоего внимания». По сегодняшним меркам звучит не слишком романтично, но зато по этим строчкам можно составить представление о том, какие слова были распространены для выражения привязанности в Великобритании в 1950-е. «Расположение» и «приязнь» в то время были синонимами любви, а среди распространенных обращений были, например, «милый мой» и «малыш» (помимо классических «дорогой» и «любимый»).
Отраслевой термин для такого рандомизированного шаблона или – если конкретизировать – идеи доводить рандомизированные шаблоны до уровня настоящего творчества звучит как «процедурная генерация». Возьмем для примера «Гамлета» Шекспира. Перенесем место действия из Дании в Африку, а людей заменим львами. Вдруг перед нами «Король Лев» со всеми сюжетными деталями: тут и дядюшка – узурпатор и убийца, и страдающий экзистенциальной тревогой протагонист, который на время исчезает, а потом возвращается, чтобы заявить свое право на трон. Затем перейдем к «Вестсайдской истории». Чем больше отдельных элементов сюжета вы заметите, тем ближе окажетесь к совершенно новому сюжету, в котором никто не узнает оригинал. Можно задать компьютеру начальную точку, указать ему, какие куски истории разрешено менять и как это делать: например, нельзя менять Данию на пчел, только на другие территории. Именно такой процесс и называется процедурной генерацией.
Что интересно, популярная детская игра Mad Libs[3] была изобретена совсем в другом месте, но в то же время, когда Стрейчи предпринял первые попытки создать алгоритм для любовных писем. Крис Кроуфорд, основатель Конференции разработчиков компьютерных игр, который как-то даже поднял ради искусства меч в воздух, заразился идеей компьютера, который мог бы сочинять истории, и в конце концов ушел из игровой индустрии ради разработки программы Storytron. Я не хотел заходить так далеко, но при этом знал, что совсем без использования процедурно генерируемого сюжета Covert Action будет неконкурентоспособной.
После нескольких месяцев работы мой прототип подавал некоторые признаки жизни, но при этом заметно пробуксовывал. Мы с Брюсом сделали два или три десятка шаблонов детективных историй, в которых при каждом сеансе использовались разные варианты плохих парней, городов и тайных организаций. Разнообразия должно было хватить на то, чтобы удовлетворить запросы обычного игрока, но до прорыва, о котором я мечтал, было еще далеко. Паттерны вскоре становились слишком узнаваемыми, шаблоны – предсказуемыми. Модель с подстановкой вариантов в специально оставленные в истории пробелы по сути своей означала, что ничего, кроме этих пробелов, не подлежит изменению, и рандомизированный фрагмент данных не оказывает никакого влияния на те элементы сюжета, которые идут после него. Обычно такие проблемы решаются простым увеличением объема данных: больше шаблонов, больше взаимозаменяемых элементов, более длинные списки вариантов. Но даже если бы у нас была для этого свободная память (а ее у нас не было), такой результат все равно меня бы не устроил. Я хотел сделать так, чтобы история планировалась в самом начале игры, но при этом концовка становилась ясна только в самом финале – как в детективе про Шерлока Холмса.