Z-machine (игровой движок)

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Z-machine
Разработчик Infocom
Разрядность 16
Представлена 1979
Версии 1.1 (2014)
Архитектура CISC
Порядок байтов Big
Открытая? Да

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

История[править | править код]

Буква «Z» является первой буквой названия Zork, первой приключенческой игры, выпущенной компанией Infocom. Согласно современной конвенции, файлы историй обычно имеют расширения .Z1, .Z2, Z3, .Z4, Z5, Z6, .Z7, либо .Z8, где цифра-это номер версии Z-machine, для которой предназначен файл с историей. Также первый байт в файле с историей тоже обозначал версию[1], однако оригинальные файлы историй, созданные в Infocom, имели расширения .DAT (от англ. data, данные) и .ZIP (от англ. Z-machine Interpreter Program).

За всю историю разработки Infocom создала шесть версий Z-machine, наибольшее количество игры студии вышло для третьей версии. Более поздние версии имели больше возможностей, так например игры, использующие версию шесть, поддерживали графику.

Компилятор под названием Zilch, использовавшийся для создания файлов историй, никогда не публиковался, хотя была написана документация языка ZIL (Zork Implementation Language) под открытой лицензией[2]. После приобретения Infocom компанией Activision, журнал Computer Gaming World объявил, что «ZIL […] функционально мертв», и сообщил слухи о «совершенно новом парсере, который может никогда не будет использован»[3]. В мае 1993 года Грэм Нельсон выпустил первую версию компилятора для своего языка Inform, который генерирует файлы для Z-machine, даже несмотря на то, что язык Inform отличается от ZIL.

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

В 1990-х годах, Нельсон разработал стандарт Z-machine[4] на основе детального анализа существующих файлов Infocom.

Интерпретаторы[править | править код]

Интерпретатор Frotz для iOS с запущенным Zork I.

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

Популярными интерпретаторами являются Nitfol и Frotz. Nitfol использует Glk[en] API, и поддерживает версии с 1 по 8, включая версию 6 c графикой. файлы сохранений хранятся в формате Quetzal. Двоичные файлы доступны для нескольких различных операционных систем, в том числе для macOS, Linux, DOS, и Windows.[6]

Ещё один популярный клиент для macOS — это Zoom. Он поддерживает тот же Quetzal формат, но структура файла разная.[7]

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

См. также[править | править код]

  • Glulx[en] — проект, похожий на Z-machine, но снимающий ряд свойственных ей ограничений. Разработан Эндрю Плоткиным[en] в 1999 году. C тех пор был выпущен ряд новых версий, включающих, в частности, поддержку UNICODE. В отличие от 16-битной Z-machine, работает с 32-битным адресным пространством.
  • Inform — язык программирования, который может создавать программы для Z-machine.
  • SCUMM — (Script Creation Utility for Maniac Mansion), графическая система, похожая на Z-machine.
  • TADS — как Glulx, направлен на решение некоторых из его ограничений.

Примечания[править | править код]

  1. The Z-Machine Standards Document. inform-fiction.org. Дата обращения: 26 марта 2018. Архивировано 1 февраля 2018 года.
  2. McGrew, Jesse ZILF. Bitbucket. Дата обращения: 10 ноября 2018. Архивировано из оригинала 28 ноября 2021 года.
  3. "Inside the Industry: Infocom's West Coast Move Stirs Controversy", Computer Gaming World, p. 10, September 1989
  4. Inform - ZMachine - Standards. inform-fiction.org. Дата обращения: 26 марта 2018. Архивировано 18 марта 2018 года.
  5. Nelson, Graham About Interpreters. Inform website. Дата обращения: 7 ноября 2009. Архивировано 3 декабря 2009 года.
  6. if-archive/infocom/interpreters/nitfol. Дата обращения: 29 октября 2016.
  7. Logical Shift Zoom. Дата обращения: 29 октября 2016. Архивировано 9 августа 2019 года.
  8. Frotz README file on Github. Дата обращения: 29 октября 2016.
  9. Frotz DUMB file on Github. Дата обращения: 29 октября 2016. Архивировано 27 марта 2018 года.

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