Интерактивная литературная игра

1. Введение

1.1. «Интерактивная литература

«Интерактивная Литература» (далее ИЛ) — это русский аналог англоязычного понятия “Interactive Fiction“ (IF). В самом широком понимании термина, это — любая разновидность художественных произведений, сюжет которых не является жестко фиксированным, но способен изменяться в зависимости от действий читателя (в компьютерном варианте — пользователя). Например, популярные некогда книжки с нелинейным или «ветвящимся» сюжетом — это тоже вариант ИЛ.
Здесь, однако, мы будем рассматривать исключительно компьютерную разновидность ИЛ. К ней относятся любые интерактивные программы, которые преподносят пользователю информацию преимущественно в текстовом виде (т.е. не в виде графики, анимации, звука и т.п.), а часто (хотя это и не обязательно) также получают инструкции от пользователя в виде текстовых команд (на языке, близком к естественному). Конечно, также обычно предполагается, что у произведения ИЛ имеется сюжет — чаще всего, это приключение какого-нибудь рода, в котором пользователь обычно участвует в качестве главного героя (протагониста). Наиболее известная и популярная разновидность ИЛ — это текстовые игры (они же «текстовые квесты», «игры с текстовым вводом» и т.п.), но нужно заметить, что понятие ИЛ все-таки несколько шире, и не ограничивается исключительно ими. ИЛ — не обязательно просто развлечение, это полноправный жанр искусства!
Довольно близкими родственниками ИЛ можно считать разнообразные текстовые ролевые игры (RPG), MUDы и прочее в том же духе (хотя в данном случае, конечно, упор обычно делается на интерактивность — а «литературность», в лучшем случае, является зачаточной).

1.2. Как интересно! Даже никогда про такое не слышал…

Ну, если Вы принадлежите к новейшему поколению пользователей компьютеров, то это и неудивительно.
Конечно, ИЛ — это очень древний (возможно, даже древнейший) жанр компьютерных развлечений (или, если хотите, компьютерного искусства). Что и понятно, поскольку для текстовой игры не требуется видеокарта с аппаратным 3D-ускорением, графический монитор с высоким разрешением и стереосистема — простейшего текстового дисплея и клавиатуры вполне достаточно. Поэтому текстовые игры появились сразу после того, как были созданы первые интерактивные компьютеры, т.е. компьютеры, с которыми пользователь мог общаться напрямую, вводя команды и почти немедленно получая на них какой-либо отклик. (Революционность этого вы легко можете себе представить, если вспомните, что еще раньше общение с компьютером состояло главным образом в том, что пользователь сдавал оператору в машинном зале стопку перфокарт или рулон перфоленты, а потом несколько часов ждал, когда ему выдадут результаты прогона в виде листинга.) В общем, как только интерактивные компьютеры перестали быть экзотикой, отдельные творческие личности начали думать о том, как бы приспособить их к чему-нибудь менее скучному, чем работа. Можно сказать, что идея компьютерных игр витала в воздухе.
Сейчас общепризнанно, что первой настоящей текстовой компьютерной игрой была «Приключение» (Adventure), известная также под названием «Подземелье» или «Пещера» (Dungeon) и другими. Adventure создали в 1976 г. в Стэнфорде двое компьютерщиков, Уилл Краутер (Will Crowther) и Дон Вудз (Don Woods). Игра была чисто текстовой, управлялась простейшими текстовыми командами (в основном, типа глагол + существительное) на рудиментарном английском, и заключалась в блуждании по пещере и поиске разбросанных там сокровищ и магических артефактов. Тем не менее, эта игра сыграла колоссальную роль в истории, положив начало целому жанру компьютерных игр (а также украв, наверное, десятки тысяч человеко-часов дорогостоящего компьютерного времени).
Игра „Adventure“ породила немало подражаний. Несомненно, одним из самых удачных стал “Zork“ — игра, созданная несколькими студентами из MIT (Массачусетского Технологического Института). Сюжет отличался очень мало (также блуждания по пещере и сбор сокровищ), но головоломки стали заметно разнообразнее и интереснее, а в игре появилось больше NPC с нетривиальным поведением и собственными целями. Так как игра сумела превзойти оригинальный Adventure по популярности, ее создатели решили всерьез заняться разработкой текстовых компьютерных игр — так летом 1979 г. родилась легендарная фирма "Infocom". Именно она ввела в оборот термин “Interactive Fiction”, и за десять лет своей истории выпустила около 30 игр этого жанра, многие из которых (“Hitchhiker’s Guide to Galaxy”, “Leather Goddeses of Phobos”, “Planetfall”, “Trinity”, “Wishbringer”) считаются несомненной классикой.
На волне успеха Infocom появилось немало других фирм, специализирующихся на коммерческой интерактивной литературе. Так, заслуживают упоминания "Legend Entertainment" (возникшая на руинах "Infocom" после распада последней), "Adventure International" Скотта Адамса, британские фирмы "Topologika", "Level 9" и "Magnetic Scrolls", австралийская "Melbourne House"… этот список можно продолжать еще долго. Замечу, что в свое время в жанре текстовых приключений также «отметилось» немало фирм, названия которых обычно ассоциируются с играми других жанров — так, можно вспомнить "Electronic Arts" (“Amnesia”), "Interplay" (“Borrowed Time”) и "Apogee" (“Beyond the Titanic” и “Supernova”). Наконец, существование ИЛ послужило стимулом для возникновения и развития другого (хотя и близко родственного жанра) — чисто графических приключений, ориентированных на «мышиное» управление. Позднее такими играми прославились "Sierra On-line", "Lucasarts", "Access Software" и многие другие фирмы —но это уже совсем другая история. Конечно, стремительный прогресс возможностей персональных компьютеров не мог не повлиять на развитие жанра: в ИЛ начали появляться графика (особенно хорошая в продуктах "Magnetic Scrolls" и "Legend"), музыка со звуковыми эффектами и альтернативные текстовым командам средства управления (многооконный интерфейс многих игр от "Legend" можно считать особенно удачной находкой). Но важнейшей составляющей новых игр все-таки остался художественный текст — что и позволяет утверждать, что основы жанра остались прежними.
Таково, если кратко, славное прошлое интерактивной литературы. Вместе с тем, у этого жанра имеется не менее славное настоящее — и, хочется надеяться, славное будущее.

1.3. Текстовые игры, да еще и с текстовым вводом?

Звучит как-то несовременно. Разве сейчас это кому-либо интересно?
Да, интересно (хотите – верьте, хотите – нет). Жанр интерактивной литературы отнюдь не устарел — он продолжает жить и развиваться.

Конечно, свое коммерческое значение в наши дни он в основном потерял — сегодня вряд ли кто-нибудь будет создавать ИЛ исключительно ради прибыли (хотя до сих пор встречаются и shareware, и даже коммерческие текстовые приключения). Основной движущей силой ИЛ-сцены сейчас являются энтузиасты-любители. Однако, их довольно много; среди них есть исключительно талантливые люди, и многие современные произведения ИЛ нисколько не уступают «классическим образцам». Можно даже считать, что декоммерциализация жанра отчасти пошла ему на пользу — появилось немало по-своему любопытных образцов нетрадиционной и экспериментальной ИЛ, находящихся где-то на стыке между компьютерными развлечениями и литературным авангардом.

Можно предположить, что общее число пользователей ИЛ составляет десятки тысяч. В Интернете проводятся конкурсы, такие как IF-competition; выходят ориентированные на ИЛ электронные издания; в сетевых форумах, посвященных этому жанру, идет активная дискуссия — словом, говорить о какой-либо «смерти жанра» не приходится.

1.4. Но что, собственно, люди в них находят? Чем они лучше, чем графические квесты?

Ну, прежде всего, такая постановка вопроса вряд ли корректна. Никто ведь не утверждает, что произведения ИЛ заведомо «лучше», чем графические квесты. Важно понимать, что это разные жанры (в какой-то степени даже ориентированные на различную аудиторию).

Между ИЛ и графическими приключениями существует разница, во многом похожая на различие между традиционной литературой и кинематографом. Несомненно, и книги, и фильмы являются произведениями искусства, но средства воздействия на потребителя они используют разные — художественный текст и видеоряд. Безусловно, по книге можно поставить фильм (иногда даже очень хороший) — но даже в этом случае фильм не заменит книгу. Просто кино и литература — два разных вида искусства, и спорить о том, какой из них «лучше» — занятие явно бессмысленное.

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

Прежде всего, безусловно, это относительная нетребовательность к вычислительным ресурсам. Конечно, ИЛ-игры тоже встречаются разные (в том числе и довольно большие по объему), но большинство из них предъявляют весьма скромные требования к мощности компьютера и объему памяти. Трудно представить себе современный графический квест размером всего в 250–300 Кбайт, в то время как для ИЛ-продукта это нормальный объем. Разумеется, отсутствие острой необходимости в средствах графического и звукового вывода также расширяет набор устройств, подходящих для ИЛ. В тех современных ИЛ-продуктах, где предусмотрены графика и звук, их обычно можно отключить, ограничившись текстом (даже если общее впечатление от игры пострадает, играть все равно будет можно). Как следствие, играть в ИЛ-игры обычно можно на самых допотопных компьютерах, а также лэптопах, наладонниках и даже сотовых телефонах.

Этому также способствует еще один важный аспект ИЛ — переносимость. Очень многие современные игры, реализованные на основе современных ИЛ-платформ, способны работать везде, где имеется подходящий для данной платформы интерпретатор, а один файл игры подходит сразу для всех платформ. (Подробнее об этом в пункте 1.6.)

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

Другой аспект этой творческой свободы — возможность с минимумом усилий реализовать более сложный и разветвленный сюжет, или больший набор вариантов событий или действий для главного героя. Безусловно, графические квесты сильнее ограничены в этом отношении — даже большая команда художников и аниматоров физически не способна нарисовать больше, чем осилит. А в текстовой игре для добавления какой-нибудь новой ветви сценария достаточно написать десяток-другой строк текста, благодаря чему в ИЛ можно встретить более интересный, продуманный и многовариантный сюжет.

Можно также сказать, что текстовые игры в очень малой степени подвержены моральному старению (если, конечно, Вы не считаете, что жанр устарел морально как таковой). Увы, даже в самых классических рисованных квестах графика сегодня часто выглядит архаично («неплохо, но в 1024x768xTrueColor этот волшебный лес смотрелся бы намного лучше»). Безусловно, это одна из сильных сторон ИЛ — когда графика отсутствует, она в принципе не может устареть. Совершенно то же, конечно, можно сказать про звуковое сопровождение, и прочие атрибуты мультимедиа. (Конечно, устареть также может сама «программная оснастка» игры, но об этом аспекте проблемы мы поговорим чуть ниже.)

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

1.5. Текстовый ввод команд — это, наверное, ужасно неудобно и непрактично?

Во-первых, еще раз хотелось бы подчеркнуть, что текстовый ввод команд — это не догма! Так, большинство игр от Legend можно пройти с начала до конца, пользуясь лишь мышью. И отдельные игры, и многие современные ИЛ-системы также предоставляют разнообразные альтернативы вводу текстовых команд, зачастую довольно удобные.

Во-вторых, это не обязательно неудобно. Многое зависит от того, насколько качественно в игре реализован синтаксический анализатор введенных команд или парсер (дальше мы будем пользоваться этим термином). Безусловно, основная проблема с «самодельными» играми — некачественный парсер, существенно уступающий сложившимся стандартам. Даже когда сама игра не столь уж плоха, парсер в ней часто реализован настолько убого (крайне ограниченный набор слов и синонимов, только простейшие команды типа глагол+существительное, и т.п.), что сам процесс игры превращается в мучение. В общем-то, это — одна из причин, из-за которых сложилось устойчивое мнение, что игры с «мышью» принципиально удобнее.

Но ведь это не так! В большинстве игр от тех же "Infocom", "Legend", "Magnetic Scrolls" парсер является очень хорошим. Обычно он понимает огромное количество глаголов и внушительный набор синонимов и определений для всех объектов игры (десяток синонимов для одного объекта — в порядке вещей); правильно распознает весьма сложные английские фразы (вроде “use trowel to plant pot plant into plant pot” из "The Pawn" от "Magnetic Scrolls"); автоматически поддерживает механизм «уточнения» (если какое-нибудь слово может относиться к нескольким объектам, игра автоматически уточняет, что именно пользователь имеет в виду) и быстрого исправления неправильно введенных команд; поддерживает местоимения — в общем, способен на многое. Помимо этого, набор глаголов, как правило, хорошо стандартизован, а вместо многих из них допускаются общепринятые сокращения (l — look, x — examine и т.п.). Наконец, обычно поддерживается большой набор стандартных служебных команд (сохранение, восстановление, перезапуск, выход, текущий счет и т.д.). Кроме того, все развитые ИЛ-системы обычно поддерживают достаточно мощные и удобные средства для редактирования вводимых команд (включая механизм «истории», автоматически запоминающий все, что вы вводили раньше) и возможность сохранения во внешнем файле списка выполненных команд и полного транскрипта сеанса игры. В действительно профессиональных играх довольно трудно придумать команду, которую игра бы не сумела понять. Начав играть в такую игру, Вы можете быстро забыть, что у Вашего компьютера вообще имеется мышь.

1.6. А есть ли вообще необходимость в специализированных системах для создания ИЛ?

Разве нельзя использовать какой-нибудь стандартный язык программирования?

Можно слышать такое мнение: «Вот я хорошо владею Бейсиком (Паскалем, Delphi, C, C++, Java….), так что без труда напишу текстовую игру на этом языке. Это должно быть совсем несложно — не Quake 3, все-таки!»

Распространенное заблуждение. Нет, безусловно, Вы можете попробовать написать свою игру на любом из перечисленных языков. Может даже получиться совсем неплохо — имеется немало вполне достойных ИЛ-продуктов, написанных на самых стандартных языках программирования. Но все-таки, я настоятельно посоветовал бы Вам сначала обратить внимание на какую-нибудь из специализированных ИЛ-систем. Почему?

Во-первых, выше уже шла речь о том, что большинство современных ИЛ-технологий автоматически обеспечивают такое существенное преимущество, как переносимость. Она достигается за счет того, что создаваемый файл игры представляет собой двоичную программу специализированного формата, не привязанную к конкретному процессору или операционной системе. Конечно, для ее выполнения необходима отдельная программа-интерпретатор — но, если она есть, Вы получаете возможность выполнять любые программы, созданные на основе данной технологии. Помимо системной независимости, такие программы обычно являются довольно компактными (поскольку им не надо реализовывать детали взаимодействия с клавиатурой, дисплеем, ОС и пр. — все это уже реализовано в самом интерпретаторе) и, что немаловажно, абсолютно безопасными в смысле вирусов или других компьютерных вредителей.

Другое, не менее важное преимущество ИЛ-систем состоит в том, что в них уже есть многое из того, что иначе придется реализовывать самостоятельно. Прежде всего, конечно, это анализатор команд, т.е. парсер. Эту проблему мы уже затронули выше — приступив к созданию собственной игры, многие обнаруживают, что, хотя сделать примитивный парсер (ориентированный на команды типа «глагол + существительное») нетрудно, пользователь его очень быстро возненавидит (а вместе с ним и саму игру). Реализация же достаточно продвинутого парсера, соответствующего уровню действительно мощных ИЛ-систем — это весьма нетривиальная задача.

Важным преимуществом ИЛ-систем является то, что они обычно самостоятельно умеют создавать рабочий словарь — специальную внутреннюю структуру данных, содержащую все слова, которые может понимать программа (и оптимизированную для их поиска). Все слова, упомянутые в исходном тексте программы, в сгенерированном коде автоматически заменяются ссылками на поля словаря, за счет чего программа становится намного компактнее, а распознавание команд — эффективнее. Поскольку большая часть данных в ИЛ-программах — это текстовые строки, для них часто применяются специальные методы кодирования со сжатием и устранением дубликатов, что очень существенно уменьшает размеры готовой программы.

Помимо парсера, другой источник потенциальных сложностей — корректная реализацией объектной модели игры. Большинство современных ИЛ-технологий являются объектно-ориентированными — иными словами, программа для них является набором объектов, способных взаимодействовать (обычно путем посылки сообщений) с игроком и друг с другом. Конечно, многие современные языки программирования (C++, Java, Delphi) также являются объектно-ориентированными и поддерживают похожую идеологию. Но такая задача, как описание объектного мира игры, часто проще и эффективнее решается в ИЛ-системах — за счет того, что большой набор объектов и логических взаимосвязей между ними может быть создан уже во время компиляции. ИЛ-системы обычно также предоставляют готовую библиотеку классов, на основе которых можно создавать собственные объекты с унаследованными свойствами. Разрабатывая объектную модель игры самостоятельно, без таких наработок, очень просто допустить ошибки (например, связанные с реализацией объектов-контейнеров, способных содержать в себе другие объекты). Использование стандартных библиотек значительно уменьшает вероятность подобных ошибок.

Понятно, что должно быть реализовано также сохранение и восстановление состояния игры. Решить эту проблему средствами стандартных языков не столь уж просто (особенно когда желательно, чтобы файлы сохраненных игр оказались компактными), в то время как в системах ИЛ это обычно делается автоматически, без каких-либо усилий со стороны программиста.
Поскольку какие-то ошибки в процессе разработки программы все равно неизбежны, во всех ИЛ-системах присутствуют довольно мощные и удобные средства отладки. Часто они позволяют отлаживать программу в терминах созданного вами объектного мира, изменяя местоположение и свойства отдельных объектов, позволяя переместиться в любую локацию, приобрести любой предмет и т.п. Дополнительные сервисные возможности, вроде вывода всего текста игры в отдельный файл для проверки орфографии и пунктуации, также весьма полезны.

Наконец, нельзя не упомянуть о том, что существуют и чисто интерактивные системы разработки ИЛ (Adrift, SUDS, консольные системы), позволяющие создавать и редактировать игры без собственно программирования, исключительно в режиме диалога. Возможности таких систем пока заметно уступают полноценным языкам ИЛ-программирования — но перспективы у этого направления, безусловно, имеются.

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

1.7. Является ли жанр ИЛ преимущественно англоязычным, или другие языки тоже встречаются?

Как обстоят дела с ИЛ на русском языке?

Исторически сложилось так, что первым и основным языком интерактивной литературы стал английский. Это, конечно, не случайно. Прежде всего, этому способствовало место появления первых продуктов ИЛ — сперва США, несколько позднее Великобритания и другие англоязычные страны.

Помимо этого, у английского языка имеются и другие существенные преимущества — в первую очередь его грамматический строй. Из всех европейских (да и мировых) языков, английский — один из самых простых по своей морфологии. Существительные и прилагательные не склоняются; глаголы не спрягаются, а их неопределенная форма ничем не отличается от повелительной (поэтому “take iron key” можно понимать и как «взять железный ключ», и как «возьми железный ключ»), согласования минимальны и т.п. По этим причинам в качестве языка общения с пользователем для ИЛ-системы проще использовать английский, чем другие языки — причем язык системы (как входной, так и выходной) будет достаточно правильным и грамотным, чтобы пользователя это не коробило. Немаловажно и то, что для английского характерны достаточно короткие слова (значительное количество слов не превышает по длине шести букв, или, по крайней мере, различаемо по ним).

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

Что же касается ИЛ на русском языке, то это направление пока еще только делает первые шаги. В какой-то степени это обусловлено относительно сложной морфологией языка (склонением существительных и прилагательных, которое, к тому же, часто важно для понимания фразы), разнообразием форм глаголов и глагольных приставок, относительно длинными словами и многими другими факторами. Тем не менее, все эти трудности, несомненно, преодолимы (тем более, что во многих европейских языках, которые не намного проще, чем русский, с ними удалось справиться). На мой взгляд, бороться с этими трудностями лучше всего с помощью одной из уже русифицированных систем, о которых пойдет речь в следующем разделе.

2. Доступные языки и технологии разработки ИЛ

2.1. ADRIFT (Adventure Developer & Runner — Interactive Fiction Toolkit)

Популярная интерактивная ИЛ-система. Создана относительно недавно.
 
Последняя версия: 4.0 (Generator & Runner)
 
Разработка и поддержка: Кэмпбелл Уайлд (Campbell Wild), начиная с декабря 1997.
 
Доступность: версия 4.00 распространяются как shareware ($17), более ранние — freeware.
 
Принципы технологии: интерактивная среда разработки и исполнения ИЛ-приложений. Средствами Adrift Generator разрабатывается игра, которую можно выполнить с помощью Adrift Runner. Готовые файлы игр имеют расширение '.TAF'.
 
Переносимость: все версии Windows. Кроме того, для выполнения готовых Adrift-программ можно использовать альтернативы: мультиплатформенный Adrift-интерпретатор SCARE (имеются версии для DOS, Windows, Linux…) и Java-приложение jAsea.
 
Основные возможности. Разработка или редактирование игры с помощью Adrift Generator предполагает работу в удобной интерактивной среде. Пользователю доступно несколько рабочих окон:
Rooms: локации игры (их краткие и полные описания, пути между ними и т.п.);
Objects: объекты игры, статические или динамические (портативные). Разумеется, они также имеют описания и специфические свойства (контейнер, поверхность, может быть надет на себя, съедобен, может быть оружием и т.п.), а также такие специфические атрибуты, как размер и вес.

Tasks: собственно команды, определенные пользователем. Здесь можно задавать их связь с объектами, и вызванные ими действия.

Events: позволяет задавать асинхронные (не связанные с действиями пользователя) события игры.
Characters: не главные персонажи (НГП) игры. Здесь задаются алгоритмы их перемещения, их действия, общение с ними.
Стандартный Windows-интерпретатор (Adrift Runner) содержит множество полезных дополнительных возможностей — например, окно карты, показывающее все места, где Вы побывали.
Хотя ADRIFT является интерактивной системой, некоторые базовые вычислительные и программные возможности в нее заложены (в любой текст, выводимый программой, можно включать вычисляемые выражения, в которых допустимо довольно много полезных операций).

Еще одна существенная особенность ADRIFT — встроенная боевая система, позволяющая легко программировать интерактивные баталии в стиле ролевых игр — у главного героя и любых НГП могут быть разнообразное оружие, броня и пр.
Обычный недостаток всех интерактивных систем — отсутствие исходного текста программы (из-за чего невозможно работать с ним внешними средствами, повторно использовать фрагменты программного кода, коллективно разрабатывать программу и пр.) В ADRIFT этот недостаток частично преодолен — имеются средства импорта и экспорта модулей программы в виде исходного текста.
 
Интернационализация и русская версия.

В ADRIFT заложены средства интернационализации, хотя и довольно примитивные. Они основаны на простой подстановке текстовых строк. Обычно, в виде ALR-файла, поставляемого вместе с игрой, задается набор текстовых подстановок, действующих на любой выводимый программой текст (вроде «Also here is|Здесь же»).
Не знаю, как с другими языками, но русская версия системы существует. Разработчик — LARISALISA, взять ее можно на сайте «Клуб Адвантюристов» (см. ниже). Качество перевода хорошее, если сделать скидку на труднопреодолимые ограничения самой системы.
 
Ссылки:
 
http://adrift.org.uk:
ADRIFT — официальный сайт (англоязычный).
Написать разработчику системы можно на campbell%adrift!org!uk.
 
http://advanturist.h1.ru
"Клуб Адвантюристов"
Официальный сайт Русского Adrift. Русская версия системы, библиотеки и игры.
 
2.2. Hugo
 
Относительно молодая (по сравнению с Inform и TADS), но довольно успешно набирающая популярность ИЛ-система.
 
Последняя версия: Hugo engine — 3.0.X.
 
Разработка и поддержка: Кент Тессман (Kent Tessman) занимается разработкой системы с 1995 года вплоть до настоящего времени.
 
Доступность: freeware. Исходные тексты также доступны.
 
Принципы технологии: компилируемый язык программирования. Файлы с исходным кодом (обычно имеющие расширение ’.HUG’) обрабатываются Hugo-компилятором. Естественно, файлы-результаты (‘.HEX’) выполняются Hugo-интерпретатором.
 
Переносимость: широкая. Технология доступна на: Acorn RISC OS, Amiga, BeOS, MS-DOS, большинстве Unix-систем, OS/2, Win95/NT. Интерпретатор также переносим на любую систему, поддерживающую технологию Glk (например MacOS), хотя с поддержкой мультимедиа при этом несколько хуже.
 
Основные возможности. Язык программирования, заметно напоминающий Inform — но, по мнению разработчика, с более «прозрачным» синтаксисом. Парсер качественный (хотя, по некоторым отзывам, слегка уступает уровню Inform и TADS). Из возможностей, заслуживающих отдельного упоминания, присутствуют иерархическое наследование (можно даже использовать объекты в качестве суперклассов), динамическое формирование словаря, глобальные и объектные события (?), предпарсерная обработка командной строки.
В систему входит мощный интерактивный отладчик (HD), позволяющий следить за выполнением программы, устанавливать контрольные точки и т.п. (Отладчик реализован в среде Windows и DOS.) Имеется также специальный набор отладочных подпрограмм (HugoFix).
Мощной особенностью системы изначально были ее мультимедиа-возможности. Впрочем, сейчас вполне сравнимые возможности предоставляют Glulx Inform и HTML-TADS. Тем не менее, достойно упоминания то, что Hugo может поддерживать многооконный интерфейс (с не перекрывающимися окнами), графику (JPEG), аудио (MOD, S3M, MP3, MIDI, XM, WAV; до 32 аудиоканалов), а, начиная с версии 3.0 — даже видео (MPEG, AVI).
 
Интернационализация и русская версия. Кажется, какие-то усилия предпринимаются... Пока у меня нет более надежной информации.
 
Ссылки:
 
http://generalcoffee.com/hugo.html:
Hugo — An Interactive Fiction Authoring System.
Официальная страница проекта.
 
2.3. Hydra
 
(Информация пока отсутствует.)
 
2.4. Inform

(близко родственные технологии: Z-code, Glulx, Blorb)
 
Безусловно, в англоязычном (и не только) мире, это — одна из самых популярных платформ (по общему количеству программ, созданных на этой основе, она явно может претендовать на мировое лидерство).
 
Последняя версия: компилятора 6.30, стандартных библиотек 6/11.
 
Разработка и поддержка: язык Inform в 1993 г. создал Грэхем Нельсон (Graham Nelson). Помимо него, к созданию технологии приложили усилия еще многие: компания Infocom (оригинальный формат Z-файлов), группа InfoTaskForce (его последующая «расшифровка»), Эндрю Плоткин (Andrew Plotkin) — технологии Glk, Glulx и Blorb. В настоящее время, поддержкой и развитием технологии занимается группа, которую возглавляет Роджер Фирт (Roger Firth).
 
Доступность: freeware. Распространяется свободно, при условии неизменности. Исходные тексты библиотек, компилятора и большинства интерпретаторов доступны.
 
Принципы технологии: компилируемый язык программирования. Файлы с исходным кодом (обычно имеющие расширение ’.inf’) обрабатываются компилятором Информ, поддерживающим две целевых платформы — Z-code и Glulx.
Файлы первого типа имеют расширения типа .Z# (# — цифра, номер версии Z-формата) и содержат исполняемый код 16-битовой виртуальной Z-машины. С помощью Inform обычно создаются программы ее пятой (.Z5, до 256 Kb) и восьмой (.Z8, до 512 Kb) версий. Конечно, для их выполнения требуется Z-интерпретатор — наиболее популярен Frotz, имеющий много портов и модификаций. Замечу, что поскольку этот Z-формат отсчитывает свою историю от той самой Infocom, то все Z-интерпретаторы также выполняют большинство классических игр этой фирмы (хотя они созданы не с помощью Inform).
Файлы Glulx (имеют расширение .ULX) содержат 32-битовый виртуальный код. Для их выполнения требуется свой интерпретатор (обычно он называется Glulxe, или наподобие этого). Размер Glulx-игр практически не ограничен, отсутствуют также многие внутренние лимиты, характерные для Z-кода.
 
Переносимость: технология доступна очень широко. Вот список (не самый свежий) платформ, где компилятор Inform доступен: Acorn RISC OS, BeOS, Macintosh, Atari ST (версия 5.4), Amiga, MS-DOS (также версия для GO32), Linux, OS/2, UNIX, VMS (DEC VAX или Alpha) и EPOC (Psion 5/Revo/7), Windows. Z-интерпретаторы доступны еще шире — в частности, есть для большинства маломощных устройств, вроде наладонников. Glulx-интерпретаторы пока распространены меньше, но для Windows, Linux (консольный и X) и MacOS X имеются.
 
Основные возможности. Inform — полнофункциональный объектно-ориентированный язык программирования, во многом похожий на C и SmallTalk. Он позволяет описывать игру в виде иерархии объектов с определенными свойствами и атрибутами; поддерживаются классы и наследование, в т.ч. множественное. Системный парсер весьма развит и соответствует стандартам лучших продуктов от Infocom. По умолчанию поддерживается около полусотни стандартных глаголов; можно легко определять новые глагольные фразы (с альтернативными вариантами синтаксиса), равно как и замещать или переопределять стандартные.
Платформе присуща очень открытая архитектура — Inform в значительной степени реализован на себе самом. Например, парсер реализован в виде набора Inform-подпрограмм, что позволяет легко изменять любые его модули; то же справедливо для библиотеки стандартных глаголов. В языке также имеется специальное средство для «замещения» стандартных подпрограмм на определенные пользователем. Имеется более сотни дополнительных модулей и полезных расширений для стандартных библиотек. Имеются даже полные альтернативы стандартным библиотекам — например, пакет Platypus.
Отдельного отладчика для Inform не предусмотрено — зато предусмотрен специальный отладочный режим компиляции игры. В нем доступно большое количество дополнительных отладочных глаголов, позволяющих следить за работой парсера и внутренними процессами игры, просматривать структуру объектного дерева и свойства отдельных объектов, мгновенно переместиться в любую локацию и заполучить любой объект и т.п. Еще более мощных дополнительным средством является встроенный отладчик “Infix“, позволяющий произвольно менять переменные игры и атрибуты объектов и понимающий выражения с Inform-подобным синтаксисом.
Компилятор поддерживает множество дополнительных опций, включая выдачу разнообразных листингов и дампов создаваемой программы в «читаемом» виде, выдачу статистики (например, общий объем текста в исходном коде) и пр. Для Z-формата доступно много дополнительных инструментов — декодеры и дисассемблеры (TXD, InfoDump), верификаторы целостности Z-файла и пр. Имели место даже попытки (пока, правда, не слишком удачные) создать дисассемблеры, автоматически восстанавливающие Z-файл до исходного кода на Информе.

Оригинальный формат Z-кода предлагал весьма ограниченные (и плохо совместимые с новыми интерпретаторами) возможности для управления цветом и стилями текста, деления экрана на окна и вывода графики. Новый формат, Glulx, призван исправить этот недостаток. Glulx-программы могут открывать и использовать произвольное количество неперекрывающихся окон (причем их размеры и расположение можно менять при выполнении программы), управлять стилями и форматированием выводимого текста, выводить графические изображения в отдельные окна или встраивать их в текст, внедрять в текст гиперссылки, воспроизводить музыку и звуковые эффекты по нескольким каналам, работать с произвольными внешними файлами и пр. Glulx-программы управляются событиями, позволяющими асинхронно обрабатывать ввод от клавиатуры, мыши и таймера. Стандартные Информ-библиотеки теперь расширены таким образом, что программист может создавать Glulx-игры с поддержкой графики, аудио, мыши и т.п. ничего в них не меняя — надо лишь подключить собственные обработчики к заложенным в библиотеку «переходникам». Новым стандартным форматом для хранения графики и мультимедиа является Blorb (расширение .BLB). В файлы этого формата могут упаковываться графические изображения (в форматах JPEG и PNG), музыка и звуки (в форматах MOD, SONG, AU, RIFF/WAV и OGG) и собственно программа (как Z-code, так и Glulx), что дает возможность распространять программу в одном BLB-файле вместе со всеми мультимедиа-ресурсами.

С использованием этих технологий есть возможность создавать ИЛ-игры, дополняющие стандартный парсер мощным Legend-подобным многооконным интерфейсом. Более того, уже появились библиотечные пакеты, помогающие это делать (например, GWindows).
 
Интернационализация и русская версия. Inform — одна из самых широко локализованных систем ИЛ, причем возможность локализации заложена непосредственно в стандартные библиотеки. Все языково-специфичные детали (сообщения, грамматика, союзы и служебные слова и пр.) изолированы от прочего кода, собраны в двух библиотечных файлах (English.h и Grammar.h), и в принципе достаточно правильно перевести их содержимое для локализации всей системы. Хотя изначально система создавалась для такого грамматически простого языка, как английский, в ней предусмотрено многие понятия (концепции рода и числа, различные артикли и их contraction forms и пр.), также необходимые для европейских языков. Механизм предпарсерной обработки командной строки позволяет справиться со многими языково-специфичными трудностями. Уже имеются переводы на немецкий, французский, испанский, итальянский, шведский, искусственные языки эсперанто и lojban; в процессе перевод еще на несколько языков — португальский, финский, польский. В спецификации Z-форматов сейчас заложена полная поддержка набора символов Unicode.

Русская версия системы (RInform) активно разрабатывается с 2003 года по настоящее время. Основной ее разработчик — автор этого документа (dgaev%mail!ru). Состояние — «стабильная бета» (версия 0.80 готовится к выходу), принципиальных изменений не ожидается. Система самостоятельно умеет генерировать падежные формы для имен объектов (достаточно выделить падежные окончания существительных и прилагательных, например «массивн/ая стальн/ая двер/ь», присвоив соответствующему объекту правильные род и число), и распознавать падежные формы в командах (и «открыть дверь ключом», и «открыть ключом дверь» понимаются правильно). Также распознается большое число дополнительных глагольных форм с приставками.

К сожалению, сейчас Glulx не поддерживается в качестве выходной платформы для RInform, т.к. в спецификации этого формата поддержка наборов символов, отличных от Latin-1, не заложена вообще! К счастью, это будет исправлено. Кроме того, не все Z-интерпретаторы правильно поддерживают Unicode — под Windows рекомендуется использовать WinFrotz 2002.
 
Ссылки:
 
http://inform-fiction.org: официальная страница проекта Информ.
 
2.5. TADS (Text Adventure Development System)
 
Безусловно, вторая по популярности (после Inform) ИЛ-платформа.
 
Последняя версия: 2.5.X (TADS 2), 3.0.X (TADS 3).
 
Разработка и поддержка: TADS — профессиональная система для разработки ИЛ — создана Майклом Робертсом (Michael Roberts) в конце 1980-х годов. Он ее продолжает развивать и поддерживать до настоящего времени (при участии и поддержке множества энтузиастов).
 
Доступность: когда-то система разрабатывалась как shareware-продукт; теперь распространяется свободно вместе с исходными текстами.
 
Принципы технологии: компилируемый язык программирования. TADS-компилятор обрабатывает исходные файлы (обычно имеющие расширение ’.T’), и генерирует переносимый двоичный файл игры (расширение .GAM), для выполнения которого необходим TADS-интерпретатор.
 
Переносимость: широкая. Система TADS доступна на: Acorn RISC OS (только интерпретатор), AmigaDOS, Atari ST/TT/Falcon, DECStation, Linux, Macintosh, MS-DOS (есть также версия для GO32), NeXT, OS/2, SGI Iris/Indigo, SunOS & Sun 3, все версии Windows. Интерпретаторы TADS предъявляют несколько большие системные требования, чем Z-интерпретаторы, поэтому на очень маломощных системах (старые ПК, наладонники) могут не работать.
 
Основные возможности. TADS — объектно-ориентированный язык программирования, напоминающий гибрид между C и Паскалем. Обычная программа состоит в основном из описаний объектов (локаций, предметов, NPC); поддерживаются суперклассы и наследование (множественное). Стандартный парсер весьма развит (не уступает стандартному «инфокомовскому» уровню). Конечно, есть возможность переопределять и расширять набор глаголов и их синтаксис, а также переопределять библиотечные подпрограммы. TADS также поддерживает динамическое управление памятью и создание новых объектов при выполнении. Система располагает развитыми средствами ввода-вывода — в частности, можно работать с любыми внешними файлами. Предусмотрена даже возможность связывания с двоичной TADS-программой фрагментов кода, написанных на других языках (хотя то, что получится в результате, вряд ли будет переносимым). Есть возможность создавать “stand-alone game”, т.е. TADS-программу, связанную с интерпретатором в один исполняемый файл.
Весьма мощное дополнительное средство — TADS-отладчик (TDB), позволяющий просматривать и изменять любые данные программы, выполнять ее в пошаговом режиме, устанавливать контрольные точки и пр.
Ядро TADS технологии (стандартные суперклассы, глаголы, системные сообщения) реализовано в виде двух библиотечных файлов (“adv.t” и “std.t”), легко доступных для модификации. (Правда, по крайней мере, в TADS 2, возможности влиять на работу парсера существенно меньше, чем в Inform.) Также реализовано множество полезных расширений для стандартных библиотек, существуют даже полные альтернативы (WorldClass, Pianosa).
Относительно новое расширение технологии — HTML-TADS — позволяет лучше управлять выводимым текстом, путем включения в него тегов разметки (подмножество HTML). За счет этого можно управлять шрифтами, размерами, цветом и прочими стилевыми атрибутами текста; можно включать в текст гиперссылки и графику (GIF, JPEG, PNG), воспроизводить многие популярные аудиоформаты (MIDI, WAV, MP3, OGG). Программы, ориентированные на HTML-TADS, работают и в более старых TADS-интерпретаторах (хотя, конечно, без перечисленных «излишеств»). Сейчас HTML-TADS интерпретаторы доступны для Windows и MacOS X.
Новые версии системы (TADS 3) представляют собой существенный шаг вперед, прежде всего, в плане описания объектной модели игры. В ходе работы над TADS3, автор дорабатывает совместный для новой и старой версии интерпретатор, что означает дальнейше улучшение мультимедийных возможностей и интерфейса. Пока TADS 3 пользуется несколько меньшей популярностью, чем TADS 2.
 
Интернационализация и русская версия. Локализация TADS требует несколько больше усилий, чем Inform. Для перевода системы потребовалось адаптировать к другому языку оба библиотечных файла.
Русская версия TADS 2 (далее RTADS) разрабатывается с лета 2002 г. Ведущий разработчик — Андрей Гранкин (mailto:grandrey%mail!ru). Состояние разработки на сегодняшний день — стабильное, обновления появляются раз в три-шесть месяцев.

Встроенной в саму систему поддержки падежей нет. Система работает с заранее назначенными автором падежами, для упрощения этой задачи предусмотрен "генератор падежных форм", реализованный как отдельное Win-приложение.
Официальное руководство по TADS переведено на русский язык Валентином Коптельцевым (http://rtads.h-type.com/manual/INDEX.HTM).
Русская локализация TADS 3, насколько мне известно, пока не планируется.
 
Ссылки:
 
http://tads.org:
Официальная страница проекта TADS (англоязычная).
 
http://rtads.h-type.com:
Официальная страница RTADS. Письма можно посылать на rtads%mail!ru.
 
2.6. URQ (Universal RipSoft Quest)
 
Простая платформа отечественного происхождения для разработки «консольной» ИЛ (управляемой с помощью меню и кнопок).
 
Последняя версия: 1.4 (официальная). (Есть версия 2.0 alpha, очень неустойчивая.)
 
Разработка и поддержка: оригинально — компания RipSoft. Главный разработчик URQ_DOS (с 2002 г.) — Виктор Корянов. Поддержка WinURQ на настоящий момент прекращена.
 
Доступность: freeware.
 
Принципы технологии: интерпретатор, работающий непосредственно с исходными текстами. URQ_DOS — компилирующий интерпретатор (работает устойчивее и быстрее, чем WinURQ). Файлы с квестами обычно имеют расширение ‘.qst’ (‘qs1’, ‘.qs2’ — шифрованные).
 
Переносимость: Все версии Windows и DOS (с 2003 года — только 32-разрядная версия URQ_DOS). Существуют отдельные проблемы совместимости между разными версиями интерпретатора (в частности, версиями под Win и DOS). Для Win-версии, написанной на VB, также должны быть установлены некоторые нестандартные OCX-компоненты, доступные с сайта разработчика.
 
Основные возможности. На основе URQ можно создавать простые квесты, напоминающие книгу с ветвящимся сюжетом. Управление осуществляется не командным путем, а путем выбора пользователем одного из нескольких доступных вариантов действий через систему меню и кнопок. Конечно, это существенно ограничивает интерактивность (зато сам процесс игры требует минимум усилий со стороны пользователя).
Встроенного в платформу механизма разработки нет, программы можно создавать в любом текстовом редакторе. Имеется специальный редактор SMSQ (разработчик — Евгений Бычков). Они пишутся на простом Бейсик-подобном языке программирования (Universal Ripsoft Quest Language — URQL), который понемногу совершенствуется и развивается. Базовые средства языка позволяют (само собой) выводить текст и управляющие кнопки, иметь числовые и строковые переменные, выполнять ветвления и циклы в зависимости от определенных условий, обращаться к подпрограммам. URQL-код может быть частично самомодифицирующимся (возможность мощная, хотя, на мой взгляд, довольно опасная). Допустимо «шифрование» исходного кода (простое, только чтобы скрыть его от любопытствующих глаз).
В последних версиях WinURQ присутствуют неплохие мультимедиа-возможности. Можно вставлять в текст графические изображения (в т.ч. работающие как гиперссылки), использовать звуки и музыку (WAV и MID), разбивать квест на модули, запрашивать у пользователя ввод (числа, текстовые строки).
Система хорошо документирована (не говоря уж о том, что доступность большинства программ в исходных текстах полезна сама по себе).
К недостаткам URQ можно отнести отсутствие встроенных механизмов объектно-ориентированного программирования.
 
Ссылки:
 
http://ripsoft.narod.ru/Ripsoft.htm:
RipSoft, старый официальный сайт.
 
http://urq.ru:
Фактический официальный сайт. Очень большой выбор URQ-квестов.
 
http://urq.fastbb.ru
Форум по URQ
 
http://urq.ru/urq_dos/index.shtml
Официальная страница URQ_DOS.
 
3. Каталог ссылок

Здесь, в основном, перечислены ссылки на интересные ИЛ-ресурсы, не упомянутые выше.
 
3.1. Англоязычные ресурсы
 
http://ifarchive.org
The Interactive Fiction Archive
Это — основной мировой архив Interactive Fiction. Сотни мегабайтов ИЛ, и всего того, что с ней связано. Тысячи игр для всех ИЛ-систем на всевозможных платформах, интерпретаторы, средства разработки и библиотеки, документация, статьи и электронные издания, подсказки и полные прохождения, архивы ИЛ-конференций, многое другое. Если вы ищете что-либо, связанное с ИЛ, поиск стоит начинать здесь.
 
http://if-legends.org
Interactive fiction legends
Как легко догадаться из названия, сайт посвящен «легендам» жанра ИЛ. На нем выложено множество интересных материалов про фирмы Infocom, Adventure International, Magnetic Scrolls, Level 9, Polarware. Есть сканированные руководства, подсказки и прохождения, а для некоторых фирм и сами игры.
 
http://wurb.com/if/
BAF's IF Guide
Отличный, очень удобный каталог современной ИЛ. Игры сгруппированы по названиям, авторам, системам и жанрам, к каждой имеется подробная аннотация.
 
http://firthworks.com/roger
Roger Firth's IF pages
ИЛ-страница Роджера Фирта. В основном там есть материалы по Информу, но и других интересных вещей достаточно. Стоит взглянуть на исходные тексты Cloak of Darkness — игра совершенно тривиальная, но реализована на всех без исключения ИЛ-системах, что позволяет легко сравнить и оценить их возможности.
 
http://emshort.home.mindspring.com/index.htm
Emily Short IF Page
ИЛ-страница Эмили Шорт, хорошо известной как автор многих отличных ИЛ-игр (Metamorphosys, Pytho’s Mask, City of Secrets). Также много полезной информации, особенно для Информ-разработчиков, но не только.
 
3.2. Русскоязычные ресурсы
 
http://taplap.ru:
Interactive Fiction по-русски.
Сайт настоятельно рекомендуется всем, интересующимся русскоязычной ИЛ. Игры, анонсы, форум.


Комментировать

Оставлять комментарии могут только авторизованные пользователи ... Авторизуйтесь, через вашу любимую социальную сеть!