stringtranslate.com

Z-машина

Z -машина — это виртуальная машина , разработанная Джоэлом Березом и Марком Бланком в 1979 году и использовавшаяся Infocom для своих текстовых приключенческих игр . Infocom компилировала игровой код в файлы, содержащие инструкции Z-машины (называемые файлами историй или файлами Z-кода), и поэтому могла портировать свои текстовые приключения на новую платформу, просто написав реализацию Z-машины для этой платформы. С большим количеством несовместимых домашних компьютерных систем, используемых в то время, это было важным преимуществом по сравнению с использованием собственного кода или разработкой компилятора для каждой системы.

История

«Z» в Z-machine означает Zork , первую приключенческую игру Infocom. Файлы Z-code обычно имеют имена, заканчивающиеся на .z1, .z2, .z3, .z4, .z5, .z6, .z7 или .z8, где число — это номер версии Z-machine, на которой предполагается запустить файл, как указано в первом байте файла истории. [1]

Однако это современная конвенция. Сама Infocom использовала расширения .dat (Data) и .zip (ZIP = Z-machine Interpreter Program), но последнее противоречило широко распространенному использованию .zip для совместимых с PKZIP архивных файлов, начиная с 1990-х годов, после того как Activision закрыла Infocom. Infocom выпустила шесть версий Z-machine. Файлы, использующие версии 1 и 2, очень редки. Известно, что Infocom выпустила только два файла версии 1 и только два файла версии 2. Версия 3 охватывает большинство выпущенных Infocom игр. Более поздние версии имели больше возможностей, достигнув кульминации в некоторой графической поддержке в версии 6.

Компилятор (называемый Zilch) , который Infocom использовал для создания своих файлов историй, так и не был выпущен, хотя документация используемого языка ZIL , языка семейства Lisp , похожего на MDL , все еще существует, и была написана замена с открытым исходным кодом "ZILF" [2] . После того, как Mediagenic переместила Infocom в Калифорнию в 1989 году, Computer Gaming World заявила, что "ZIL ... функционально мертв", и сообщила о слухах о "совершенно новом парсере, который, возможно, никогда не будет использоваться". [3] В мае 1993 года Грэм Нельсон выпустил первую версию своего компилятора Inform , который также генерирует файлы историй Z-machine в качестве своего вывода, хотя исходный язык Inform сильно отличается от ZIL.

Inform стал популярен в сообществе интерактивной фантастики . Большая часть интерактивной фантастики представлена ​​в виде файлов историй Z-machine. Потребность в возможности создания больших игровых файлов привела к тому, что Нельсон указал версии 7 и 8 Z-machine, хотя версия 7 используется редко. Из-за способа обработки адресов файл истории версии 3 может иметь длину до 128 Кб, история версии 5 может иметь длину до 256 Кб, а история версии 8 может иметь длину до 512 Кб. Хотя эти размеры могут показаться небольшими по сегодняшним стандартам вычислений, для текстовых приключений они достаточно велики для сложных игр.

В 1990-х годах Грэм Нельсон разработал стандарт Z-Machine, основанный на детальном изучении существующих файлов Infocom. Стандарт также включает расширения, используемые его новыми версиями, а также ссылки на формат ресурсов « Blorb », используемый Infocom, и формат файлов сохранения « Quetzal ». [4] В 2006 году Нельсон расширил Z-machine до 32-битного формата Glulx для Inform 7. Фонд Interactive Fiction Technology Foundation , основанный в 2016 году, управляет всеми этими стандартами. [5]

ZIL (язык реализации Zork)

ZIL основан на MDL от MIT. Вот определение латунного фонаря Zork I:

<ОБЪЕКТ ФОНАРЬ ( МЕСТО ГОСТИНАЯ ) ( СИНОНИМ ЛАМПА ФОНАРЬ СВЕТ ) ( ПРИЛАГАТЕЛЬНОЕ ЛАТУНЬ ) ( УБЫТКИ "латунный фонарь" ) ( ФЛАГИ ТАКЕБИТ СВЕТОБИТ ) ( ДЕЙСТВИЕ ФОНАРЬ-Ф ) ( FDESC "На ящике с трофеями находится фонарь на батарейках." ) ( LDESC "Здесь есть латунный фонарь (на батарейках)." ) ( РАЗМЕР 15 ) >                      

Более сложный пример, включающий бой, вместе с его эквивалентом MDL Zork, представлен в блоге Эндрю Плоткина 2019 года. Примечательно, что Z-машина не поддерживает сборку мусора , а ZIL не имеет концепции системы списков Lisp. [6]

Переводчики

Реализация Frotz, работающая на iPhone , воспроизводящая версию Zork от MIT .

Интерпретаторы для файлов Z-code доступны на самых разных платформах. На сайте Inform перечислены ссылки на свободно доступные интерпретаторы для 15 настольных операционных систем (включая 8-битные микрокомпьютеры 1980-х годов, такие как Apple II , TRS-80 и ZX Spectrum , и группирующие "Unix" и "Windows" как по одной), 10 мобильных операционных систем (включая Palm OS и Game Boy ) и четыре платформы интерпретаторов (Emacs, Java, JavaScript и Scratch). По словам Нельсона, это "возможно, самая портативная виртуальная машина из когда-либо созданных". [7]

Популярные интерпретаторы включают Nitfol и Frotz. Nitfol использует API Glk и поддерживает версии 1–8 Z-машины, включая графическую версию 6 Z-машины. Файлы сохранения хранятся в стандартном формате сохранения Quetzal . Двоичные файлы доступны для нескольких различных операционных систем , включая классическую Mac OS , Unix-подобные системы, DOS и Windows . [8]

Frotz был написан на языке C Стефаном Йокишем в 1995 году для DOS. Со временем он был портирован на другие платформы, такие как Unix-подобные системы, [9] RISC OS , [10] и iOS . [11] Звуковые эффекты и графика поддерживались в разной степени. К 2002 году разработка застопорилась, и программу подхватил Дэвид Гриффит. Кодовая база была разделена между виртуальной машиной и частями пользовательского интерфейса таким образом, что виртуальная машина стала независимой от любого пользовательского интерфейса. Это позволило больше разнообразить портирование Frotz. Один из странных портов также является одним из самых простых: бот для обмена мгновенными сообщениями оборачивается вокруг версии Frotz с минимальной функциональностью ввода-вывода, создавая бота, с помощью которого можно играть в большинство игр Z-machine, используя клиент для обмена мгновенными сообщениями. [12]

Другим популярным клиентом для macOS и других Unix-подобных систем является Zoom. [13] Он поддерживает тот же формат сохранения Quetzal , но упаковка файловой структуры отличается.

Смотрите также

Ссылки

  1. ^ "Документ по стандартам Z-Machine". inform-fiction.org . Получено 26 марта 2018 г. .
  2. ^ МакГрю, Джесси. "ZILF". zilf.io . Получено 22 ноября 2020 г. .
  3. ^ «Внутри отрасли: движение Infocom на западном побережье вызывает споры». Computer Gaming World . № 63. Сентябрь 1989. стр. 10.
  4. ^ "Inform - ZMachine - Standards". inform-fiction.org . Получено 26 марта 2018 г. .
  5. ^ «Спецификации Glk, Glulx и Blorb». Interactive Fiction Technology Foundation. 16 ноября 2022 г.
  6. ^ Плоткин, Эндрю (17 апреля 2019 г.). «Что такое ЗИЛ вообще?». Зарф .
  7. ^ Нельсон, Грэм. "О переводчиках". Сайт Inform . Получено 2009-11-07 .
  8. ^ "if-archive/infocom/interpreters/nitfol" . Получено 29.10.2016 .
  9. ^ "Файл Frotz README на Gitlab" . Получено 2019-02-19 .
  10. ^ "Домашняя страница RISC OS Frotz". 1999-09-18.
  11. ^ "Frotz в App Store". App Store .
  12. ^ "Файл Frotz DUMB на Gitlab" . Получено 2019-02-19 .
  13. ^ "Logical Shift Zoom" . Получено 29.10.2016 .

Внешние ссылки