Zマシン

Zマシン
デザイナーインフォコム
ビット16
導入1979年
バージョン1.1 (2014)
デザインCISC
エンディアンビッグ
オープンはい

Zマシンは、1979年にジョエル・ベレスとマーク・ブランクによって開発され、インフォコムがテキストアドベンチャーゲームに使用した仮想マシンです。インフォコムはゲームコードをZマシン命令(ストーリーファイルまたはZコードファイルと呼ばれる)を含むファイルにコンパイルしたため、そのプラットフォーム用のZマシン実装を作成するだけで、テキストアドベンチャーを新しいプラットフォームに移植することができました。当時、互換性のない家庭用コンピュータシステムが多数存在していたため、これはネイティブコードを使用したり、各システム用のコンパイラを開発したりするよりも重要な利点でした。

歴史とデザイン

命名法と慣例

Z-machineの「Z」は、インフォコム初のアドベンチャーゲームであるZorkを表しています。インフォコムは.dat(データ)と.zip(ZIP = Z-machine Interpreter Program)というファイル拡張子を使用していましたが、後者は、アクティビジョンがインフォコムを閉鎖した 1990年代以降、PKZIP互換のアーカイブファイルで広く使用されていた.zipと衝突しました

インフォコムはZマシンを6つのバージョンで製造しました。バージョン1と2を使用したファイルは非常に稀です。インフォコムからリリースされたバージョン1のファイルは2つ、バージョン2のファイルは2つしか知られていません。バージョン3はインフォコムがリリースしたゲームの大部分をカバーしています。後のバージョンでは機能が強化され、バージョン6ではグラフィックサポートが一部追加されました。

Zコードファイルの現在の慣例により、ファイル名は通常.z1、.z2、.z3、.z4、.z5、.z6、.z7、または.z8で終わります。ここで、数字は、ストーリーファイルの最初のバイトで示される、ファイルが実行されるZマシンのバージョン番号です [ 1 ]前述のように、Infocomのゲームでは、.z1から.z6に相当するものが使用されていました。.z7と.z8は​​、Infocomが閉鎖した後に提案され採用されました。

Zマシン以前

MDLプログラミング言語は、1970年代にマサチューセッツ工科大学のコンピュータサイエンス研究所(LCS)の動的モデリンググループによってLispから派生されましたそのグループのメンバーは、Colossal Cave Adventure(1977)に触発されて、MDLZork書き 2週間後に最初のバージョンを完成させました。[ 2 ] [ 3 ]: 5–6 Adventureと同様に、ZorkはDEC PDP-10用にプログラムされました。完成版は1 MBのMDLコードを占め、実行には512 KBのRAMが必要です。当時の家庭用コンピュータにはこれらのリソースがなかったため、ゲームの移植にはかなりの労力が必要でした。[ 3 ]: 11 最終的に、開発者はZorkをパーソナルコンピュータ用の2つのゲームに分割しました。[ 4 ]

約 80 KB のストレージ容量しかないフロッピー ディスクからZork を実行するために必要な圧縮は、 Blank にとって乗り越えられない障壁のように思えました。 Berez は、 UCSD Pascal が仮想マシン(VM) モデルを使用して、プラットフォーム間で簡単に移植できる実行可能ファイルを生成していることに気付き、Blank とともに、テキスト アドベンチャー ゲームに最適化された軽量 VM の要件を考案しました。この VM は、一般的なマイクロコンピュータの比較的小さい RAM サイズを補うために、必要に応じてストレージからデータを取得して命令を実行します。[ 3 ] : 11 結果として得られた Z マシンは、ゲーム内のアイテム、場所、キャラクター、武器にオブジェクト ツリー構造を使用しました。 [ 3 ] : 11 比較すると、Z マシン パーサーは 3  KBのストレージを占有しますが、元の PDP-10 パーサーは 10  Kwords ( 36 ビット) を占有します。[ 5 ]

ZILとZIP、ZILCHとZAP

Zマシンを補完するため、インフォコムはMDLを簡素化した高水準コンピュータ言語Zork実装言語(ZIL)[ 5 ]と、ZILを2段階のプロセスでZマシン命令にコンパイルするZ言語インタープリタプログラム(ZIP)を開発した。これにより、テキストアドベンチャー開発はプラットフォームに依存せず、適切なZマシンインタープリタを書くだけで異なるシステムに移植できるようになった。[ 3 ]:12–13 ZIPはコンパイラ(ZILCH、ZILコンパイラハックの略)とアセンブラ(ZAP、Zマシンアセンブラプログラム)で構成される。 [ 6 ]

ZILCHはリリースされていないが、ZILに関するドキュメントは依然として存在し、オープンソースの代替言語「ZILF」[ 7 ]も開発されている。 1989年にメディアジェニックがインフォコムをカリフォルニアに移転した後、Computer Gaming World誌は「ZILは機能的に死んでいる」と述べ、「全く新しいパーサーが登場するかもしれないが、実際には使われないかもしれない」という噂を報じた[ 8 ] 。

グラハム・ネルソンとインフォーム

1993 年 5 月、Graham Nelson はInformコンパイラの最初のバージョンをリリースしました。Inform のソース言語は ZIL とはまったく異なりますが、このコンパイラも出力として Z-machine ストーリー ファイルを生成します。

Informはインタラクティブフィクションコミュニティで人気を博しています。インタラクティブフィクションの大部分はZマシンのストーリーファイル形式です。より大きなゲームファイルの作成機能に対する需要に応えて、NelsonはZマシンのバージョン7と8を指定しましたが、バージョン7はほとんど使用されていません。アドレスの処理方法により、バージョン3のストーリーファイルは最大128KB、バージョン5のストーリーファイルは最大256KB、バージョン8のストーリーファイルは最大512KBまで可能です。これらのサイズは今日のコンピュータの基準からすると小さいように思えるかもしれませんが、テキストのみのアドベンチャーゲームであれば、精巧なゲームには十分な大きさです。

1990年代、グラハム・ネルソンは既存のInfocomファイルの詳細な調査に基づき、Z-Machine標準を策定しました。この標準には、ネルソンが開発した新しいバージョンで使用されている拡張機能に加え、「Blorb」リソース形式と「Quetzal」セーブファイル形式へのリンクも含まれています。[ 9 ]ネルソンは2006年、 Inform 7向けにZ-Machineを32ビットGlulx形式に拡張しました。2016年に設立されたインタラクティブフィクションテクノロジー財団は、これらの標準をすべて管理しています。[ 10 ]

ZIL (Zork 実装言語)

ZILはMITのMDLに基づいています。以下はZork Iの真鍮製ランタンのZILでの定義です。各行の意味を説明するコメントが追加されています。[ 11 ]

<OBJECT LANTERN # _LANTERNオブジェクト定義します( LOC LIVING -ROOM ) # _オブジェクトの初期位置定義します( SYNONYM LAMP LANTERN LIGHT ) # _LANTERN代わりに使用できる同義語定義します( ADJECTIVE BRASS ) # _このランタンをランタン区別するためのオプションの形容詞( DESC "brass lantern" ) # _インベントリリスト短い説明( FLAGS TAKEBIT LIGHTBIT ) # _このオブジェクトは何ができるでしょうか? TAKENできます。LIGHT を提供ます( ACTION LANTERN-F ) # _このオブジェクトに対する特別なアクションを定義するサブルーチン( FDESC "電池式ランタンがトロフィーケースにあります。" ) # _最初の遭遇時の説明( LDESC "ここには真鍮製のランタン(電池式)があります。" ) # _他の場所での後の記述( SIZE 15 ) > # _インベントリ容量を制限するために重量を定義します

MDL での同等のオブジェクトは次のように定義されます。

<OBJECT [ "LAMP" "LANTE" "LIGHT" ] [ "BRASS" ] "lamp" <+ , OVISON , TAKEBIT , LIG​​HTBIT> LANTERN () ( ODESC0 "トロフィーケースの上に電池式の真鍮製ランタンがあります。" ODESC1 "ここには電池式の真鍮製ランタンがあります。" OSIZE 15 OLINT [0 >] ) >

戦闘を伴うより複雑な例と、それに相当するMDL Zorkは、Andrew Plotkinによる2019年のブログ記事で紹介されています。注目すべきは、Zマシンはガベージコレクションをサポートしておらず、ZILはLispのリストシステムの概念を持っていないことです。[ 12 ]

インタプリタ

iPhone上で動作するFrotzの実装で、MITZorkをプレイしています

Zコードファイルのインタープリタは、様々なプラットフォームで利用可能です。Infocomは、インタープリタを作成するだけで済むため、ゲームを新しいコンピュータに迅速に移植することができました。[ 13 ] Informのウェブサイトには、15種類のデスクトップオペレーティングシステム( Apple IITRS-80ZX Spectrumなどの1980年代の8ビットマイクロコンピュータを含み、「Unix」と「Windows」をそれぞれ1つとしてグループ化)、10種類のモバイルオペレーティングシステム(Palm OSGame Boyを含む)、および4つのインタープリタプラットフォーム(Emacs、Java、JavaScript、Scratch)用の無料で入手可能なインタープリタへのリンクが掲載されています。Nelson氏によると、これは「おそらくこれまでに作成された中で最も移植性の高い仮想マシン」です。[ 14 ]

人気のあるインタープリタには、NitfolとFrotzがあります。NitfolはGlk APIを利用し、Zマシンのバージョン1から8(グラフィカルZマシンのバージョン6を含む)をサポートしています。保存ファイルは標準のQuetzal形式で保存されます。バイナリファイルは、従来のMac OSUnix系システム、Windowsなど、複数のオペレーティングシステムで利用可能です。[ 15 ]

Frotzは1995年にStefan JokischによってDOS用にC言語で書かれました。その後、Unix系システム[ 16 ]RISC OS [ 17 ]iOS [ 18 ]などの他のプラットフォームにも移植されました。サウンドエフェクトとグラフィックは様々なレベルでサポートされていました。2002年までに開発は行き詰まり、David Griffithがこのプログラムを引き継ぎました。コードベースは仮想マシンユーザーインターフェース部分に分割され、仮想マシンはどのユーザーインターフェースからも独立しました。これにより、Frotzの移植に多様性が生まれました。奇妙な移植の一つは、最も単純なものでもあります。インスタントメッセージボットを最小限のI/O機能を持つFrotzのバージョンにラップし、インスタントメッセージクライアントを使用してほとんどのZマシンゲームをプレイできるボットを作成しました。[ 19 ]

macOSやその他のUnix系システムで人気のクライアントとしてはZoomがあります。 [ 20 ]同じQuetzal保存形式をサポートしていますが、ファイル構造のパッケージ化が異なります。

参照

  • SCUMMルーカスアーツ社による、Zマシンに似たグラフィックシステム
  • TADS – Zマシンの限界のいくつかに対処するために作られた

参考文献

  1. ^ 「Zマシン標準文書」inform-fiction.org2018年3月26日閲覧
  2. ^ Lebling, P. David; Blank, Marc S.; Anderson, Timothy A. (1979年4月). 「Zork: コンピュータ化されたファンタジーシミュレーションゲーム」. Computer . 12. IEEE Computer Society: 51–59 . doi : 10.1109/MC.1979.1658697 .
  3. ^ a b c d eブリセノ、ヘクター、チャオ、ウェズリー、グレン、アンドリュー、フー、スタンリー、クリシュナムルシー、アシュウィン、ツチダ、ブルース(2000年12月15日)。「トップから転落:インフォコム社のストーリー」(PDF)。MITコース6.933J/STS.420J(エンジニアリング革命の構造) 。 2025年1月3日閲覧
  4. ^ Lebling, P. David (1980年12月). 「Zorkとコンピュータ化されたファンタジーシミュレーションの未来」 . BYTE . pp.  172– 182.
  5. ^ a bブランク、マーク・S.、ギャレー、SW(1980年7月)。「大規模なプログラムを小さなマシンに収める方法、あるいは偉大な地下帝国をデスクトップに収める方法」クリエイティブ・コンピューティング誌、  80~ 87ページ。 2025年1月7日閲覧
  6. ^ Plotkin, Andrew. 「The Obsessively Complete INFOCOM Catalog」 . eblong.com . 2025年1月3日閲覧
  7. ^ McGrew, Tara. 「ZILF」 . foss.heptapod.net . 2025年8月22日閲覧
  8. ^ 「業界内部:インフォコムの西海岸への移転が物議を醸す」コンピュータゲームワールド』第63号、1989年9月、10ページ。
  9. ^ "Inform - ZMachine - Standards" . inform-fiction.org . 2018年3月26日閲覧
  10. ^ 「Glk、Glulx、Blorbの仕様」インタラクティブフィクションテクノロジー財団。2022年11月16日。
  11. ^ Maher, Jimmy (2012年1月7日). 「ZILとZマシン」 . The Digital Antiquarian . 2025年1月3日閲覧
  12. ^ Plotkin, Andrew (2019年4月17日). 「ZILとは何か?Zarf .
  13. ^ Mace, Scott (1984年4月2日). 「Windowsでゲーム」 . InfoWorld . p. 56. 2015年2月10日閲覧
  14. ^ネルソン、グラハム。「通訳について」。Informウェブサイト2009年11月7日閲覧。
  15. ^ "if-archive/infocom/interpreters/nitfol" . 2016年10月29日閲覧
  16. ^ 「Gitlab上のFrotz READMEファイル」 。 2019年2月19日閲覧
  17. ^ 「RISC OS Frotzホームページ」 1999年9月18日。 2021年10月15日時点のオリジナルよりアーカイブ。
  18. ^ 「App Store の Frotz」。App Store
  19. ^ 「Gitlab上のFrotz DUMBファイル」 。 2019年2月19日閲覧
  20. ^ 「論理シフトズーム」 。 2016年10月29日閲覧