Z-machineとは
Z-machineは、1979年にジョエル・ベレズとマーク・ブランクによって開発された
仮想機械です。これは、Infocom社が
インタラクティブフィクションゲームを開発・実行するために使用しました。特に、異なるコンピュータプラットフォーム間でゲームを移植する際の課題を解決するために設計された点が特徴です。
概要
Infocom社は、ゲームのプログラムコードを「ストーリーファイル」または「Z-codeファイル」と呼ばれるZ-machineの命令セットで記述しました。当時の家庭用コンピュータは互換性が乏しかったため、Z-codeを使用することで、各システム専用のコードを記述するよりもはるかに容易にゲームを移植することができました。
Z-machineの「Z」は、Infocom社が最初にリリースした
アドベンチャーゲーム「Zork」に由来しています。Z-codeファイルは、ファイル名の接尾辞(z1, z2, z3, z4, z5, z6, z7, z8)でバージョン番号を示すのが一般的です。また、ストーリーファイルの場合は、最初のバイトでバージョンが指定されます。Infocom社は、拡張子として.datや.zipを使用していましたが、近年では.zipが圧縮ファイルの拡張子として広く使われるようになったため、競合が発生しています。
Infocom社は、6つのバージョンのZ-machineを開発しました。バージョン1と2はあまり使用されておらず、それぞれ2つしかファイルが確認されていません。Infocom社のゲームでは主にバージョン3が使用され、以降のバージョンでは機能が追加され、バージョン6では
グラフィックの一部サポートが実現しました。
ストーリーファイルを生成するために使用されたZilch
コンパイラは公開されていませんが、ZIL(Zork Implementation Language)の仕様書は存在しています。1993年には、Graham NelsonがZ-machineのストーリーファイルを生成する
コンパイラ「Inform」をリリースしました。ただし、Informのソース言語はZILとは異なります。Informが生成するファイルはバージョン5です。
Informは、
インタラクティブフィクションコミュニティで広く使用されるようになり、多くのゲームがZ-machineのストーリーファイル形式で作成されました。より大規模なゲームに対応するため、Graham Nelsonはバージョン7と8の仕様を策定しましたが、バージョン7はほとんど使用されていません。これは、アドレスの処理方法により、ストーリーファイルのサイズに制限があったためです(バージョン3は128KB、バージョン5は256KB、バージョン8は512KB)。現在の基準では小さいですが、テキストベースの
アドベンチャーゲームには十分なサイズでした。
1990年代には、Graham Nelsonが既存のInfocomファイルの調査に基づき、Z-machineの標準を策定しました。
Z-codeファイルの
インタプリタは、さまざまなプラットフォームで利用可能です。Informのウェブサイトには、15のデスクトップOS向けの無料インタープリタのリンクが掲載されています。これには、Unix、Windows、Apple II、TRS-80、Sinclairなどの1980年代の8ビットコンピュータも含まれています。さらに、Palm OSやゲームボーイなどの10のモバイルOS、Emacs、Java、JavaScriptのインタープリタも利用可能です。Graham Nelsonは、「Z-machineはおそらくこれまで作られた中で最も移植性の高い
仮想機械だろう」と述べています。
有名な
インタプリタとしては、NitfolとFrotzが挙げられます。NitfolはGlk APIを使用し、バージョン1から8までのZ-machineをサポートし、
グラフィックが利用可能なバージョン6にも対応しています。保存ファイルは、標準のQuetzal形式で保存されます。Macintosh、
Linux、
MS-DOS、Windowsなど、多くのOSで互換性のある
バイナリファイルが利用可能です。
Frotz
Frotzは、1995年にStefan Jokischによって
C言語で
MS-DOS向けに開発され、後にUnix、RISC OS、Macintoshなどのプラットフォームに移植されました。
効果音や
グラフィックにも対応しています。2002年に開発が停滞した後、David Griffithに引き継がれました。その後、
仮想機械部分とユーザーインターフェース部分が分離され、異なるユーザーインターフェースで
仮想機械が独立して実行できるようになりました。これにより、Frotzは様々なプラットフォームに移植されることになりました。インスタントメッセンジャーのボットとして組み込まれた例もあり、限られた入出力ながらも、インスタントメッセンジャーのクライアントを通じてZ-machineのゲームを楽しむことができます。
その他のユーティリティ
ZorkToolsは、オブジェクトや語彙の一覧表示など、通常のZ-codeストーリーファイルでは実現できない機能を提供するユーティリティです。
関連項目
Glulx: Z-machineに似ていますが、いくつかの制限がない仮想機械です。
SCUMM:
ルーカスアーツが開発したグラフィカルなシステムで、Z-machineに似ています。
脚注
[1] ZorkToolsは、Z-codeストーリーファイルの解析やデバッグに役立つツールを提供します。
外部リンク
Z-machineの標準文書
Learning ZIL (PDF) - Infocom社によるZILのマニュアル(1989年)。
Description of ZIP (PDF) - ZIPに関するInfocom社の内部文書(1989年3月23日)。
各プラットフォーム向けのインタープリター
vbccz - Z-machineを対象としたCコンパイラ。
How to Fit a Large Program Into a Small Machine - Z-machineの設計と開発に関する説明。
Frotzホームページ - Frotzコア、Unix、および疑似バージョンのホームページ。移植版の一覧あり。
CellarDoor - PalmOS用Z-machineインタープリター。
*
XZip - X Window (Unix/
Linux) 用のフリーのZ-machineインタープリター。