Создание текстовых адвенчур в Inform — краткий туториал

Вам не потребуются особые знания, чтобы разработать небольшое приключение.

Энтузиаст текстовых игр Джули Стивенсон в 2018 году опубликовала на платформе Medium текст, в котором рассказала о простом способе разработки текстового приключения. Она подробно описала процесс работы с языком программирования Inform, при помощи которого и создаётся игра. Мы выбрали из текста главное.

В своей работе Стивенсон вдохновлялась серией Zork
В своей работе Стивенсон вдохновлялась серией Zork

Сначала вам нужно скачать Inform — язык программирования, созданный специально для разработки текстовых приключений. Его легко использовать независимо от ваших навыков и опыта: в отличие от других языков, этот состоит преимущественно из английских слов. Начните с создания нового проекта, как это показано на изображении ниже.

Создание текстовых адвенчур в Inform — краткий туториал

В Inform есть три главных типа сущностей — объекты, описания и отношения. Каждая комната, предмет и человек в игре — это объекты. С помощью описания вы наполняете их жизнью и смыслом, а отношения формируются через их действия. Когда вы начнёте свой проект, Inform предложит вам готовый код, который включает в себя «примерное местоположение» в игре.

Example Location is a room.

Далее вам нужно заменить название комнаты на что-то другое.

Julianna's Bedroom is a room.

Уже сейчас вы можете запустить свой код. Нажмите на кнопку «Go!», чтобы увидеть результат.

Создание текстовых адвенчур в Inform — краткий туториал

После этого код будет скомпилирован и запущен. Это должно выглядеть примерно так:

Создание текстовых адвенчур в Inform — краткий туториал

Поскольку Inform был создан для исключительно для текстовых адвенчур, в нём уже есть множество классических команд. Вы можете посмотреть этот список по ссылке.

Когда вы вводите команду и нажимаете enter, программа генерирует ответ на основе вашего кода. Сам игрок — это объект в виртуальном мире. Поскольку в комнате находитесь только вы, взаимодействовать можно только с самим собой.

Напишите описание комнаты — именно это будет видеть игрок. По объёму оно может быть почти любым. Вот пример такого описания:

Julianna's Bedroom is a room. The description is "The white walls of the room are matched by the color of the furniture. A rack of shoes sits neatly in one corner and the dresser and bedside table are clear of dust.".
Если вы снова запустите свой код, то увидите описание своей комнаты
Если вы снова запустите свой код, то увидите описание своей комнаты

Теперь игрок может видеть объекты в комнате, но не может ни с чем взаимодействовать. Чтобы это исправить, нужно добавить интерактивный объект. По умолчанию игроки могут поднимать и опускать любой предмет, который вы помещаете в комнату.

К примеру, можно добавить книгу на кровать. Чтобы создать объект, вам нужно написать, как он называется, и в какой комнате он находится. Также вы можете упомянуть объект в описании комнаты. Вот так сейчас выглядит код:

Julianna's Bedroom is a room. The description is "The white walls of the room are matched by the color of the furniture. A rack of shoes sits neatly in one corner and the dresser and bedside table are clear of dust.". A book is in Julianna's Bedroom. "There is a book lying in the center of the bed."

Вместо того, чтобы использовать название конкретной комнаты, вы можете просто использовать команду «Here» для обозначения последней комнаты. Попробуйте снова запустить свой код. Теперь вы можете поднять и бросить свой предмет.

Одной комнаты мало, поэтому стоит добавить другие места, чтобы игроки могли перемещаться и исследовать окружение. Вы можете создать другую комнату так же, как и первую — сделайте определение и описание.

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

The Living Room is a room. The description is "This is a small room with a couch in the middle. On one wall there is a bookshelf.". The Living Room is east of Julianna's Bedroom.

Если во время игры использовать команду «East», находясь в спальне, герой переместится в гостиную. Если же в гостиной применить «West», то персонаж вернётся в спальню.

Так как в игре есть книга и книжный шкаф, должна быть возможность поставить её туда. Это можно сделать, если добавить книжную полку, которая выступает в качестве объекта-контейнера, вмещающего другие объекты. Любой объект можно превратить в контейнер, используя фразу «is a container».

A bookshelf is a container in the Living Room.

Эта строка кода создаёт объект книжной полки в гостиной и позволяет помещать в него вещи. Находясь в спальне, вы можете ввести команду «pick up book», чтобы забрать книгу. Затем перейдите в гостиную и используйте команду «put book in bookshelf».

Создание текстовых адвенчур в Inform — краткий туториал

В каждой игре должен быть конец, поэтому важно сделать так, чтобы у пользователя была цель, которую он стремился бы выполнить. Для этого нужно проверить, находится ли книга на полке. Если это так, то игра закончена. Это состояние должно проверяться каждый раз при помощи следующего кода:

Every turn: if the book is in the bookshelf, end the story.

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

Создание текстовых адвенчур в Inform — краткий туториал

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

Итоговый код:

"Demo_Project" by Julianna Stevenson Julianna's Bedroom is a room. The description is "The white walls of the room are matched by the color of the furniture. A rack of shoes sits neatly in one corner and the dresser and bedside table are clear of dust.". A book is in Julianna's Bedroom. "There is a book lying in the center of the bed." The Living Room is a room. The description is "This is a small room with a couch in the middle. On one wall there is a bookshelf.". The Living Room is east of Julianna's Bedroom. A bookshelf is a container in the Living Room. Every turn: if the book is in the bookshelf, end the story.
9292
15 комментариев

Много есть хороших редакторов...

Twine, Ink, Instead... если хочется именно с вводом комманд — protoparser.js, метапарсер или опять же Inform, только версии 6, в виде RInform.

7
Ответить

А что, Inform 7 уже умеет в русский язык?

5
Ответить

Konechno, umeet. Primerno vot tak :D

5
Ответить

Нет, не умеет. 

2
Ответить

Присоединяюсь)

Ответить

А для тех, кто хочет создавать текстовые квесты на русском, есть замечательный редактор для Космических Рейнджеров TGE2 (text game editor). Много замечательных дней за ним провёл, когда старенький ноут тянул только Рейнджеров у бабушки на летних каникулах. Как давно это было.

4
Ответить

мда а есть что то без КОДА?

1
Ответить