430-очковая версия Adventure обновлена для современных компьютеров

На прошлой неделе Eric S. Raymond выпустил современный порт с открытым исходным кодом последней и самой полной версии Adventure от оригинальных авторов — Кроуфорда и Вудса.

Большая часть последующей статьи посвящена тому, чтобы расшифровать значение этой фразы.

Скриншот 1001-очковой версии
Скриншот версии на 1001 очко — David Malmberg, 2005


Лабиринт перепутанных ходов


У конца дороги
Вы находитесь у самого конца дороги недалеко от небольшого кирпичного строения. Со всех сторон Вас окружает густой лес. Небольшой ручей, вытекающий из строения, продолжает свой путь вниз по оврагу.

Интерактивное начало начал. Это была первая компьютерная игра в жанре «квест», написанная ещё для мейнфреймов PDP-10 на языке FORTRAN. У неё много имён: Abenteuer, ADVENT, Adventure in Humongous Cave, Aventura, Aventure, Avontuur, Colossal Adventure — Jewels of Darkness, Colossal Cave, nuntalyli'u, Original Adventure, и именно она дала старт жанру «adventure».

Существует много переводов игры на русский язык, но самая продвинутая — это версия Дениса Гаева, 2004. Это перевод 350-очковой версии, реконструированной для Inform Дональдом Экманом, Дэвидом Бэджеттом и Грэхемом Нельсоном. Благодаря мощному движку RInform она хорошо понимает синонимы и некоторые особенности русского.

Уильям Кроутер написал эту игру для двух дочерей Сэнди и Лауры. По его словам, это было в 1975 году, «плюс-минус год». Для сравнения, в 1970 году был выдан патент на компьютерную мышь, а в 1975 году вышел игровой автомат Atari Pong. Исходный код самого Кроутера считался потерянным до 2005 года, когда его нашли на архиве студенческого аккаунта Вудса.

Кроутер с женой увлекались спелеологией. К тому же, Уилл регулярно занимался игрой в Dungeons & Dragons. В игре он точно описал, представив как лабиринт, Мамонтову пещеру (Colossal Cave) в Кентукки (а также часть связанных с ней пещер), добавив в него магию, юмор, простую боевую систему и загадки.

Набросок и карта Мамонтовой Пещеры, составленные Кроутером (1974)


Уилл оставил скомпилированную игру в общей папке и уехал в отпуск. По возвращению он обнаружил, что файл ADVENT активно передаётся по сети и далеко за границами ARPANET. В 1976 году в игру поиграл Дон Вудс, выпускник Стэнфордского университета. Он связался с Кроутером, чтобы попросить исходный код, потому что он хотел расширить игру. Вудс добавил в игру инвентарь и систему подсчёта очков. Также именно от Adventure идут сокращения «NE = NorthEast», «N = North» и т.д.

Вудс выпустил код своей версии вместе со скомпилированными файлами. Его 350-очковая версия 1977 года считается «каноничной» отчасти именно потому, что её исходный код был изначально открыт, и у неё есть наибольшее количество фанатских переделок.

До Adventure также были игры Hunt the Wumpus (Грегори Йоб, 1972) и малоизвестная roguelike «dnd». Тем не менее, эти игры не имели прямого влияния на развитие жанра и не содержали попыток парсера человеческого языка.

Весной 1977 года «Приключение» достигло MIT. Поиграв в неё, одна группа игроков решили сделать похожую игру — так появились игра Zork и компания Infocom. Также игрой вдохновлялись Скотт Адамс, который выпустил «Adventureland» в 1978 и Кен и Роберта Вильямс, основатели компании Sierra Online (позднее — просто Sierra).

Можно долго рассказывать детали истории Adventure, как появились заклинания xyzzy и plugh, но это не имеет прямого отношения к новости. Поэтому я просто оставлю полезную ссылку для тех, кто хочет прочитать об Adventure без популярных мифов (например, о том, что в версии Кроутера не было фентези) и с интересными деталями.


В 1994 спелеологи убрали бетонное строение со стальной решёткой перед входом в пещеру.


Открытие исходного кода


> счет
К этому моменту Вы набрали 36 очков (из 350 возможных) за 0 ходов, что дает Вам квалификацию продвинутого искателя приключений.

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

Самым первым портом с Фортрана на тогда ещё новомодный язык Си был порт Джима Гиллогли в 1977; эта версия была включена в пакет «Игры для BSD». Она была одобрена Кроутером и Вудсом, и даже некоторое время продавалась как «Оригинальная Adventure».

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

После выпуска версии 1977 года Кроутер и Вудс продолжали работать над игрой, выпуская новые обновления. Они закончили разработку только в 1995 году с релизом Adventure 2.5, также известной как «430-очковая Adventure». Это — последняя версия, которую выпустили авторы оригинала.

Версия 1995 года была написана на языке Си и распространялась в исходных кодах. Но тогде ещё не устоялись правила и обычаи Open Source, поэтому единственной заметкой об авторских правах был текст внутри файла Makefile.

В 2017 году Eric S. Raymond нашёл эту версию и попросил разрешения у Дона выложить её под лицензией BSD с двумя условиями (2-clause BSD). Дон ответил согласием.

Этот код является форвард-портом1 Crowther/Woods Adventure 2.5 из 1995, последняя версия основной ветки разработки Colossal Cave Adventure, написанная оригинальными авторами. Авторы выразили согласие и поддержку этого релиза.

Вступление к релизу Open Adventure

1: форвард-порт — перенос старого кода в современное окружение.

Вот что говорит сам Дон о различиях между Adventure 2.5 и Adventure 2:

Большая часть очков идёт от пяти новых 16-очковых сокровищ. <…> Каждое новое сокровище требует решить загадку, которая очень хитра для Adventure. Много нововведений — это попытки попробовать новые направления движения и найти новое применение для старых вещей, например, лес снаружи — это не просто несколько локаций, соединённых частично случайным образом, а полноценный лабиринт, и я надеюсь, что он ощущается не похоже на предыдущие два.

Как говорит сам текст, V2.5 практически не отличается от V2, но в ней больше подсказок. (Думаю, я придумал лучшую подсказку и для конца игры.) У меня нет копии текстов из V2, так что не знаю, как она помогала новым игрокам и ветеранам.

Ещё одно большое изменение, как я отметил выше, это способ отнимать очки после определённого количества ходов. Это была моя вторая попытка сделать то, зачем нужны были батарейки: заставить игрока быть эффективным в поиске максимального счёта. Но батарейки привели к тому, что игроки сознательно выключали лампу, когда не двигались или были в освещённой комнате, делая игру ещё длиннее! Я поставил условие на то, что ощущал как жёсткое, но честное количество ходов, а потом добавил несколько гадких фокусов, чтобы отнять ещё двадцать. <…>

Порт вносит несколько косметических и технических изменений. Так, в игре появилась командная строка классического вида (то есть, ввод пользователя обозначается символом ">" — этот обычай появился уже в играх Infocom), а двоичный файл больше не ссылается на внешний файл adventure.text.

Стоит также отметить, что уже пять лет как существует порт 430-очковой версии на Android.



Чем 430-очковая версия лучше канонической? Я предоставлю слово рецензенту: Jason Dyer

Если честно: ни одно из нововведений не является улучшением. Хотя действительно интересно, что можно использовать птицу не один раз, и хорошо что торговый автомат что-то значит, и немного приятно оптимизировать очки, но 430-очковая версия Adventure не так сбалансирована, как 350-очковая.

Если та же сложность загадок была бы радушно принята, скажем, в Philosopher’s Quest, где вся природа игры источала зло, то 350-очковая Adventure дружелюбна и светла. В блюдо, которое их не требовало, добавили специй. Вот что бы Дону Вудсу действительно нужно было (и всё ещё, возможно, стоит) сделать — это написать совершенно другую игру.

2 комментария

vvollo
Очень интересная статья, спасибо.
Только я не понял: в тексте везде 430-очковая версия, а в заголовке — 450-очковая. Ошибка?
Oreolek
Спасибо, исправил.