Z-machine (ігровий рушій)

Z-machine
РозробкаInfocom
Розрядність16
Поява1979
Версія1.1 (2014)
Тип архітектуриCISC
Порядок байтівbig-endian
Відкритий дизайнТак

Z-machine — це віртуальна машина, яку розробили Джоель Берез і Марк Бланк[en] у 1979 році і використовується компанією Інфоком[ru] для текстових пригодницьких ігор. Інфоком компілювали код гри у файли, які містять інструкції для Z-машини (вони називалися «Файли з історіями» (англ. story files) або «Z-код файли»), що дозволяло перенести ігри на нову платформу, просто написавши Z-machine для цієї платформи. За великої кількості несумісних домашніх комп'ютерних систем в той час, це було важливою перевагою в порівнянні з використанням нативного коду або розробкою компіляторів для кожної системи окремо.

Історія

Літера «Z» є першою буквою назви Zork, першої пригодницької гри, випущеної компанією Інфоком. Z-кад файли зазвичай мають назви, що закінчуються на .Z1, .Z2, Z3, .Z4, Z5, Z6, .Z7, або .Z8, де цифра — це номер версії Z-machine, для якої призначений файл з історією. Перший байт у файлі з історією теж позначав версію.[1]

Однак це сучасна домовленість. Сам Інфоком використовував розширення .DAT (від англ. data, дані) і .zip (від англ. Z-machine Interpreter Program), але останнє розширення стало широко застосовуватися архіваторами починаючи з 1990-х років, після того, як Activision закрив Інфоком. Інфоком випустили шість версій Z-machine. Файли для версій 1 і 2 є дуже рідкісними. Всього дві гри для 1 і дві для версії 2. Версія 3 охоплює більшість випущених ігор. Більш пізні версії мали більше можливостей, наприклад ігри, що використовують версію шість, підтримували графіку.

Компілятор (називався Zilch), який Інфоком використовували для того, щоб створити файл з розповіддю, ніколи не був випущений, хоча була написана документація мови (ZIL) під відкритою ліцензією[2] . Після того, як Mediagenic перевів Інфоком у Каліфорнію в 1989 році, журнал Computer Gaming World заявив, що « ZIL … функціонально мертвий», і повідомив чутки про «абсолютно новий парсер, який можливо ніколи не буде використаний».[3] У травні 1993 року, Грем Нельсон випустив першу версію компілятора для своєї мови Inform, який генерує файли для Z-machine, навіть незважаючи на те, що мова Inform відрізняється від ZIL.

Inform став популярним у сфері інтерактивної літератури. Більша частина інтерактивної фантастики була у файлах для Z-machine. Попит на можливість створення великих ігрових файлів підштовхнув Нельсона на створення специфікації сьомої і восьмої версій Z-machine, хоча версія 7 використовується рідко. Через різні способів адресації Story file для версії 3 може бути об'ємом до 128 КБ, версія 5 підтримує до 256 КБ, а на версії 8 файл може бути розміром 512 КБ. Хоча ці розміри можуть здатися незначними за нинішніми стандартами обчислювальної техніки, для текстових пригод вони достатньо великі для розробки хитромудрих ігор.

У 1990-х роках, Нельсон розробив стандарт Z-machine[4] на основі детального аналізу наявних Інфоком-файлів.

Інтерпретатори

Інтерпретатор Frotz для Iphone з запущеним Zork I.

Інтерпретатори для Z-code файлів доступні на різних платформах. На сайті Інформу наведено посилання на інтерпретатори для 15 настільних операційних систем (зокрема 8-розрядних мікроеом з 1980-х років, таких, як Apple II, ТР-80, і Спектрум, а також для UNIX і Windows), 10 мобільних операційних систем (включно з Palm OS і Game boy), і для трьох кросплатформених інтерпретаторів (Emacs, Java і JavaScript). За словами Нельсона, це «можливо, найпортативніша віртуальна машина, з будь-коли створених»[5].

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

Ще один популярний клієнт для Mac (OS Х) — це Zoom. Він підтримує той же формат Quetzal, але структура файлу інша.[7]

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

Див. також

  • Glulx — проект, схожий на Z-machine, але знімає ряд властивих їй обмежень. Розроблено Ендрю Плоткіним у 1999 році. З того часу було випущено низку нових версій, що включають, зокрема, підтримку UNICODE. На відміну від 16-бітної Z-machine, працює з 32-бітним адресним простором.
  • Inform — мова програмування, якою можна створювати програми для Z-machine.
  • SCUMM[ru] — (Script Creation Utility for Maniac Mansion by LucasArts), графічна система, схожа на Z-machine.
  • TADS — як Glulx, спрямований на вирішення деяких з його обмежень.

Примітки

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

Посилання