banner banner banner
Археолог цифрового века – Том 1. 1966-1979
Археолог цифрового века – Том 1. 1966-1979
Оценить:
Рейтинг: 0

Полная версия:

Археолог цифрового века – Том 1. 1966-1979

скачать книгу бесплатно


Атмосферу в Менло-Парке хорошо описывает Стивен Леви в книге «Хакеры»:

«В помещении непрерывно трещали терминалы, один из которых был подключен к PDP-8, а другой – к телефонной линии, через которую связывался с компьютером в компании Hewlett-Packard, бесплатно предоставлявшей для PCC время. Где-то обязательно играли в новенькую игру, написанную кем-нибудь из все разраставшейся команды хакеров PCC. Иногда приходили мамаши-домохозяйки с детьми и неожиданно увлекались программированием, да так, что мужчины с тревогой отмечали, как лояльные до сего момента жены забрасывали и детей, и готовку в пользу радостей BASIC. Бизнесмены пытались запрограммировать компьютер для предсказания котировок на бирже и тратили на эту химеру несчетное количество времени. Когда двери вычислительного центра открыты настежь, возможно все. Saturday Review цитировал Альбрехта: “Мы хотели бы организовать в каждом районе доступные для публики компьютерные центры, куда любой человек мог бы зайти, как в боулинг или в зал игровых автоматов, и поиграться с компьютером”».

Именно в такую среду и попал однажды 27-летний Грегори Йоб. Произошло это примерно тогда же, когда начал выходить бюллетень РСС. В то время особой популярностью пользовались игры-угадайки на поле, написанные самим Альбрехтом. Первой из них, судя по всему, была игра Hurkle[30 - Правила настольного варианта Hurkle: https://mbamp.ucsc.edu/files/8113/8467/0351/Hurkle.pdf].

Суть ее в следующем: где-то на координатной сетке 10?10 прячется загадочный Херкл (Харкл? Хуркл?). Игрок вводит в компьютер координаты точки, где, как ему кажется, нужно искать. Отсчет ведется от «базы», которая расположена в точке (0; 0) – в левом нижнем углу сетки. Если игрок не угадал, программа дает подсказку, в какой примерно стороне (севернее/южнее/западнее/восточнее) следует продолжать поиски – и так, пока игрок не отыщет нужную точку. Вместо итогового счета на экран выводится количество попыток и предложение сыграть снова.

Вот так мог выглядеть один заход в Hurkle:

RUN

HURKLE

WANT THE RULES?Y

A HURKLE IS HIDING IN A GRID, LIKE THE ONE BELOW.

________NORTH

______9. . . . . . . . . .

______8. . . . . . . . . .

______7. . . . . . . . . .

______6. . . . . . . . . .

______5. . . . . . . . . .

WEST 4. . . . . . . . . . EAST

______3. . . . . . . . . .

______2. . . . . . . . . .

______1. . . . . . . . . .

______0. . . . . . . . . .

_______0123456789

________SOUTH

TRY TO GUESS WHERE THE HURKLE IS HIDING. YOU GUESS BY TELLING ME THE GRIDPOINT WHERE YOU THINK THAT THE HURKLE IS HIDING. HOMEBASE IS POINT 0,0 IN THE SOUTHWEST CORNER. YOUR GUESS SHOULD BE A PAIR OF WHOLE NUMBERS, SEPARATED BY A COMMA. THE FIRST NUMBER TELLS HOW FAR TO THE RIGHT OF HOMEBASE AND THE SECOND NUMBER TELLS HOW FAR ABOVE HOMEBASE YOU THINK THE HURKLE IS HIDING. FOR EXAMPLE, IF YOU THINK THE HURKLE IS 7 TO THE RIGHT AND 5 ABOVE HOMEBASE, YOU ENTER 7,5 AS YOUR GUESS AND THEN PRESS THE ’RETURN’ KEY. AFTER EACH GUESS, I WILL TELL YOU THE APPROXIMATE DIRECTION TO GO FOR YOUR NEXT GUESS. GOOD LUCK!

THE HURKLE IS HIDING – TRY TO FIND HIM!

WHAT IS YOUR GUESS?5,5

GO NORTH

WHAT IS YOUR GUESS?5,2

GO NORTH

WHAT IS YOUR GUESS?5,1

GO NORTH

WHAT IS YOUR GUESS?5,0

GO NORTH

WHAT IS YOUR GUESS?5,8

YOU FOUND HIM IN 5GUESSES!!!

LET’S PLAY AGAIN.

Позднее появились и более сложные вариации. В игре Snark игрок вводил радиус окружности поиска вокруг некоторой точки на сетке, а компьютер сообщал ему, находится ли Снарк внутри окружности или снаружи. В игре Mugwump (самой сложной из этой подборки) единственной подсказкой было: в скольких клетках по прямой от точки поиска прячется Магвамп, а направление игрок должен был угадывать самостоятельно. Строго говоря, называть эти программы «играми» некорректно. Проиграть в них нельзя – только потратить уйму времени, перебирая варианты, вот и все. Учитывая атмосферу, царившую в РСС, можно было бы предположить наличие соревнований, но поскольку каждый раз поле генерируется случайным образом заново, смысла в подсчете очков никакого.

Йоб отзывался об этих играх так: «Черт-те что! Ладно одна игра на декартовой координатной плоскости 10?10, но три – уже перебор. И тут мне в голову пришло примерно следующее: “Надо придумать компьютерный вариант игры в прятки – и без этой [вырезано цензурой] сетки!” Точно: написать топологическую компьютерную игру, где игровое поле состоит из узлов, соединенных переходами».[31 - Статья Грегори Йоба в Creative Computing: http://www.atariarchives.org/bcc1/showpage.php?page=247]

«Топологическая компьютерная игра», в которой игрок перемещается по «узлам, соединенным переходами». Кое-что напоминает, вам не кажется?

8. «Охота на Вампуса», часть 2

Если верить словам Грегори Йоба, источником вдохновения для Hunt the Wumpus стала не столько Hurkle и ей подобные развлечения, сколько ненависть к декартовой координатной плоскости, которая в них использовалась. Для своей вариации «охоты на монстра» Йоб решил использовать свое «любимое платоново тело», а именно додекаэдр – правильный двадцатигранник. Мне подобная страсть к геометрии, признаюсь, чужда (и «любимого платонова тела» у меня тоже нет), поэтому меня больше интересуют другие новации, которые ввел Йоб.

Игру Hunt the Wumpus можно считать прародительницей всех тех «лабиринтов из маленьких запутанных переходов», которые спустя несколько лет заполонят экраны компьютеров и блокноты с миллиметровкой. Игровое поле состоит из двадцати узлов-комнат, каждая из которых связана ровно с тремя другими. По умолчанию комнаты пустые, но в некоторых из них случайным образом размещаются бездонные пропасти (попадание туда – мгновенный проигрыш), «супер-летучие мыши» (переносят игрока в случайную комнату) и, конечно же, сам Вампус. Когда игрок попадает в комнату с Вампусом, возможны четыре варианта развития событий: монстр либо уходит в одну из трех примыкающих комнат,* либо остается на месте и съедает игрока. Убить Вампуса, таким образом, можно только с расстояния, и для этого у игрока есть «искривленная» управляемая стрела, которая может пролететь до пяти комнат.

*При этом, даже если Вампус попадет в комнату с летучими мышами или пропастью, с ним ничего не случится. Во-первых, он слишком тяжелый, и мыши его просто не поднимут. Во-вторых, у него присоски на лапах, поэтому он может обойти пропасть по стене. Вот такая условность.

Управление игрой состоит из двух команд: «идти» (М) и «стрелять» (S). Выигрышная стратегия (у осторожного игрока или новичка вроде меня) примерно следующая: не спеша изучить игровое поле, составить карту, указав на ней все ловушки, затем вычислить местонахождение Вампуса и застрелить беднягу. На распечатке с терминала это выглядело примерно так:

HUNT THE WUMPUS

YOU ARE IN ROOM 20

TUNNELS LEAD TO 131619

SHOOT OR MOVE (S-M)?M

WHERE TO?13

I FEEL A DRAFT

YOU ARE IN ROOM 13

TUNNELS LEAD TO 121420

SHOOT OR MOVE (S-M)?M

WHERE TO?20

YOU ARE IN ROOM 20

TUNNELS LEAD TO 1316 19

SHOOT OR MOVE (S-M)?

Ничего особенного, согласен. Сыграв в первый раз, задаешься вопросом: и что? Однако если дать Hunt the Wumpus второй шанс, то можно увидеть, что это пусть и простенькая, но игра, способная увлечь на несколько партий – до тех пор, пока не будет выработана выигрышная стратегия. Единственный недостаток с точки зрения дизайна, пожалуй, состоит в том, что нередко партия начинается вот так:

I FEEL A DRAFT

YOU ARE IN ROOM 4

TUNNELS LEAD TO 3 5 14

Сообщение «I FEEL A DRAFT» (я чувствую сквозняк) указывает игроку на то, что рядом пропасть, то есть один из трех туннелей ведет к мгновенной гибели. Поскольку игра только началась и никакой дополнительной информации у игрока нет, он вынужден делать ход наугад – и надеяться, что ему повезет. Такую ситуацию едва ли можно назвать честной. (Видимо, на этот случай в игре прописана возможность сыграть повторно на том же поле.)

Впрочем, вопросы игрового дизайна как такового меня интересуют мало. Данная книга посвящена истории интерактивного повествования, и с этой точки зрения Hunt the Wumpus выделяется сразу по двум пунктам.

Во-первых, у нее совершенно другой способ подачи, нежели у игр типа Hurkle. Если там игрок смотрит на поле целиком как бы сверху, то в Hunt the Wumpus он находится непосредственно внутри игрового мира, как бы вынужденный пробираться на ощупь по темной пещере. Нарратив как таковой сведен к минимуму (где-то в пещере спит Вампус, его надо убить – все, конец), но переход от третьего лица к первому сильно отличает Hunt the Wumpus от Hurkle и ей подобных. Если там все ощущается как абстракция, то охота на Вампуса уже предлагает определенную степень иммерсивности. И хотя Hunt the Wumpus нельзя считать первой игрой, погружавшей игрока в игровой мир (The Oregon Trail вышла на год раньше, да и с нарративом у нее все гораздо лучше), однако она стала значительным отклонением от стандартов своего времени.

Во-вторых, что даже более важно, игровое поле Hunt the Wumpus стало прототипом географии, которая используется в произведениях ИЛ до сих пор: набор дискретных, изолированных друг от друга комнат, соединенных переходами, по которым игрок может перемещаться. Ориентации по сторонам света еще нет, но основное времяпрепровождение, знакомое всем игрокам в ИЛ, – составление карты – есть. Все ранние произведения ИЛ в той или иной степени представляли собой те самые «лабиринты из маленьких запутанных переходов», которые так выводят из себя современных игроков, пожелавших приобщиться к классике. Благодаря этому небольшому открытию я недавно осознал, что изначальная суть ИЛ заключается именно в исследовании мира и составлении карты, а сюжет и даже загадки вторичны. (Еще нагляднее этот аспект просматривается в первых версиях знаменитой Adventure, о которой пойдет речь в следующих главах.)

Как и в случае с The Oregon Trail, все признаки указывают на то, что первоначальная версия Hunt the Wumpus была написана на HP-BASIC. Именно ее, а также троицу игр-предшественниц, написанных Бобом Альбрехтом, я смог найти на архивных копиях кассет, собранных Бобом Брауном и Майклом Джемени из группы Yahoo, посвященной мини-компьютерам НР. Впервые исходный код Hunt the Wumpus был опубликован в середине 1973 года в бюллетене People’s Computer Company, а затем – в номере Creative Computing за октябрь 1975 года. Единственным отличием от более ранней кассетной версии стало добавление в начале программы строк с комментариями, где указывается авторство Грегори Йоба, а также рекламируются два написанных им продолжения: Wumpus 2 (с вариациями игрового поля) и Wumpus 3 (с новыми ловушками).

В то время как The Oregon Trail была, говоря современным языком, «эксклюзивом» МЕСС и распространялась, по всей видимости, только по учебным учреждениям, Hunt the Wumpus разлетелась в виде портов и адаптаций по всем существующим платформам своего времени (а также тем, которые появлялись впоследствии) кустарным способом. В сопроводительной статье к исходному коду, опубликованной в Creative Computing, Йоб писал: «Мне рассказывали, что будто бы видели код Wumpus, переписанный на RPG и FORTRAN, что в операционной системе одной крупной научно-исследовательской лаборатории есть команда to Wumpus, запускающая игру, и что даже есть иллюстрированная версия для дисплейных терминалов Hazeltine!»

Особо показателен тот факт, что игра сумела преодолеть культурный барьер между BASIC-сообществом хиппи из РСС и «настоящими» хакерами: к появлению Unix 6 версии в 1975 году (а по всей видимости, даже раньше), Hunt the Wumpus была портирована на Unix C (в исходном коде даже есть комментарий, где радостно сообщается, что игра была «украдена из бюллетеня РСС, том 2 № 1»)[32 - Две браузерные вариации Hunt the Wumpus:https://osric.com/wumpus/https://web.archive.org/web/20041010214018/http://www.taylor.org/~patrick/wumpus/].

9. «Приключение» Уилла Краузера, часть 1

Что еще можно сказать об Adventure, давно и по праву признанной самым главным прототипом не только текстовых приключений и ИЛ, но и большинства значимых видеоигр современности? (Взять хоть World of Warcraft, которая ведет родословную от Ultima Online и первого MUD – «многопользовательского подземелья» – Ричарда Бартла, которые, в свою очередь, восходят к Adventure.) Более чем за сорок лет, прошедших с ее выхода, Adventure неоднократно становилась предметом исследований: в 1985 году Мэри Энн Баклз защитила первую в истории диссертацию, посвященную игровому нарративу, под названием Interactive Fiction: The Computer Storygame Adventure («Интерактивная литература: Adventure как сюжетная компьютерная игра»), а в 2007 году в открытом научном журнале Digital Humanities Quarterly была опубликована великолепная статья Денниса Джорджа Джерза Somewhere Nearby is Colossal Cave[33 - http://digitalhumanities.org/dhq/vol/001/2/000009/000009.html] («Где-то неподалеку находится Колоссальная пещера»). Однако поскольку этот блог, так уж сложилось, посвящен истории интерактивного повествования, к истории мы и обратимся. Недавно мне удалось поиграть в оригинальную версию Adventure, написанную Уиллом Краузером, которую Джерз нашел, собирая материал для вышеназванной статьи, и поэтому я, как чуть раньше Джейсон Дайер[34 - http://bluerenga.wordpress.com/2011/03/07/observations-about-crowther%E2%80%99s-original-adventure-1975/], хочу поделиться своими впечатлениями.

В общих чертах история создания Adventure наверняка знакома большинству людей, интересующихся этой темой, поэтому пересказывать ее здесь целиком я не буду. Если вкратце: в 1975 году Уилл Краузер, программист и спелеолог, развелся с женой. Скучая по двум дочерям, оставшимся с матерью, он решил в свободное от работы время написать игру – видимо, в качестве подарка. Эта игра, которую он назвал просто Adventure, объединила в себе три его главных увлечения: программирование, исследование пещер и новую настольную игру под названием Dungeons and Dragons (D&D).

Как такое возможно? Очень просто: игроку предлагается исследовать пещерный ландшафт, примерно соответствующий пещере Бедквилт (часть Колоссальной пещеры, в связи с чем «полное» наименование игры часто приводят как CollossalCaveAdventure) в составе пещерной системы Мамонтова—Флинт-ридж[35 - Здесь важно отметить, что слово «Мамонтова» в названии пещерной системы выступает синонимом к слову «Колоссальная», т.е. «огромная» (одно из значений англ. mammoth). – прим. пер.] в штате Кентукки. Краузер долгие годы изучал ее, составляя подробную карту. В пещере игрок встречается с существами и сокровищами, заимствованными прямиком со страниц руководств по D&D, а для победы должен решать запутанные головоломки, обращая внимание на мелочи, как настоящий программист. Короче говоря, Краузер создал первое в истории текстовое приключение, единолично заложив основы жанра, почти без изменений сохранившиеся до наших дней.

Теперь давайте ненадолго отвлечемся от самой игры и попробуем ответить на вопрос: а кто такой, собственно, Уилл Краузер? Его портрет хорошо выведен в книге Кэти Хефнер и Мэтью Лайона Where Wizards Stay Up Late[36 - https://www.amazon.com/Where-Wizards-Stay-Up-Late/dp/0684832674/] («Там, где волшебники засиживаются допоздна»), где повествуется об истории создания сети ARPANET[37 - https://ru.wikipedia.org/wiki/ARPANET] (предшественницы современного интернета). Краузер обладал множеством причуд характера, которые сегодня привычно ассоциируются у нас с хакерами. Можно сказать, он был «прототипичным» хакером.

Во-первых, он был крайне неразговорчив и практически не проявлял эмоций, отчего окружающим становилось не по себе. Во-вторых, он терпеть не мог костюмы и всегда ходил в повседневной одежде; даже на аудиенции к Комитету начальников штабов ВС США в Пентагоне он приходил в кроссовках. В-третьих, цитирую: «он был чудовищно привередлив в еде (любое блюдо сложнее бутерброда с колбасой могло вызвать у него резкое неприятие), из-за чего его невозможно было приглашать в гости или в ресторан».

В то же самое время он разительно отличался от других увлеченных компьютерщиков, которых мы иногда называем «нердами». В частности, он увлекался туризмом, в том числе экстремальным, таким как скалолазание и, конечно, спелеология. Соответственно, он старался поддерживать себя в отличной физической форме и иногда часами висел на притолоке двери в свой кабинет. И, пожалуй, самое удивительное отклонение от сложившегося образа: несмотря на то, что коллеги Краузера регулярно подпитывались кока-колой, сам он «никогда к ней не прикасался».

Но все эти причуды с лихвой компенсировались другим качеством Краузера – непревзойденным талантом к программированию. На англоязычной странице Википедии, посвященной Уиллу Краузеру, значится: «Программист, спелеолог и альпинист-любитель. Наиболее известен как один из создателей игры Colossal Cave Adventure» – и все. Казалось бы, все правда, но как-то нечестно сводить достижения этого человека только к изучению пещер и одной-единственной игре. Краузер заслужил место в компьютерной истории, даже если бы никогда не написал Adventure.

Уилл Краузер был незаменимым членом небольшой команды разработчиков, которая с конца 60-х закладывала основы современного интернета. Он лично написал ПО для работы IMP’ов (Interface Message Processor – «интерфейсный процессор обработки сообщений») – компьютеров, осуществлявших коммутацию пакетов в базовой подсети ARPANET; иными словами он создал прошивку для первых в мире роутеров. Коллеги не без оснований считали, что он «входит в 1% лучших программистов мира». Особенно ему удавалось писать емкий и эффективный код – весьма ценный навык, учитывая чрезвычайно жесткие ограничения в объемах памяти и процессорной мощности. Главный недостаток Краузера (и то с натяжкой): его куда больше привлекала разработка прототипов. Ему скорее было интересно продемонстрировать принципиальную возможность решения той или иной задачи, нежели шлифовать код и доводить программу до завершенного вида.

И если сопоставить все эти факты друг с другом, становится ясно, как вышло, что Краузер буквально на коленке создал сам жанр ИЛ, причем в том виде, в каком мы его знаем до сих пор… а потом с такой же легкостью забросил: просто потому (вероятно), что возникла более интересная задача, требовавшая решения.

10. «Приключение» Уилла Краузера, часть 2

Оригинальная Adventure[38 - https://jerz.setonhill.edu/intfic/colossal-cave-adventure-will-crowthers-original-source-code/], написанная Краузером, включает в себя довольно полный «наружный» уровень и первый подземный уровень, которые мы помним по завершенной версии игры. Эта своего рода «демо-версия» заканчивается на локации «Большой перекресток», где установлен знак: «РАБОТЫ ПО СТРОИТЕЛЬСТВУ ПЕЩЕРЫ НЕ ЗАВЕРШЕНЫ. МОЖЕТЕ ПРОДОЛЖАТЬ ИССЛЕДОВАНИЕ НА СВОЙ СТРАХ И РИСК». И это не розыгрыш. Начиная с этого места код становится неряшливым и невычитанным настолько, что при переходе в очередную комнату игрока может, например, внезапно выкинуть на поверхность. Да и кроме обычных трудностей с ориентированием, игровых задач как таковых там, в общем-то, нет. Но все равно даже в таком виде Краузер заложил основы для тысяч текстовых приключений, которые будут написаны впоследствии, в том числе даже кое-какие простенькие головоломки – ну и лабиринты, конечно же, куда без них.

На самом деле, Adventure и есть один большой лабиринт. Самая сложная задача во всей игре – понять, как соединены между собой узлы (то есть «комнаты») игрового мира, и как там ориентироваться. Более того, все головоломки, которых и без того немного, так или иначе завязаны на перемещении: игроку нужно догадаться, как прогнать змею, чтобы выйти из «Зала горного короля», затем нужно найти другой выход из пещеры, чтобы покинуть ее вместе с сокровищами и т.д. Современному игроку, в особенности если он воспитан на поздних произведениях ИЛ, это наверняка покажется странным, неинтересным и, вполне возможно, даже раздражающим. Все-таки мы привыкли, что в игре, помимо головоломок и блужданий, должно быть еще и увлекательное повествование. Но стремился ли сам Краузер к сильному нарративу, разрабатывая Adventure? Сильно сомневаюсь.

Уилл Краузер вел и ведет весьма закрытый образ жизни, поэтому пообщаться с ним и узнать, о чем он думал во время разработки и что хотел или не хотел сделать, невозможно. Но здесь нас может в какой-то степени выручить текст, который игра выдает в ответ на команду «HELP» (ПОМОЩЬ):

Я ПОНИМАЮ, ЧТО ТАКОЕ МЕСТА, ДЕЙСТВИЯ И ПРЕДМЕТЫ. БОЛЬШИНСТВО СЛОВ В МОЕМ СЛОВАРЕ ОПИСЫВАЕТ МЕСТА И ПЕРЕМЕЩЕНИЕ МЕЖДУ НИМИ. ЧТОБЫ ПЕРЕМЕЩАТЬСЯ, ВВЕДИ «ЛЕС», «ЗДАНИЕ», «ВНИЗ ПО РЕКЕ», «ВОЙТИ», «ВОСТОК», «ЗАПАД», «СЕВЕР», «ЮГ», «ВВЕРХ» ИЛИ «ВНИЗ». МНЕ ИЗВЕСТНЫ КОЕ-КАКИЕ ПРЕДМЕТЫ, СПРЯТАННЫЕ В ПЕЩЕРЕ, НАПРИМЕР «ЧЕРНЫЙ ПРУТ». Я ПОНИМАЮ НЕКОТОРЫЕ КОМАНДЫ, ПОСРЕДСТВОМ КОТОРЫХ МОЖНО С ЭТИМИ ПРЕДМЕТАМИ ВЗАИМОДЕЙСТВОВАТЬ.

Обратите внимание, что на первый план Краузер ставит именно географию и перемещение, и только потом, как бы походя, упоминает о возможности взаимодействовать с «кое-какими предметами». Увлеченный хакер, Краузер почти наверняка имел знакомство с Hunt the Wumpus. Мне кажется, было бы логичным предположить, что Adventure изначально задумывалась как очередная попытка развить идеи Йоба о «топологической компьютерной игре» и, собственно, так и разрабатывалась, пока автору не наскучило. Весьма вероятно также – почти бесспорно, – что навигация по сторонам света была добавлена позже всего. По всей видимости, Краузер первоначально планировал, что игрок будет перемещаться между комнатами, пользуясь только ключевыми словами – то есть ориентирование в пространстве действительно ставилось во главу угла.* Неудивительно, ведь для Краузера как спелеолога подземная география имела первостепенную важность не столько с позиции фактической точности, сколько как фактор выживания. Разработкой Adventure Краузер, скорее всего, занимался на том же домашнем телетайпном терминале, на котором он компилировал геологические данные и составлял карты настоящей Мамонтовой пещеры для коллег-спелеологов.

*Деннис Джерз, впрочем, упоминает, что разговаривал с кем-то, кто якобы помнит наличие сторон света еще в самых ранних версиях. Но это скорее эффект ложной памяти. Из исходного кода явно следует, что такой способ перемещения был добавлен буквально в последний момент, когда Краузер осознал, что ориентироваться с помощью ключевых слов по масштабному подземному комплексу, состоящему из множества почти идентичных комнат, практически нереально.

С другой стороны, действительно ли нам так важно знать, какую именно игру хотел сделать Краузер? Наверное, нет. Однако необходимо помнить, что в то время ожидания игроков и подходы создателей игр к геймдизайну были совсем не такими, как сегодня, и становится ясно, почему авторам сходило с рук то, что сейчас кажется нам издевательством. К этой мысли я еще буду возвращаться, рассматривая другие игры описываемого периода.

В последнее время в научных кругах продвигается идея о том, что глубинная суть компьютерных игр заключается в концептуализации и реализации пространства, и некоторые даже призывают считать их разновидностью архитектуры. Идея интересная, и, если рассматривать ее через призму ранних произведений ИЛ, даже вполне обоснованная. Я не совсем представляю, как объединить эту гипотезу с моими другими наблюдениями, но, когда изучаешь Adventure, от размышлений об архитектуре отделаться трудно.

Впрочем, если отбросить все эти отвлеченные размышления, есть в оригинальной Adventure некая грубая привлекательность, которая не поддается логическому объяснению. Краузер не обладал ни склонностью к писательству, ни литературным даром, но его краткие и конкретные описания ясно демонстрируют, что он знает, о чем пишет. Именно это, если закрыть глаза на разные недочеты, придает игре достоверность, которой не хватает последующим, пусть и более проработанным с точки зрения дизайна, версиям.

Здесь интересно отметить реакцию других спелеологов, которые имели возможность поиграть в Adventure. Многие из них обратили внимание, насколько скрупулезно воспроизведено устройство пещеры Бедквилт, вплоть до придуманных Краузером сотоварищи названий, таких как «Зал горного короля» или «Птичья клетка» (хотя наиболее опытные, конечно, заметили также, что ряд переходов был убран: их наличие сделало бы навигацию и прохождение чересчур легким). А Мел Парк, участница одной из экспедиций в Колоссальную пещеру, в 1994 году писала про свою напарницу, которая изучила Adventure вдоль и поперек:

«В течение всей вылазки она не умолкая рассказывала нам все, что знала благодаря игре. В пещере под названием “Швейцарский сыр” она вдруг исчезла в незнакомом мне направлении. Вернувшись, она сказала: “Я просто хотела посмотреть, как выглядит “Полный тупик”. В точности так, как я и ожидала”. На обратном пути я разрешила ей вывести нас наружу, что она с блеском проделала, так как помнила все ходы в игре наизусть. Вы не подумайте, пещера представляет собой сложный лабиринт, и для новичка так хорошо ориентироваться в нем – большое достижение».

Что ж, а дальше мы рассмотрим, какое здание возвел на этом прочном фундаменте Дон Вудс.

11. Дон Вудс продолжает «Приключение», часть 1

Дон Вудс узнал об Adventure в начале 1977 года, когда учился в магистратуре Стэнфордского университета по специальности «Информатика». Наводку ему дал однокашник, который нашел игру – не поверите – в компьютерной системе Стэнфордского медицинского центра. Каким образом Adventure попала из BBN Technologies в Бостоне, где на момент ее создания работал Уилл Краузер, в северную Калифорнию, наверное, так навсегда и останется загадкой, поэтому не будем плодить домыслы, а поговорим только о том, что нам более или менее известно. А нам известно, что Вудс, заинтересовавшись игрой, перенес ее копию на мини-компьютер PDP-10[39 - https://ru.bmstu.wiki/PDP-10] в Стэнфордской лаборатории искусственного интеллекта (СЛИИ), где сам занимался хакерством. Досконально изучив все то немногое, что предлагала оригинальная версия, он решил развить наработки Краузера и доделать игру до конца. К сожалению, в его распоряжении был только исполняемый файл, без исходников на Fortran. История о том, как был добыт исходный код Adventure, прочно вошла в анналы хакерских баек, и я с удовольствием ее здесь перескажу.

В тексте программы Краузер оставил одно-единственное указание на свое авторство. В инструкции к игре с неподражаемой лаконичностью написано: «ОШИБКИ, ЗАМЕЧАНИЯ, ПРЕДЛОЖЕНИЯ – КРАУЗЕРУ». По всей видимости, Краузер и не рассчитывал, что его игра, тем более в столь незавершенном виде, когда-либо выйдет за пределы кружка хакеров из BBN Technologies (а уж они-то определенно знали, кто такой «КРАУЗЕР» и как с ним связаться). Задача осложнялась еще и тем, что к тому моменту, как Вудс наткнулся на Adventure, Краузер уже устроился работать в калифорнийский офис компании Xerox (так что есть вероятность, что игра попала на Западное побережье вместе с ним). Но Вудс нашел выход: он отправил электронное письмо по адресу crowther@xxx, где «xxx» обозначает все существующие домены в Сети. Так, став, возможно, первым в истории спамером, Вудс разыскал Краузера и получил от него разрешение на доработку Adventure и, что самое главное, ее драгоценный исходный код. Да уж, в те времена интернет был куда более тесен…

На момент знакомства с Adventure Вудсу еще не было двадцати трех, но он уже заслужил себе место в хакерской истории, выступив соавтором шуточного языка программирования под названием INTERCAL[40 - https://ru.bmstu.wiki/INTERCAL] – одного из самых безумных образчиков хакерского юмора. Cтивен Леви особо подчеркивает контраст в хакерской культуре Восточного и Западного побережья США:

«Различия начинались с местоположения: Стэнфордская лаборатория искусственного интеллекта (СЛИИ) размещалась в полукруглом здании из стекла, бетона и редких пород дерева – бывшем конференц-центре, построенном на холмах над университетским городком. Там к услугам хакеров были шестьдесят четыре терминала, разбросанные по разным кабинетам. Никакой тесноты, характерной для Тек-Сквера. Ни лифтов, ни оглушающего гудения кондиционеров. И атмосфера была куда более расслабленной, чем в МТИ: без желчности, пусть иногда и конструктивной, без громких перепалок в аудиториях Клуба железнодоророжных моделистов, без войн между хакерами и магистрантами, доходивших до уровня религиозных. В то время как в Тек-Сквере была популярна воинственная научная фантастика с космическими кораблями и бластерами, в Стэнфорде отдавали предпочтение уютному фэнтези: эльфам, хоббитам и колдунам со страниц трилогии Дж. Р. Р. Толкина “Властелин колец”. Помещения в лаборатории искусственного интеллекта носили названия различных мест Средиземья, а принтер мог печатать на трех эльфийских шрифтах».

На мой взгляд, Леви несколько преувеличивает культурную «пропасть» между консервативными, по-военному стриженными поклонниками Хайнлайна из МТИ и длинноволосыми толкиенистами из Стэнфорда, ведь несмотря на различия в литературных предпочтениях, они все же работали на одинаковых компьютерах (прежде всего, линейки PDP от DEC), с одинаковой операционной системой (TOPS-10[41 - https://ru.bmstu.wiki/TOPS-10]), на одинаковых языках программирования (что угодно, кроме BASIC!) – и вообще придерживались весьма сходных взглядов касательно принципов работы с компьютером. В этом плане у них было гораздо больше общего друг с другом, чем с популистами-хиппи из РСС. Определенная разница в подходах к программированию, безусловно, прослеживалась, но и то скорее поколенческая, нежели географическая. Прежде чем поговорить о ней, небольшое лирическое отступление на техническую тему.

Adventure была написана под операционной системой TOPS-10 для мини-компьютеров DEC PDP-10. Как уже упоминалось, ЭВМ производства DEC пользовались у хакеров безоговорочной любовью, которая длилась по меньшей мере лет двадцать – с 1960 по 1980 годы. Во-первых, компания-производитель постоянно стремилась к инновациям, причем не только в производимой технике. Во-вторых, сами машины были достаточно мощными, чтобы решать серьезные задачи, но вместе с тем достаточно компактными, чтобы их можно было без особого труда перемещать. Но главное даже не это, а другое: DEC не просто понимала потребности хакеров, а разделяла их. Для нее передовые исследовательские учреждения вроде МТИ и Стэнфорда служили полигонами для разработки и обкатки нового программного и аппаратного обеспечения. Наиболее перспективных хакеров DEC даже время от времени приглашала к себе в штат. Трудно представить более разительный контраст со снисходительным и закоснелым гигантом под названием IBM. Операционная система TOPS-10, разработанная DEC, пользовалась точно такой же огромной любовью, и ее развитие с конца 60-х до середины 70-х годов велось при активном участии хакерского сообщества. TOPS-10 сохраняла свои позиции главной хакерской ОС вплоть до 1977 года, когда начался плавный переход на Unix и TOPS-20, духовную наследницу от все тех же разработчиков из DEC.

Исходный код Adventure был написан на языке Fortran[42 - https://ru.bmstu.wiki/Fortran] (FORmula TRANslating system, т.е. «система перевода формул»), которому на тот момент уже исполнилось два десятилетия. Это был первый высокоуровневый язык программирования, получивший широкое распространение; его разработали в конце 50-х годов в недрах компании IBM для своих же мейнфреймов. Краузер и Вудс программировали на стандарте Fortran IV, который появился в 1965 году. Как бы хакеры ни плевались от BASIC, Fortran, сказать по правде, был не сильно лучше: в нем тоже приходилось вручную нумеровать строки, а также обильно пользоваться вставными структурами с оператором GOTO, без которых ничего не работало. Более не подходящий для текстовых приключений язык отыскать трудно – еще и потому, что Fortran не поддерживал строковые переменные. Именно поэтому Краузер вынес весь игровой текст в отдельный файл: с ним так было удобнее работать. По иронии судьбы, в том же году, когда Вудс завершил работу над Adventure, появился Fortran 77 – крупное расширение, которое, помимо прочего, давало возможность манипулировать полноценными строковыми переменными. Увы, переносить проект на этот стандарт было уже поздно.

Но почему именно Fortran? Дело в том, что выбор языков, поддерживаемых TOPS-10, был невелик. В число альтернатив Fortran входил язык ассемблера (но писать на нем игру вроде Adventure – еще большее мучение), а также ненавистный всем BASIC и, наверное, еще более ненавистный COBOL[43 - https://ru.bmstu.wiki/COBOL_(COmmon_Business_Oriented_Language)] (COmmon Business Oriented Language, «обобщенный язык для применения в сфере бизнеса») – страшно негибкий язык, разработанный исключительно для неинтерактивной работы со структурами данных, т.е. рутинных расчетов и бизнес-вычислений, которые казались хакерам невыносимо скучными. Известный нам Эдсгер Дейкстра, желая, видимо, продемонстрировать, что сарказм не всегда идет рука об руку с изобретательностью, отзывался о COBOL примерно в том же духе, что и о BASIC: «Программирование на Коболе калечит мозг, поэтому обучение ему должно трактоваться как преступление». Собственно, методом исключения выбор и пал на Fortran.

Однако несмотря на то, что Краузер с Вудсом писали на одном и том же языке, подходы к оформлению кода у них коренным образом различались. Оригинальный исходный код, написанный Краузером, представляет собой весьма суровый образчик спагетти-кода и практически лишен комментариев, то есть сам по себе все равно что «лабиринт из маленьких запутанных переходов». Да, он, несомненно, лаконичен и прекрасно оптимизирован, но едва ли кто-то, кроме самого Краузера, был в состоянии его поддерживать или хотя бы прочесть. Окончательная версия Вудса, напротив, —образец чистоты и ясности: множество развернутых комментариев, а структура прозрачная и логичная – насколько, конечно, позволяет ограниченный инструментарий Fortran IV. Впрочем, даже невзирая на эти ограничения, читать код Вудса – одно удовольствие. Именно этим, я думаю, и объясняется, каким образом Adventure впоследствии столь быстро портировали на множество других языков и платформ: код Вудса позволял делать это чуть ли не с закрытыми глазами.