Відкрити головне меню

Z-machine (гральний рушій)

віртуальна машина

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

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

ІсторіяРедагувати

Літера «Z» є першою буквою назви Zork[en], першої пригодницької гри, випущеної компанією Інфоком. 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[ru] заявив, що « ZIL … функціонально мертвий», і повідомив чутки про «абсолютно новий парсер, який можливо ніколи не буде використаний».[3] У травні 1993 року, Грем Нельсон випустив першу версію компілятора для своєї мови Inform[en], який генерує файли для 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[en] — проект, схожий на Z-machine, але знімає ряд властивих їй обмежень. Розроблено Ендрю Плоткіним[en] у 1999 році. З того часу було випущено низку нових версій, що включають, зокрема, підтримку UNICODE. На відміну від 16-бітної Z-machine, працює з 32-бітним адресним простором.
  • Inform[en] — мова програмування, якою можна створювати програми для Z-machine.
  • SCUMM[ru] — (Script Creation Utility for Maniac Mansion by LucasArts), графічна система, схожа на Z-machine.
  • TADS[en] — як Glulx, спрямований на вирішення деяких з його обмежень.

ПриміткиРедагувати

  1. The Z-Machine Standards Document. inform-fiction.org. Процитовано 26 March 2018. 
  2. McGrew, Jesse. ZILF. Bitbucket. 
  3. Inside the Industry: Infocom's West Coast Move Stirs Controversy. Computer Gaming World. September 1989: 10. 
  4. Inform - ZMachine - Standards. inform-fiction.org. Процитовано 26 March 2018. 
  5. Nelson, Graham. About Interpreters. Inform website. Процитовано 2009-11-07. 
  6. if-archive/infocom/interpreters/nitfol. Процитовано 2016-10-29. 
  7. Logical Shift Zoom. Процитовано 2016-10-29. 
  8. Frotz README file on Github. Процитовано 2016-10-29. 
  9. Frotz DUMB file on Github. Процитовано 2016-10-29. 

ПосиланняРедагувати