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

(текущее состояние, тенденции, средства разработки)
Дата публикации:18.08.2004
Twitter Facebook Vkontakte

1. Введение

1.1. «Интерактивная литература?» А что это такое?

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

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

Довольно близкими родственниками ИЛ можно считать разнообразные текстовые ролевые игры, MUDы и пр. (хотя в данном случае, конечно, упор обычно делается на интерактивность — а «литературность», в лучшем случае, является зачаточной J).

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

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

Сейчас общепризнанно, что первой настоящей текстовой компьютерной игрой была «Приключение» (Adventure) — она же известна под названием «Пещера» (Dungeon) и многими другими. Эту игру создали двое компьютерщиков, Уилл Краутер (Will Crowther) и Дон Вудз (Don Woods) в 1976 г. в Стэнфорде. Игра была чисто текстовой, управлялась простейшими текстовыми командами (в основном из двух слов), и заключалась в основном в блуждании по пещере и поиске разбросанных там сокровищ и магических артефактов. Тем не менее, эта игра сыграла колоссальную роль в истории, положив начало целому жанру компьютерных игр (и похитив, наверное, десятки тысяч человеко-часов дорогостоящего компьютерного времени).

Игра „Adventure“ породила немало подражаний, причем одним из самых удачных стал “Zork“ — программа, созданная группой студентов из MIT (Массачусетского Технологического Института). Сюжет был очень похож (также блуждания по пещере, также сбор сокровищ), но головоломки стали заметно разнообразнее и интереснее, а в игре появилось больше NPC с нетривиальным поведением и собственными целями. Игра сумела превзойти оригинальный Adventure по популярности, и ее создатели решили всерьез заняться созданием текстовых компьютерных игр — так летом 1979 г. родилась легендарная фирма Infocom. Последняя ввела в оборот термин “Interactive Fiction”, и за десять лет своей истории выпустила около 30 игр этого жанра, многие из которых (“Hitchhiker’s Guide to Galaxy”, “Leather Goddeses of Phobos”, “Planetfall”, “Trinity”, “Wishbringer”) — признанная классика.

На волне успеха Infocom появилось и немало других фирм, специализирующихся на коммерческой интерактивной литературе. Можно упомянуть британские Level 9 и Magnetic Scrolls, Legend Entertainment (фактически возникшую на руинах Infocom), Adventure International и австралийскую Melbourne House… этот список можно продолжать еще долго. Замечу, что в свое время в жанре текстовых приключений «отметилось» немало фирм, названия которых обычно ассоциируются с играми совершенно другого плана — так, можно вспомнить Electronic Arts (“Amnesia”) и Apogee (“Beyond the Titanic” и “Supernova”). Наконец, существование ИЛ послужило толчком для возникновения и развития другого (хотя и родственного жанра) — чисто графических приключений, ориентированных на «мышиное» управление, которыми позже так прославились Sierra on-line, Lucasarts, Access Software и многие другие. Однако, это уже другая история. Конечно, быстрый прогресс возможностей персональных компьютеров не мог не повлиять на развитие жанра: в ИЛ-играх начали появляться и графика (особенно хорошая у Magnetic Scrolls и Legend), и музыка со звуковыми эффектами, и альтернативные текстовым командам средства управления (многооконный интерфейс игр от Legend можно считать особенно удачной находкой). Однако, важнейшей составляющей этих игр все-таки остался художественный текст, что и позволяет говорить о том, что основы жанра остались прежними.

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

1.3. Текстовые игры, - архаика, ретро или современность?

Хотите – верьте, хотите – нет), но текстовые игры весьма популярны и сегодня. Жанр интерактивной литературы отнюдь не устарел — он продолжает жить и развиваться.

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

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

1.4. Но что такого в них находят люди?

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

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

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

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

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

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

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

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

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

1.5. Текстовый ввод команд — это же неудобно!..

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.1. 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), позволяющий следить за выполнением программы, устанавливать контрольные точки и т.п. Имеется также специальный набор отладочных подпрограмм (HugoFix).

Мощной особенностью системы изначально были ее мультимедиа-возможности. Сейчас вполне сравнимые возможности предоставляют Glulx/Inform и HTML-TADS. Тем не менее, Hugo может поддерживать многооконный интерфейс (с не перекрывающимися окнами), графику (JPEG), аудио (MOD, S3M, MP3, MIDI, XM, WAV; до 32 аудиоканалов), а, начиная с версии 3.0 — даже видео (MPEG, AVI)!

Интернационализация и русская версия. Пока нет информации.

Ссылки:

2.3. 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-интерпретаторы также выполняют большинство классических игр этой фирмы.

Файлы Glulx (имеют расширение .ULX) содержат 32-битовый виртуальный код. Для их выполнения требуется свой интерпретатор (обычно он называется Glulxe, или наподобие этого). Размер Glulx-игр практически не ограничен, как и большинство внутренних лимитов.

Переносимость: технология доступна очень широко. Вот список (не самый свежий), платформ, где компилятор 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 года по настоящее время. Основной ее разработчик — автор этого документа. Состояние — «стабильная бета» (версия 0.80 готовится к выходу), принципиальных изменений не ожидается. Система самостоятельно умеет генерировать падежные формы для имен объектов (достаточно выделить флексии, например «массивн/ая стальн/ая двер/ь», присвоив объекту правильные род и число), и распознавать падежные формы в командах (и «открыть дверь ключом», и «открыть ключом дверь» понимаются правильно). Также распознается большое число дополнительных глагольных форм с приставками.

К сожалению, сейчас Glulx не поддерживается в качестве выходной платформы для RInform, т.к. в спецификации этого формата поддержка наборов символов, отличных от Latin-1, не заложена вообще! К счастью, это будет исправлено. Кроме того, не все Z-интерпретаторы правильно поддерживают Unicode — под Windows рекомендуется использовать WinFrotz 2002.

Ссылки:

2.4. 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) представляют собой существенный шаг вперед, прежде всего, в плане описания объектной модели игры. Пока TADS 3 пользуется несколько меньшей популярностью, чем TADS 2.

Интернационализация и русская версия. TADS поддается локализации, хотя требуется несколько больше усилий, чем для Inform. Собственно, для перевода системы необходимо адаптировать к другому языку оба библиотечных файла.

Русская версия TADS 2 (далее RTADS) разрабатывается с лета 2002 г. Ведущий разработчик — Андрей Гранкин. Состояние разработки на сегодняшний день — стабильное, обновления появляются раз в три-шесть месяцев.

Встроенной в саму систему поддержки падежей нет. Однако, в системе предусмотрен внешний генератор для падежных форм.

Официальное руководство по TADS переведено на русский язык Валентином Коптельцевым (URL?).

Русская локализация TADS 3, насколько мне известно, пока не планируется.

Ссылки



Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения.
Идея и реализация: © Владимир Довыденков и Анатолий Камынин,  2004-2017