Inform 7

Исследуя свободные игровые движки, случайно наткнулся на настоящий бриллиант – платформу для создания текстовых квестов Inform 7. Это штука, не имеющая аналогов – декларативный язык программирования, использующий естественный синтаксис английского (NLP-система). То есть, программы на нем пишутся в форме обычного текста, состоящего из определений и утверждений. Система позволяет вводить любые новые понятия и абстракции, сущности и их свойства. Получившееся в результате семантическое содержание и составляет логику игры, которая затем транслируется в стандартный код для Z-машины. Таким образом, исходник квеста представляет собой своего рода книгу, которая описывает мир игры, ее сценарий, возможности игрока, отношения и взаимодействия между игровыми сущностями и т.д.

До этого я еще не встречал NLP-системы с такой “человеческой” онтологией, ведь обычно взаимодействие с компьютером строится на математико-логическом аппарате, на классах, структурах и алгоритмах, а не на бытовом способе мыслить и разговаривать. В Inform 7 нет никаких структур и даже типов данных – есть лишь языковые инструменты, позволяющие вам выстроить ваш собственный понятийный аппарат, на основе которого будет работать игра.

Жанр классических текстовых квестов, уходящий корнями в культовый Zork, обычно предполагает перемещение игрока по карте воображаемого мира, как в ролевых играх – Inform включает в себя стандартные понятия для описания карты и соответствующий рантайм с готовым интерпретатором команд перемещения. Вы описываете мир как совокупность абстрактных “комнат”, указывая их расположение относительно друг друга (“К востоку от дома расположено озеро”). Потенциально так можно создать все, что угодно – хватило бы фантазии.

Например, впервые сев за Inform, я залип на целый вечер и написал набор определений, описывающий автомат с конфетами и напитками – игрок имеет некоторое количество денег и может делать покупки в автомате. Что такое “деньги”, и что означает “покупать” – это тоже определяет программист. Для этого приходится подключать какие-то особые мозговые доли: Inform заставляет вас думать по-новому, с изрядной долей креативности! Я бы назвал эту платформу философской машиной – в ней нужно мыслить как философ от инженерии, выстраивать в голове сложные абстракции, придумывать свои собственные системы категорий. И мне почему-то кажется, что на одних только текстовых квестах свет клином не сошелся – Inform потенциально можно использовать для каких-то инновационных способов взаимодействия с информацией, в качестве компонента базы знаний, как мощный инструмент прототипирования и описания различных моделей. Обязательно продолжу экспериментировать.

https://ganelson.github.io/inform-website/