Первая в мире текстовая игра Colossal Cave Adventure + исходный код на Фортране

Первая в мире текстовая игра Colossal Cave Adventure + исходный код на Фортране

«Вы знаете, за свою карьеру я совершил множество замечательных вещей, забавно, что единственное, за что меня помнят, — это «Adventure».

Уилльям Краудер

Прежде чем написать код своей легендарной игры, Краудер помог нанести на карту сложную сеть пещер, а до этого он уже занял место в истории благодаря своему вкладу в другую сеть. В составе команды программистов Bolt, Beranek and Newman он помог создать ARPANET, предшественницу Internet.

Уилльям Краудер — один из разработчиков ARPANET, спелеолог и любитель D&D. А еще у него были две маленькие дочки, которые не знали программирование. На пересечение всего этого родилась первая версия «Colossal Cave Adventure».

Уильям Краудер написал игру «Colossal Cave Adventure» (чаще Adventure или ADVENT) в 1975 году. Это первый пример «interactive fiction» и предок квестовых игр. Adventure вдохновила разработчиков на множество игр, в т.ч. Zork (1977), Adventureland (1978), Mystery House (1980), Rogue (1980) и Adventure (1980), которые впоследствии стали основой для жанров интерактивная фантастика, adventure, roguelike и action-adventure.

Я веду ламповый Telegram-канал GameDEVils и блог на Substack. Заглядывайте в гости, я делюсь там материалами про геймдизайн, разработку и историю игр ^__^

Краудеры

В «Adventure» игрок путешествует по огромной фентезийной пещере, а игра выступает в роли рассказчика, описывая местонахождение игрока и результаты предпринятых игроком действий. Пещера в игре основана на карте реальной Мамонтовой пещеры в Кентукки, которую помогали составлять Уильям и его жена Патриция Краудер.

Краудер и его первая жена Пэт были спелеологами. В 1960-70-х годах Краудеры проводили все каникулы под землей, вместе участвовали в экспедициях и исследовали связь Мамонтовой пещеры и пещерной системы Флинт-Ридж.

Патриция Краудер (29 лет, 1972 г.):

Первая в мире текстовая игра Colossal Cave Adventure + исходный код на Фортране

Краудер был одним из сильнейших программистов в компании Bolt, Beranek & Newman, которая разрабатывала ARPANET. Коллеги в офисе рассказывали, чтобы сосредоточиться, Краудер иногда подтягивался на пальцах на дверном косяке. Он всю жизнь занимался альпинизмом и обучил скалолазанию жену.

На фото второй справа, в бороде и очках:

Первая в мире текстовая игра Colossal Cave Adventure + исходный код на Фортране

А вот фото Краудера 10-летней давности, свежее не нашла:

Первая в мире текстовая игра Colossal Cave Adventure + исходный код на Фортране

В Массачусетсе Пэт и Уилл отслеживали картографические данные каждой экспедиции Фонда исследования пещер. Супруги вводили необработанные данные из «запутанных книжечек» в терминал телетайпа в их гостиной, который был подключен к мейнфрейму PDP-1 на рабочем месте Уилла. Из этих данных они генерировали «команды для нанесения на огромные рулоны бумажной ленты» с помощью программы, которую написал Уилл. Пэт написала подпрограмму для добавления цифр и букв к итоговой карте. Они использовали трофейный барабанный плоттер Cal-comp, подключенный к Honeywell 316.

Honeywell 316
Honeywell 316

Карты Краудеров представляли собой упрощенные линейные графики, это одни из самых ранних попыток компьютеризации пещер.

В пещерах

В сентябре 1972 года Патриция Краудер отправилась в экспедицию одна, Уилл остался готовить дочерей Сэнди и Лору к школе. 9 сентября 1972 года Патриция (единственная девушка в экспедиционной группе) смогла втиснуться в узкий каньон и первая прошла по пути, соединяющему Мамонтову пещеру и Флинт-Ридж. Это было значимым событием в спелеологии.

Первая в мире текстовая игра Colossal Cave Adventure + исходный код на Фортране

Вернувшись домой, Пэт ввела координаты съемки, которую они провели в Кентукки, через терминал телетайпа в их гостиной. Она запустила программу координат, и данные попали ей в руки в виде длинной бумажной ленты. Утром Пэт и Уилл принесли рулон в офис и компьютер BBN проложил связь, которую она установила под землей.

Через несколько лет после того, как Краудеры использовали миникомпьютер Honeywell 316 для составления своих карт пещер, он был перепрофилирован и усилен, превратившись в интерфейсный процессор сообщений, или IMP — то, что мы сейчас называем маршрутизатором. Эти маршрутизаторы образовывали подсеть из небольших компьютеров в ARPANET, перемещая данные и переводя их между основными узлами.

В 1975 году Краудеры развелись. Уильям тогда часто играл в Dungeons and Dragons и много программировал по ночам. А вот со спелеологией стало туго — из-за общего с бывшей женой круга знакомых он перестал ходить в экспедиции, считал такие встречи неловкими.

Краудер скучал по дочкам и по пещерам. Он решил отвлечься, создав свою воображаемую пещеру с элементами D&D:

I had been involved in a non-computer role-playing game called Dungeons and Dragons at the time, and also I had been actively exploring in caves — Mammoth Cave in Kentucky in particular. Suddenly, I got involved in a divorce, and that left me a bit pulled apart in various ways. In particular I was missing my kids. Also the caving had stopped, because that had become awkward, so I decided I would fool around and write a program that was a re-creation in fantasy of my caving, and also would be a game for the kids, and perhaps some aspects of the Dungeons and Dragons that I had been playing. My idea was that it would be a computer game that would not be intimidating to non-computer people, and that was one of the reasons why I made it so that the player directs the game with natural language input, instead of more standardized commands. My kids thought it was a lot of fun.

Технологии

Оригинальная игра Краудера состояла примерно из 700 строк кода на Фортране и еще около 700 строк данных, написанных для PDP-10 компании BBN. Для работы программе требовалось около 60 КБ слов (почти 300 КБ) основной памяти, что было значительным объемом для систем PDP-10/KA, работающих только с 128 КБ слов.

Как-то восемь знакомых Краудера зашли к нему в офис, чтобы посмотреть его программу. Игра произвела впечатление на его коллег:

«Уилл был очень горд — или, точнее, удивлен — тем, как хорошо он мог обмануть людей, заставив их думать, что за игрой стоит какой-то очень сложный ИИ».

M. Kraley

Самый ранний исходный код игры Краудера PDP-10 «Adventure» существует в двух файлах FORTRAN — один для данных и один для кода, датированных 11 марта 1977 года.

Файл данных состоит из шести отдельных таблиц, содержащих большую часть текста игры:

  1. подробные описания;
  2. короткие названия комнат;
  3. данные карты;
  4. сгруппированные словарные слова;статические состояния игры;подсказки и события.

В файл кода встроены статические компоненты переменных строк, таких как «I SEE NO», «A5», «HERE», где «A5» представляет собой имя объекта. Весь текст был написан заглавными буквами из-за ограничений PDP-10.

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

Одним из тех, кто открыл для себя эту игру, был Дон Вудс, аспирант Стэнфордского университета. Вудс нашел игру в 1976 г. на PDP-10 в медицинской школе Стэнфорда и захотел расширить возможности игры. Он связался с Краудером, чтобы получить доступ к исходному коду, отправив электронное письмо «crowther» на каждый домен, который существовал в ARPANET.

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

Версия Вудса, выпущенная в 1977 году, расширила игру Краудера примерно до 3000 строк кода и 1800 строк данных. Игра увеличилась до 140 местоположений на карте, 293 словарных слов и 53 объектов. Вудс также добавил в игру средства контроля доступа, позволяющие администраторам мэйнфреймов ограничивать запуск игры в рабочее время.

В 1977 году Джим Гиллогли (Jim Gillogly) из корпорации RAND провел несколько недель, перенося код с Фортрана на C под Unix, с согласия Вудса и Краудера.

Unix-версия игры на компьютере Osborne 1 около 1982 года:

Первая в мире текстовая игра Colossal Cave Adventure + исходный код на Фортране

Игра также была перенесена на супермини-компьютер Prime Computer под управлением PRIMOS в конце 1970-х годов с использованием Fortran 4 и на мейнфреймы IBM с VM/CMS в конце 1978 года с использованием PL/1.

Более поздние версии игры отошли от языков программирования общего назначения, вроде C или Fortran. Для них использовали специальные движки для «interactive fiction», наподобие Z-machine Infocom.

Дональд Кнут в 1998 году использовал версию 1.0 «Adventure» Вудса на Фортране в качестве своего единственного примера в руководстве по программированию. Кнут переводит код Краудера/Вудса с FORTRAN на CWEB, начиная каждый раздел кода с обсуждения, как правила, определенные в каждом разделе кода, влияют на игровой процесс.

Исходники

Оригинальный исходный код версии Краудера 1976 года.

Открытый исходный код Adventure порта версии Crowther and Woods 1995 года.

Моды

В 1976 году аспирантом Дон Вудс обнаружил Adventure на компьютере в Стэнфордском университете и внес значительные расширения и улучшения с разрешения Краудера. Вудс был поклонником Толкина и добавил больше фэнтези, так в игре появились эльфы, тролль, дракон и магические заклинания.

Первая в мире текстовая игра Colossal Cave Adventure + исходный код на Фортране

Дон Вудс (Don Woods; 30 апреля 1954 года) — американский хакер и программист, один из разработчиков языка программирования INTERCAL, разработчик приключенческой компьютерной игры Colossal Cave Adventure. Один из авторов «Словаря хакера» (англ. The Hacker's Dictionary). © Википедия

Версия Вудса расширила игру и обе версии были распространены в зарождающейся сети ARPANET.

По словам спелеологов, игравших в ADVENT, большая часть оригинальной версии Краудера соответствует Мамонтой пещеры, хотя Краудер удалил некоторые проходы в игровых целях. Дополнения Вудса этого не делают, поскольку он никогда там не был. По словам Уильяма Манна, товарища Краудера по спелеологии, который играл в обе версии, Кроутер был сосредоточен на создании системы пещер в качестве декорации для игры, в то время как Вудс был заинтересован в создании игры, а не в воспроизведении ощущения спелеологии.

Colossal Cave Adventure была одной из первых игр для телетайпа и пользовалась огромной популярностью в компьютерном сообществе в конце 1970-х годов, поскольку на основе исходного кода Вудса было создано множество портов и модифицированных версий.

Вудс продолжал выпускать обновленные версии на Фортране до 1995 года.

По ссылке интерактивное дерево модов на игру, а картинка, чтобы понимать, сколько их:

Первая в мире текстовая игра Colossal Cave Adventure + исходный код на Фортране

Кстати, этой осенью должен выйти 3д ремейк игры. Вот сайт игры с новостями, а вот трейлер:

Может я избаловалась, но мне трейлер по графике напомнил игры 10-летней давности, а не обещанный “захватывающий, вручную проработанный мир”. Текст + воображение любопытных игроков гораздо красочнее, чем 3D графика.

Игровые приколы

До 2007-2008 учебного года от студентов Стэнфордского университета требовалось заново реализовать игру в качестве задания на первом курсе программирования.

Вы находитесь в лабиринте извилистых маленьких проходов, похожих друг на друга...

«You are in a maze of twisty little passages, all alike» — это запоминающаяся фраза из игры, популярная в хакерской культуре (где «passages» могут быть заменены другим словом, в зависимости от ситуации). Этот лабиринт, где «all alike» («все одинаково») создал Краудер.

Вудс пошел дальше и создал лабиринт «all different» («все по-другому»). Ниже 11 версий его «по-другому»:

  1. Little maze of twisting passages.
  2. Little maze of twisty passages.
  3. Little twisty maze of passages.
  4. Maze of little twisting passages.
  5. Maze of little twisty passages.
  6. Maze of twisting little passages.
  7. Maze of twisty little passages.
  8. Twisting little maze of passages.
  9. Twisting maze of little passages.
  10. Twisty little maze of passages.
  11. Twisty maze of little passages.

Проще, чем кажется

Иногда квесты в игре очень простые.

К примеру, когда вы встречаете дракона, и вам надо его победить. Спойлер.

Первая в мире текстовая игра Colossal Cave Adventure + исходный код на Фортране

Волшебное слово XYZZY

«Xyzzy» — это волшебное слово, которое телепортирует игрока между двумя конкретными локациями.

Есть две истории о его происхождении. Первая — что это вроде «абракадабры», просто забавные звуки. Скукота.

А вторая, что «xyzzy» — мнемонический прием для запоминания перекрестного произведения.

Перекрестным произведением двух трехмерных векторов является вектор, длина которого равна площади параллелограмма с двумя заданными векторами в качестве смежных сторон и направлением, перпендикулярным плоскости этого параллелограмма.

Первая в мире текстовая игра Colossal Cave Adventure + исходный код на Фортране

Второе и третье уравнения можно получить из первого простым поворотом индексов x -> y -> z -> x. Проблема в том, как запомнить первое уравнение. Вы делаете это, запоминая «волшебное слово», состоящее из нижних индексов, взятых по порядку: xyzzy.

Карты

Вот схематичная карта пещер:

Первая в мире текстовая игра Colossal Cave Adventure + исходный код на Фортране

Взяла ее из видео-обзора игры. Кстати, друзья-спелеологи Краудера обычно не испытывали никаких проблем с «ориентированием» в игре.

На этом сайте я нашла две версии, первую можно использовать как подсказку во время прохождения, она просто визуализирует путь:

Первая в мире текстовая игра Colossal Cave Adventure + исходный код на Фортране

А вот вторая версия со спойлерами, на ней указаны все сокровища и названия комнат:

Первая в мире текстовая игра Colossal Cave Adventure + исходный код на Фортране

Если вы гик и любите упороться, вот огромное исследование и анализ «Adventure» от Денниса Джерца: Somewhere Nearby is Colossal Cave: Examining Will Crowther's Original “Adventure” in Code and in Kentucky.

На этом всё. Если было интересно, подписывайтесь на мой канал в Telegram с находками про разработку игр, историю игр и геймдизайн: GameDevils (на русском) и блог на Substack (на английском).

4949
11 комментариев

Очень интересно! Автору большое спасибо!
По сути, речь в статье идёт о первых тёмных годах в истории компьютерных игр, о которых сохранилось очень мало свидетельств. Тем ценнее те свидетельства, которые у нас есть.
https://dtf.ru/games/1212421-istoriya-kompyuternyh-rolevyh-igr-chast-1-rannie-gody-1980-1983

3
Ответить

О, спасибо за ссылочку, гляну 👍🏻

Ответить

перевод через гугл. за лонг +, за херовьій перевод два минуса

1
Ответить

Может я избаловалась, но мне трейлер по графике напомнил игры 10-летней давности, а не обещанный “захватывающий, вручную проработанный мир”.

Зумерские инди-поделки на юнити он напомнил, от Роберты Вильямс ожидалось что-то более солидное.

1
Ответить

И я о том же :/

Ответить

инди-поделки на юнитинадо попробовать на анриле замутить тогда...

Ответить

Комментарий недоступен

Ответить