Язык программирования Inform II
Inform II — это язык программирования, предназначенный для создания текстовых интерактивных игр (также известных как «интерактивная литература» или «фикшн»). Он был разработан британским программистом Грэмом Нельсоном (Graham Nelson) и является второй версией языка Inform, выпущенной в 1993 году. Inform II относится к семейству языков, ориентированных на описание игрового мира через естественно-языковые конструкции, и компилируется в байт-код для виртуальной машины Z-machine, созданной в 1979 году Джоэлом Березом (Joel Berez) и Марком Бланком (Marc Blank) для игр компании Infocom. Язык получил широкое распространение в сообществе разработчиков текстовых квестов и считается одним из ключевых инструментов в истории интерактивной литературы.
История
Предпосылки и создание
В конце 1980-х годов, после упадка коммерческого рынка текстовых приключенческих игр, интерес к ним сохранился в энтузиастических кругах. Основной платформой для запуска таких игр оставалась Z-machine, для которой требовались компиляторы. Первые версии языка Inform (Inform I) были созданы Грэмом Нельсоном в 1991 году как модификация компилятора для языка ZIL (Zork Implementation Language), использовавшегося компанией Infocom. Inform I был недокументированным и имел ограниченные возможности.
В 1993 году Нельсон выпустил Inform II, который стал полностью переработанной версией. Основные изменения включали:
- Введение объектно-ориентированной парадигмы, где каждый элемент игрового мира (комната, предмет, персонаж) описывается как объект с атрибутами и свойствами.
- Поддержка естественно-языкового синтаксиса, позволяющего писать правила игры в виде, близком к английскому языку (например, «Instead of taking the apple, say "You can't take that."»).
- Улучшенная система обработки действий игрока (парсер), основанная на правилах-триггерах.
- Возможность компиляции в файлы формата Z-code (версии 5 и 6), совместимые с большинством интерпретаторов Z-machine.
Развитие и распространение
Inform II быстро стал стандартом де-факто для создания текстовых игр в сообществе любителей. В 1994 году вышла книга Грэма Нельсона «The Inform Designer's Manual» (также известная как «DM4»), которая служила исчерпывающим руководством по языку и содержала примеры создания игр. Книга распространялась бесплатно в электронном виде и была переведена на несколько языков, включая русский.
В 1996 году вышла версия Inform II 6.30, которая добавила поддержку мультимедиа (звук, графика) в играх для Z-machine 6. Однако к концу 1990-х годов язык устарел из-за ограничений Z-machine (например, максимальный размер игрового файла около 256 КБ). В 2000 году Нельсон выпустил Inform 7, который использовал совершенно новый синтаксис, основанный на естественном английском языке, и компилировался в виртуальную машину Glulx. Несмотря на это, Inform II оставался популярным среди разработчиков, предпочитавших его простоту и скорость работы.
Характеристики языка
Синтаксис и парадигма
Inform II основан на объектно-ориентированной модели, но с элементами процедурного программирования. Программа на Inform II состоит из:
- Объектов — описаний элементов игрового мира (комнат, предметов, персонажей). Каждый объект может иметь родительский объект (например, комната содержит предметы), атрибуты (например, «openable», «light») и свойства (например, «description», «name»).
- Правил — блоков кода, которые выполняются при определённых событиях (например, при попытке игрока взять предмет, переместиться или использовать команду). Правила пишутся с использованием ключевых слов:
Before,Instead,After,Check,Action. - Грамматики — описания того, как игрок может взаимодействовать с объектами (например, «take the apple» или «eat apple»). Грамматика задаётся через конструкции
VerbиSyntax. - Процедур — обычных функций, написанных на процедурном подстиле, с использованием операторов
if,for,while,print,return.
Пример синтаксиса Inform II: `` Object apple "apple" with name 'apple' 'fruit', description "A shiny red apple.", has edible; `` Этот код создаёт объект «apple» с именем «apple», описанием и атрибутом «edible» (съедобный).
Компиляция и виртуальная машина
Исходный код на Inform II компилируется в файл формата Z-code (обычно с расширением .z5 или .z8). Z-code представляет собой байт-код для виртуальной машины Z-machine, которая эмулирует 16- или 32-битную архитектуру с ограниченной памятью. Z-machine поддерживает:
- Текстовый ввод/вывод.
- Управление окнами (например, разделение экрана на область текста и область статуса).
- Работу с файлами сохранения.
- Ограниченную поддержку звука и графики (в версии 6).
Ограничения
- Максимальный размер игры: около 256 КБ для Z-machine 5, до 512 КБ для Z-machine 8.
- Отсутствие поддержки чисел с плавающей точкой и сложных математических операций.
- Ограниченная работа с памятью: все объекты и переменные должны быть объявлены статически.
Применение
Создание текстовых игр
Inform II использовался для создания тысяч текстовых игр, многие из которых были опубликованы на конкурсах, таких как Interactive Fiction Competition (IFComp) и Spring Thing. Среди известных игр, написанных на Inform II:
- «The Lurking Horror» (реализация Джорджа Зейтца, 1995) — хоррор-квест, основанный на вселенной H.P. Lovecraft.
- «Spider and Web» (Эндрю Плоткин, 1998) — шпионский триллер с нелинейным сюжетом.
- «Curses!» (Грэм Нельсон, 1993) — одна из первых игр на Inform II, пародирующая классические квесты.
Образование и сообщество
Inform II часто использовался в учебных курсах по программированию и геймдизайну благодаря своей простоте и наглядности. Сообщество разработчиков активно поддерживало язык через форумы, списки рассылки и сайты, такие как IF Archive (архив интерактивной литературы). В России Inform II был популярен в 1990-х — начале 2000-х годов, когда выходили переводы руководств и создавались русскоязычные игры (например, «Пещера» и «Замок»).
Сравнение с Inform 7
Inform 7, выпущенный в 2006 году, кардинально отличается от Inform II:
- Синтаксис: Inform 7 использует естественный английский язык (например, «The apple is in the kitchen. The apple is edible.»), в то время как Inform II требует программистского синтаксиса.
- Виртуальная машина: Inform 7 компилируется в Glulx, которая поддерживает больший объём памяти (до 4 ГБ) и более сложные типы данных.
- Сложность: Inform 7 считается более доступным для новичков, но менее гибким для опытных программистов из-за своей декларативной природы.
Несмотря на это, Inform II остаётся востребованным для создания небольших игр и для тех, кто предпочитает программистский подход.
Интересные факты
- Inform II был написан на языке C и компилировался под MS-DOS, а позже — под Unix и Windows.
- Исходный код компилятора Inform II был открыт в 1997 году и распространялся под лицензией, разрешающей некоммерческое использование.
- В 2000 году вышла версия Inform II 6.31, которая стала последней стабильной версией.
- Некоторые игры, написанные на Inform II, до сих пор можно запускать в современных интерпретаторах, таких как Frotz или Gargoyle.
Источники
- Грэм Нельсон. «The Inform Designer's Manual» (4-е издание, 1994).
- Документация к Inform II 6.30 (файлы README и руководство пользователя).
- Статья «A Brief History of Interactive Fiction» на сайте Brass Lantern.
- Архив интерактивной литературы (IF Archive), раздел по Inform II.
- Обсуждения на форуме rec.arts.int-fiction (1993–2000).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →