Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Inform - это язык программирования и система дизайна для интерактивной художественной литературы, первоначально созданная в 1993 году Грэмом Нельсоном . Inform может генерировать программы, предназначенные для виртуальных машин Z-code или Glulx . Версии с 1 по 5 были выпущены между 1993 и 1996 годами. Примерно в 1996 году Нельсон переписал Inform, исходя из первых принципов, и создал версию 6 (или Inform 6 ). [2] В течение следующего десятилетия версия 6 стала достаточно стабильной и популярным языком для написания интерактивной художественной литературы. В 2006 году Нельсон выпустил Inform 7 (кратко известный как Natural Inform ), совершенно новый язык.основан на принципах естественного языка и новом наборе инструментов, основанном на метафоре книгоиздания.

Z-Machine и Glulx [ править ]

Компиляторы Inform переводят код Inform в файлы рассказов для Glulx или Z-кода , двух виртуальных машин, разработанных специально для интерактивной фантастики. По умолчанию установлен Glulx, который поддерживает большие игры.

Z-машина была первоначально разработана Infocom в 1979 году для создания своих интерактивных художественных произведений. Поскольку существует по крайней мере один такой интерпретатор почти для каждой основной и второстепенной платформы, это означает, что один и тот же файл Z-кода может быть запущен на множестве платформ без изменений. Первоначально Информ нацелился только на Z-машину.

Эндрю Плоткин создал неофициальную версию Inform 6, которая также могла генерировать файлы для Glulx , виртуальной машины, которую он разработал, чтобы преодолеть многие ограничения Z-машины, существовавшей несколько десятилетий назад. Начиная с версии Inform 6.3, выпущенной 29 февраля 2004 г., в Inform 6 включена официальная поддержка обеих виртуальных машин, основанная на работе Эндрю Плоткина. Ранний выпуск Inform 7 не поддерживал Glulx, но в августе 2006 года поддержка Glulx была выпущена.

Информ 6 [ править ]

Первоначально Inform был создан Грэмом Нельсоном в 1993 году. В 1996 году Нельсон переписал Inform, исходя из первых принципов, и создал версию 6 (или Inform 6). В течение следующего десятилетия версия 6 стала достаточно стабильной и популярным языком для написания интерактивной художественной литературы.

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

Хотя Inform 6 и Z-Machine изначально разрабатывались с учетом интерактивной фантастики, было разработано множество других программ, включая интерпретатор BASIC , учебник LISP (в комплекте с интерпретатором), игру Tetris и версию игры Snake .

Компилятор Inform 6 [ править ]

Компилятор Inform генерирует файлы для Z-машины или Glulx (также называемые историческими файлами) из исходного кода Inform 6 .

Язык программирования Информ 6 [ править ]

Язык программирования Inform является объектно-ориентированным и процедурным . Ключевой элемент языка - предметы. Объекты поддерживаются в дереве объектов, в котором перечислены родительско-дочерние отношения между объектами. Поскольку отношения родитель-потомок часто используются для представления местоположения, часто говорят, что объект, являющийся родительским для другого объекта, «удерживает» его. Объекты можно перемещать по дереву. Обычно объекты верхнего уровня представляют комнаты и другие места в игре, которые могут содержать объекты, представляющие содержимое комнаты, будь то физические предметы, неигровые персонажи, персонаж игрока или фоновые эффекты. Все объекты могут содержать другие объекты, поэтому livingroomобъект может содержать insurancesalemanобъект, который удерживает briefcaseобъект, содержащийinsurancepaperwork объект.

В ранних версиях Inform объекты отличались от понятия объектов объектно-ориентированного программирования тем, что не существовало такого понятия, как класс. Более поздние версии добавили поддержку определений классов и позволили объектам быть членами классов. Объекты и классы могут наследовать от нескольких классов. Интерактивные художественные игры обычно содержат множество уникальных объектов. По этой причине многие объекты в Inform не наследуются ни от одного класса, кроме объекта «метакласс». Однако объекты очень часто имеют атрибуты (логические свойства, такие как sceneryили edible), которые распознаются библиотекой Inform. В других языках это обычно реализуется через наследование.

Вот простой пример исходного кода Inform 6.

[  Main ;  print  "Hello, World! ^ " ; ];

Библиотека Inform 6 [ править ]

Система Inform также содержит библиотеку Inform, которая автоматизирует почти всю самую сложную работу, связанную с программированием интерактивной художественной литературы ; в частности, он включает анализатор текста, который анализирует вводимые пользователем данные, и модель мира, которая отслеживает такие вещи, как объекты (и их свойства), комнаты, двери, инвентарь игрока и т. д.

Компилятор Inform не требует использования библиотеки Inform. Доступно несколько заменяющих библиотек, таких как Platypus [4] и InformATE , библиотека, кодирующая Inform на испанском языке.

Пример игры [ править ]

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

 Постоянная  история  «Привет, франшиза» ;  Постоянный  заголовок  « ^ Интерактивный пример ^ » ; Включите  «Парсер» ;  Включите  «VerbLib» ; [  Инициализировать ;  location  =  Living_Room ;  «Привет, мир» ;  ]; Объект  Кухня  «Кухня» ;  Объект  Front_Door  " Парадная дверь" ; Объект  Living_Room  "Гостиная"  с  описанием  "Комфортно обставленная гостиная". ,  кухня n_to  , s_to Front_Door , есть свет ;     Объект  ->  Продавец  "страховой агент"  с  именем  'страховой'  'продавец'  'мужчина' ,  описание  "Страховой агент в липком полиэстеровом  костюме. Кажется, он хочет поговорить с вами". ,  перед  [;  Слушайте :  переместите  страховку  к  игроку ;  «Продавец утомляет вас обсуждением  полисов страхования жизни. Из своего  портфеля он вытаскивает какие-то документы, которые  передает вам». ;  ],  имеет  одушевленный ; Объект  ->  ->  Портфель  «портфель»  с  названием  «портфель»  «кейс» ,  описание  «слегка потертый черный портфель». ,  есть  контейнер ; Объект  ->  ->  ->  Страхование_Paperwork  "страховые документы"  с  названием  'paperwork'  paper '  ' insurance '  ' documents '  ' forms ' ,  описание  "Страница за страницей малого юридического текста". ; Включите  "Грамматику" ;

Известные игры, разработанные в Inform 6 или более ранних версиях [ править ]

  • Curses от Грэма Нельсона (1993), первая игра, написанная на языке программирования Inform. Считается одной из первых «современных» игр, соответствующих высоким стандартам, установленным лучшими играми Infocom. [5]
  • Зорк: Неизведанное подземелье (1997), написанное Марком Бланком и Майклом Берлином , запрограммированное Джерри Кевином Уилсоном. Раздается бесплатно Activision для продвижения выпуска Zork: Grand Inquisitor .
  • «Анкорхед » Майкла С. Джентри (1998) - это высоко оцененная история ужасов, вдохновленная мифами о Ктулху Лавкрафта . [6]
  • Photopia от Адама Кадре (1998), первая игра, в которой почти полностью отсутствуют головоломки. Выиграл ежегодный конкурс интерактивной фантастики в 1998 году.
  • Ветряная оспа от Адама Кадре (1999). В1999 годуон получил четыре награды XYZZY, включая премию XYZZY за лучшую игру, и об этом было написано научное эссе. [7]
  • «Галатея » Эмили Шорт (2000). Галатея полностью ориентирована на взаимодействие с одноименной анимированной статуей. У Галатеи одна из самых сложных систем взаимодействия для неигрового персонажа в интерактивной художественной игре. Адам Кадре назвал Галатею «лучшим NPC на свете». [8]
  • Сутулся к бедламу , звезды К. Фостер и Даниэль Равипинто (2003). Игра, действие которой происходит в стиле стимпанк , интегрирует функции метаигры (сохранение, восстановление, перезапуск) в сам игровой мир. Игра выиграла две награды XYZZY и получила наивысший средний балл среди всех игр в конкурсе интерактивной фантастики по состоянию на 2006 год.

Информ 7 [ править ]

30 апреля 2006 года Грэм Нельсон объявил о выпуске бета-версии Inform 7 в группе новостей rec.arts.int-fiction. [10] Inform 7 состоит из трех основных частей: IDE Inform 7 со специализированными инструментами разработки для тестирования интерактивной художественной литературы, компилятор Inform 7 для нового языка и « Стандартные правила », которые составляют базовую библиотеку Inform 7. Inform 7 также опирается на Inform библиотеки и Inform компилятор от Inform 6. компилятор компилирует Inform 7 исходный код в Inform 6 исходный код, который затем компилируется отдельно от Inform 6 для генерирования Glulx или Z-кодфайл истории. Inform 7 также по умолчанию записывает файлы Blorb , архивы, которые включают Z-код вместе с необязательной «обложкой» и метаданными, предназначенными для целей индексации. Полный набор инструментов Inform 7 в настоящее время доступен для Mac OS X , Microsoft Windows и Linux . В выпуске от 25 марта 2007 г. добавлена ​​поддержка командной строки для Linux , а новые выпуски теперь включают IDE, использующую среду рабочего стола GNOME в рамках проекта GNOME Inform 7 SourceForge . [11] Язык и инструменты все еще находятся в разработке; [12]в выпуск от 25 марта 2007 г. внесен ряд изменений в язык. В 2019 году Грэм Нельсон объявил о возможном открытии исходного кода для Inform 7. [13]

Inform 7 на короткое время назывался Natural Inform , но позже был переименован в Inform 7. Это старое название является причиной того, что компилятор Inform 7 получил название "NI". [14]

Сообщите 7 IDE [ править ]

Информ 7 IDE в Mac OS X показывает исходный код и моток
Информ 7 IDE в Mac OS X показывает карту индекса и стенограмму

Inform 7 поставляется с интегрированной средой разработки (IDE) для Mac OS X, Microsoft Windows и Linux. IDE Mac OS X была разработана Эндрю Хантером. Microsoft Windows IDE была разработана Дэвидом Киндером. Linux IDE (известная как GNOME Inform) была разработана Филипом Чименто.

Inform 7 IDE включает текстовый редактор для редактирования исходного кода Inform 7. Как и во многих других редакторах программирования, в нем есть подсветка синтаксиса. Он выделяет строки в кавычках одним цветом. Заголовки организационных разделов (тома, книги, главы, части и разделы) выделены жирным шрифтом и увеличены. Комментарии выделены другим цветом и немного меньше.

IDE включает встроенный интерпретатор Z-кода . Интерпретатор Mac OS X IDE основан на интерпретаторе Zoom Эндрю Хантера при участии Джесси МакГрю [ необходима цитата ] . Интерпретатор Microsoft Windows IDE основан на WinFrotz .

По мере того как разработчик тестирует игру во встроенном интерпретаторе, прогресс отслеживается в представлениях среды IDE «моток» и «стенограмма». Моток отслеживает команды игрока в виде дерева возможностей ветвления. Любая ветвь дерева может быть быстро пройдена повторно, что дает возможность повторять разные пути в разрабатываемой игре, не повторяя одни и те же части игры. Пути также можно пометить примечаниями и пометить как решения, которые можно экспортировать как текстовые пошаговые руководства. Стенограмма, с другой стороны, отслеживает как команды игрока, так и ответы игры. Правильные ответы из игры можно пометить как «благословенные». При воспроизведении стенограммы или ответвления мотка будут выделены варианты от благословенной версии, что может помочь разработчику найти ошибки.

IDE также предоставляет различные индексы для разрабатываемой программы. Код показан в виде иерархии классов, традиционной IF-карты, оглавления в виде книги и в других формах. Щелчок по элементам в указателе позволяет перейти к соответствующему исходному коду.

В IDE представлены две панели, расположенные бок о бок для работы. Каждая панель может содержать обрабатываемый исходный код, текущий статус компиляции, моток, стенограмму, индексы исходного кода, запущенную версию игры. , документация для Inform 7 или любых установленных расширений к нему, или settings. Идея состоит в том, чтобы имитировать рукописную книгу автора, представляя две «лицевые страницы» вместо множества отдельных окон. [10]

Язык программирования Inform 7 [ править ]

Примечательные особенности включают сильную предвзятость к декларативному стилю программирования, основанному на правилах, и способность выводить типы и свойства объектов по тому, как они используются. Например, утверждение «Джон носит шляпу». создает "человека" по имени "Джон" (поскольку только люди могут носить вещи), создает "вещь" со свойством "пригодность для носки" (поскольку только объекты с пометкой "пригодны для носки" можно носить) и устанавливает Джона как в шляпе.

Другой примечательный аспект языка - прямая поддержка отношений, которые отслеживают ассоциации между объектами. Это включает в себя автоматически предоставляемые отношения, такие как один объект, содержащий другой, или носимый объект, но разработчик может добавлять свои собственные отношения. Разработчик может добавить отношения, указывающие на любовь или ненависть между существами, или отслеживать, какие персонажи в игре встретились друг с другом.

Inform 7 - это язык программирования с высокой степенью предметной специфики , предоставляющий писателю / программисту гораздо более высокий уровень абстракции, чем Inform 6, и хорошо читаемый исходный код.

Пример игры [ править ]

Заявления в Inform 7 имеют форму полных предложений. Пустые строки и отступы в некоторых местах имеют конструктивное значение. Базовая форма программы Inform 7 следующая:

"Привет мир!" автор: "IF Author"Мир - это комната.Когда игра начнется, скажите «Привет, мир!»

Ниже приводится повторная реализация вышеупомянутого примера «Hello Deductible», написанного на Inform 7. Он основан на библиотеке, известной как «Стандартные правила», которые автоматически включаются во все компиляции Inform 7.

"Hello Deductible" от "IF Author"Заголовок истории - «Интерактивный пример» .Гостиная - это комната. «Комфортабельная гостиная».Кухня находится к северу от гостиной.Входная дверь находится к югу от гостиной.Входная дверь - это дверь. Входная дверь закрыта и заперта.Страховой агент - мужчина в гостиной. Описание гласит: «Страховой агент в липком костюме из полиэстера. Кажется, он хочет поговорить с вами». Под «мужчиной» следует понимать продавца страховых полисов.Страховой агент несет портфель. Описание: «Слегка потертый черный портфель».  Под чемоданом понимайте «футляр» .Страховые документы в портфеле. Описание: «Страница за страницей маленького юридического текста». Понять «документы» или «документы» или «формы» , как документы.Вместо того, чтобы слушать страхового продавца: скажите: «Продавец утомляет вас обсуждением полисов страхования жизни. Из своего портфеля он вытаскивает какие-то документы, которые передает вам». ;передать страховые документы игроку.

Известные игры, написанные в Inform 7 [ править ]

Таинственный дом Одержимые (2005), по Эмили Шорт , [15] была игра первой Inform 7 выпустили быть публичным. Он был выпущен в рамках проекта "Mystery House Taken Over".

1 марта 2006 г. Шорт объявила о выпуске еще трех игр: [16] Bronze [17] (пример традиционной головоломки) и Damnatio Memoriae [18] (продолжение отмеченной наградами игры Inform 6 Savoir-Faire ) к ним присоединились «Реликвии Толти-Аф» Грэма Нельсона [19] (2006). Когда 30 апреля 2006 г. было объявлено о публичной бета-версии Inform 7, шесть «рабочих примеров» средних и крупных работ были доступны вместе с их исходным кодом, включая три игры, ранее выпущенные 1 марта. [20] [21] [22]

« Floatpoint» Эмили Шорт стала первой игрой Inform 7 , занявшей первое место в конкурсе интерактивной фантастики . [23] Он также выиграл 2006 XYZZY Awards за лучший сеттинг и лучший NPC. [24] Rendition от nespresso (2007) - это политический художественный эксперимент в форме текстовой приключенческой игры. Его подход к трагедии академически обсуждался как Ассоциацией вычислительной техники [25], так и Кембриджским университетом . [26]

См. Также [ править ]

  • Сообщите историю версий
  • Интерактивная художественная литература § Системы разработки перечисляют программное обеспечение, аналогичное Inform
  • TADS The Text Adventure Development System (TADS), еще одна ведущая система разработки IF

Дальнейшее чтение [ править ]

Информ 6
  • Официальное руководство по Информу Graham Nelson «s Inform Designer Руководство : это учебное пособие, руководство и технический документ , в одном лице. Он доступен бесплатно в режиме онлайн на официальном сайте Inform [27] , также доступны два печатных издания: в мягкой обложке ( ISBN  0-9713119-0-0 ) и в твердой обложке ( ISBN 0-9713119-3-5 ). [28] 
  • Руководство для начинающих по Inform Роджера Ферта и Сони Кессерих ( ISBN 0-9713119-2-7 ) пытается предоставить более мягкое введение в Inform. Он доступен бесплатно на официальном сайте Информ. [29] 
Информ 7
  • The SPAG Interview - Интервью с дизайнерами Грэмом Нельсоном и Эмили Шорт о разработке Inform 7. Это интервью было сделано незадолго до его выпуска и опубликовано в тот же день, что и первый выпуск. [2]
  • «Естественный язык, семантический анализ и интерактивная художественная литература» - статья о дизайне Inform 7, разработанная дизайнером Грэмом Нельсоном . [30]

Ссылки [ править ]

  1. ^ "Информировать 7 Журнал изменений 6M62" . inform7.com . Проверено 24 декабря 2015 года .
  2. ^ a b «Интервью SPAG: Грэм Нельсон и Эмили Шорт на Inform 7» . SPAG # 44 . Общество по продвижению приключенческих игр. 30 апреля 2006 . Проверено 7 ноября 2015 года .
  3. ^ "Выпуск v6.33" . Проверено 26 февраля 2015 года .
  4. Тернер, Энсон (14 марта 2002 г.). «Сообщите Platypus, выпуск 4» . Проверено 4 января 2007 года .
  5. Алан Де Смет (14 марта 2006 г.). «Проклятия (интерактивные обзоры художественной литературы)» . Проверено 1 ноября 2006 года .
  6. ^ Из 1219 игррассчитанных на «Interactive Fiction Ratings», Anchorhead был самым высоким рейтингом игры по состоянию4 января 2007 года ( «IF Rating Статистика» . Проверено 4 января 2007 года .)
  7. ^ Монфор, Ник; Стюарт Моултроп (август 2003 г.). «Посмотри в лицо, Тигр, ты только что сорвал джекпот: чтение и игра Кадра в Varicella» . Архивировано из оригинального (PDF) 6 ноября 2009 года . Проверено 6 ноября 2009 года . Опубликовано как Montfort, Nick; Моултроп, Стюарт (август 2003 г.). «Посмотри в лицо, Тигр, ты только что сорвал джекпот: чтение и игра Кадра в Varicella» . Fine Art Online . Государственный университет Миссисипи . 17 (8). Архивировано из оригинального 13 октября 2007 года.
  8. ^ «Фотопия - это рассказ, Варицелла - это мир» . L'avventura и l'avventura . Январь 2002 . Проверено 4 января 2007 года .
  9. ^ "Скачать" . Информировать 7 . Проверено 15 марта 2016 года .
  10. ^ a b Грэм Нельсон (30 апреля 2006 г.). «Информ 7: публичная бета-версия» . Группа новостейrec.arts.int-fiction . Usenet: [email protected] . Проверено 4 января 2007 года . 
  11. ^ "Страница проекта GNOME Inform 7 SourceForge" . Февраль 2008 г.
  12. Эмили Шорт (18 февраля 2007 г.). «Информ 7: Возможное развитие событий» . Группа новостейrec.arts.int-fiction . Usenet: [email protected] . Проверено 30 марта 2007 года . Также находится в архиве у Шорта, Эмили ; Грэм Нельсон (январь 2007 г.). «Информ 7: Возможное развитие событий» . Архивировано из оригинального 5 сентября 2008 года . Проверено 31 марта 2007 года .
  13. Грэм Нельсон (14 июня 2019 г.). «Открытие Информ» . Проверено 2 июня 2020 года .
  14. Грэм Нельсон (30 марта 2007 г.). «Re:« Информ 7 »- неправильное название» . Группа новостейrec.arts.int-fiction . Usenet: [email protected] . Проверено 30 марта 2007 года . 
  15. ^ "Таинственный дом захвачен" . Проверено 4 января 2007 года .
  16. Эмили Шорт (по просьбе Грэма Нельсона) (1 марта 2006 г.). «Три партии в Информ 7» . Группа новостейrec.games.int-fiction . Usenet: [email protected] . Проверено 4 января 2007 года . 
  17. ^ Коротко, Эмили (2006). «Бронза» . Проверено 4 января 2007 года .
  18. ^ Коротко, Эмили (2006). "Damnatio Memoriae" . Проверено 4 января 2007 года .
  19. ^ Нельсон, Грэм (2005). «Реликвии Толти-Аф» . Проверено 4 января 2007 года .
  20. ^ Коротко, Эмили (2006). «Бронза» . Архивировано из оригинального 10 февраля 2007 года . Проверено 4 января 2007 года .
  21. ^ Коротко, Эмили (2006). "Damnatio Memoriae" . Архивировано из оригинала 12 декабря 2006 года . Проверено 4 января 2007 года .
  22. ^ Нельсон, Грэм (2005). «Реликвии Толти-Аф» . Архивировано из оригинала на 6 февраля 2007 года . Проверено 4 января 2007 года .
  23. ^ «12-й ежегодный конкурс интерактивной фантастики» . 2006 . Проверено 12 мая 2007 года .
  24. ^ «Награды XYZZY: победы в играх 2006 года» . Архивировано из оригинала на 15 мая 2007 года . Проверено 12 мая 2007 года .
  25. ^ "Слайды конференции ACM Hypertext 2007 (PDF)" (PDF) .
  26. ^ "Слайды лекции Кембриджского университета" .
  27. ^ "Загрузите руководство дизайнера Inform" . 1 апреля 2006 . Проверено 4 января 2007 года .
  28. ^ "О Руководстве дизайнера" ​​Информ " . 1 апреля 2006 . Проверено 4 января 2007 года .
  29. ^ "Загрузить Руководство для начинающих" . 1 апреля 2006 . Проверено 4 января 2007 года .Ферт, Роджер; Соня Кессерих (август 2004 г.). "Руководство для начинающих: Третье издание" (PDF) . Проверено 4 января 2007 года .
  30. Грэм Нельсон (10 апреля 2006 г.). «Естественный язык, семантический анализ и интерактивная художественная литература» (PDF) . Архивировано из оригинального (PDF) 14 марта 2018 года . Проверено 4 января 2007 года . Cite journal requires |journal= (help)

Внешние ссылки [ править ]

  • Cloak of Darkness: Inform представляет собой ту же короткую игру, реализованную как в Inform 6, так и в Inform 7, а также на других языках для сравнения.
  • Информ 6 - Официальный сайт
  • Часто задаваемые вопросы по Inform 6 на страницах IF Roger Firth содержат подробную информацию о программировании в Inform 6.
  • Информ 7 - Официальный сайт.
  • Сообщите в Curlie
  • Архив интерактивной художественной литературы предоставляет множество инструментов Inform, примеров и файлов библиотеки.
  • Playfic - это веб-интерфейс для создания и публикации новых игр с помощью Inform 7.
  • Guncho - это многопользовательская интерактивная игровая система, основанная на Inform 7 с комбинацией MUD- подобных и веб-интерфейсов.