Открыть сервис

Язык программирования 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 →