|
|
Интерактивная литератураСоставление и поддержка: Д.Г. Гаев Текущая версия от 18.08.2004 Источник: http://vixterm.narod.ru/IFRusFAQ.htm 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 года по настоящее время. Основной ее разработчик — автор этого документа (dgaev@mail.ru). Состояние — «стабильная бета» (версия 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 г. Ведущий разработчик — Андрей Гранкин (mailto:grandrey@mail.ru). Состояние разработки на сегодняшний день — стабильное, обновления появляются раз в три-шесть месяцев. Встроенной в саму систему поддержки падежей нет. Однако, в системе предусмотрен внешний генератор для падежных форм. Официальное руководство по TADS переведено на русский язык Валентином Коптельцевым (URL?). Русская локализация TADS 3, насколько мне известно, пока не планируется. Ссылки:
|
|
|
Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения. Идея и реализация: © Владимир Довыденков и Анатолий Камынин, 2004-2012 | ||