Первая в мире текстовая игра 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 г.):
Краудер был одним из сильнейших программистов в компании Bolt, Beranek & Newman, которая разрабатывала ARPANET. Коллеги в офисе рассказывали, чтобы сосредоточиться, Краудер иногда подтягивался на пальцах на дверном косяке. Он всю жизнь занимался альпинизмом и обучил скалолазанию жену.
На фото второй справа, в бороде и очках:
А вот фото Краудера 10-летней давности, свежее не нашла:
В Массачусетсе Пэт и Уилл отслеживали картографические данные каждой экспедиции Фонда исследования пещер. Супруги вводили необработанные данные из «запутанных книжечек» в терминал телетайпа в их гостиной, который был подключен к мейнфрейму PDP-1 на рабочем месте Уилла. Из этих данных они генерировали «команды для нанесения на огромные рулоны бумажной ленты» с помощью программы, которую написал Уилл. Пэт написала подпрограмму для добавления цифр и букв к итоговой карте. Они использовали трофейный барабанный плоттер Cal-comp, подключенный к Honeywell 316.
Honeywell 316:
Карты Краудеров представляли собой упрощенные линейные графики, это одни из самых ранних попыток компьютеризации пещер.
❯ В пещерах
В сентябре 1972 года Патриция Краудер отправилась в экспедицию одна, Уилл остался готовить дочерей Сэнди и Лору к школе. 9 сентября 1972 года Патриция (единственная девушка в экспедиционной группе) смогла втиснуться в узкий каньон и первая прошла по пути, соединяющему Мамонтову пещеру и Флинт-Ридж. Это было значимым событием в спелеологии.
Вернувшись домой, Пэт ввела координаты съемки, которую они провели в Кентукки, через терминал телетайпа в их гостиной. Она запустила программу координат, и данные попали ей в руки в виде длинной бумажной ленты. Утром Пэт и Уилл принесли рулон в офис и компьютер 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 года.
Файл данных состоит из шести отдельных таблиц, содержащих большую часть текста игры:
- подробные описания;
- короткие названия комнат;
- данные карты;
- сгруппированные словарные слова;
- статические состояния игры;
- подсказки и события.
В файл кода встроены статические компоненты переменных строк, таких как «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 года:
Игра также была перенесена на супермини-компьютер 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 на компьютере в Стэнфордском университете и внес значительные расширения и улучшения с разрешения Краудера. Вудс был поклонником Толкина и добавил больше фэнтези, так в игре появились эльфы, тролль, дракон и магические заклинания.
Дон Вудс (Don Woods; 30 апреля 1954 года) — американский хакер и программист, один из разработчиков языка программирования INTERCAL, разработчик приключенческой компьютерной игры Colossal Cave Adventure. Один из авторов «Словаря хакера» (англ. The Hacker’s Dictionary). © Википедия
Версия Вудса расширила игру и обе версии были распространены в зарождающейся сети ARPANET.
По словам спелеологов, игравших в ADVENT, большая часть оригинальной версии Краудера соответствует Мамонтой пещеры, хотя Краудер удалил некоторые проходы в игровых целях. Дополнения Вудса этого не делают, поскольку он никогда там не был. По словам Уильяма Манна, товарища Краудера по спелеологии, который играл в обе версии, Кроутер был сосредоточен на создании системы пещер в качестве декорации для игры, в то время как Вудс был заинтересован в создании игры, а не в воспроизведении ощущения спелеологии.
Colossal Cave Adventure была одной из первых игр для телетайпа и пользовалась огромной популярностью в компьютерном сообществе в конце 1970-х годов, поскольку на основе исходного кода Вудса было создано множество портов и модифицированных версий.
Вудс продолжал выпускать обновленные версии на Фортране до 1995 года.
Вот полное дерево модов на игру:
Кстати, этой осенью должен выйти 3д ремейк игры. Вот сайт игры с новостями, а вот трейлер:
Может я избаловалась, но мне трейлер по графике напомнил игры 10-летней давности, а не обещанный «захватывающий, вручную проработанный мир». Текст + воображение любопытных игроков гораздо красочнее, чем 3D графика.
❯ Игровые приколы
До 2007–2008 учебного года от студентов Стэнфордского университета требовалось заново реализовать игру в качестве задания на первом курсе программирования.
Вы находитесь в лабиринте извилистых маленьких проходов, похожих друг на друга…
«You are in a maze of twisty little passages, all alike» — это запоминающаяся фраза из игры, популярная в хакерской культуре (где «passages» могут быть заменены другим словом, в зависимости от ситуации). Этот лабиринт, где «all alike» («все одинаково») создал Краудер.
Вудс пошел дальше и создал лабиринт «all different» («все по-другому»). Ниже 11 версий его «по-другому»:
- Little maze of twisting passages
- Little maze of twisty passages
- Little twisty maze of passages
- Maze of little twisting passages
- Maze of little twisty passages
- Maze of twisting little passages
- Maze of twisty little passages
- Twisting little maze of passages
- Twisting maze of little passages
- Twisty little maze of passages
- Twisty maze of little passages
Проще, чем кажется
Иногда квесты в игре очень простые.
Волшебное слово XYZZY
«Xyzzy» — это волшебное слово, которое телепортирует игрока между двумя конкретными локациями.
Есть две истории о его происхождении. Первая — что это вроде «абракадабры», просто забавные звуки. Скукота.
А вторая, что «xyzzy» — мнемонический прием для запоминания перекрестного произведения.
Перекрестным произведением двух трехмерных векторов является вектор, длина которого равна площади параллелограмма с двумя заданными векторами в качестве смежных сторон и направлением, перпендикулярным плоскости этого параллелограмма.
Второе и третье уравнения можно получить из первого простым поворотом индексов x → y → z → x. Проблема в том, как запомнить первое уравнение. Вы делаете это, запоминая «волшебное слово», состоящее из нижних индексов, взятых по порядку: xyzzy.
Карты
Вот схематичная карта пещер:
Взяла ее из видео-обзора игры. Кстати, друзья-спелеологи Краудера обычно не испытывали никаких проблем с «ориентированием» в игре.
На этом сайте я нашла две версии, первую можно использовать как подсказку во время прохождения, она просто визуализирует путь:
Если интересно, вот огромное исследование и анализ «Adventure» от Денниса Джерца: Somewhere Nearby is Colossal Cave: Examining Will Crowther’s Original «Adventure» in Code and in Kentucky.
Еще про игры:
- Реверс-инжиниринг интеллекта персонажей: как спроектировать НЕтупого Волдеморта
- Настолки Древней Руси
- 10 принципов хорошего левел дизайна
- Во что поиграть, если шахматы ещё не придумали, а ты фараон / викинг / вождь майя
- 15 игр, которые прокачивают логику, алгоритмы, ассемблер и силу земли
- Ещё 20+ игр, которые прокачивают логику, алгоритмы и радуют умный мозг
- Играйте в хакера безопасно: 20+ игр, чтобы почувствовать себя хацкером и не призвать ФСБ
- 20 игр, чтобы видеть детали, чувствовать нюансы и уловить смысл дизайна
Если было интересно, подписывайтесь на мой канал в Telegram с находками про разработку игр, историю игр и геймдизайн: GameDevils (на русском) и блог на Substack (на английском).