知らせる

知らせる
原作者グラハム・ネルソン
開発者グラハム・ネルソン
安定版リリース
10.1.2 / 2022年8月31日[ 1 ] ( 2022-08-31 )
オペレーティング·システムMicrosoft WindowsMac OS XLinux、その他
タイプインタラクティブフィクションの開発とプレイ
ライセンスアーティスティック2.0 [ 2 ]
Webサイトhttps://ganelson.github.io/inform-website/

Informは、1993年にグラハム・ネルソンによって最初に作成された、インタラクティブフィクションのためのプログラミング言語および設計システムである。Informは、ZコードまたはGlulx仮想マシン用に設計されたプログラムを生成できる。バージョン1から5は1993年から1996年の間にリリースされた。1996年頃、ネルソンはInformを基本原理から書き直し、バージョン6(またはInform 6)を作成した。[ 3 ]その後の10年間で、バージョン6はかなり安定し、インタラクティブフィクションを書くための人気言語となった。2006年、ネルソンは、自然言語の原理に基づく完全に新しい言語と、書籍出版のメタファーに基づく新しいツールセットである Inform 7(一時的にNatural Informとして知られていた)をリリースした。

Z-マシンとGlulx

Informコンパイラは、InformコードをGlulxまたはZ-code用のストーリーファイルに変換します。Glulxはインタラクティブフィクション向けに特別に設計された2つの仮想マシンです。より大規模なゲームをサポートできるGlulxがデフォルトです。

Zマシンは、 1979年にインフォコム社がインタラクティブフィクションタイトル向けに開発しました。主要プラットフォームからマイナープラットフォームまで、ほぼすべてのプラットフォームに少なくとも1つのインタープリタが存在するため、同じZコードファイルを変更することなく、多数のプラットフォームで実行できます。当初、InformはZマシンのみを対象としていました。

Andrew Plotkin 氏は、数十年前の Z-machine の多くの制限を克服するために彼が設計した仮想マシンであるGlulx用のファイルも生成できる Inform 6 の非公式バージョンを作成しました。2004年2月29日にリリースされた Inform 6.3 以降、Inform 6 は Andrew Plotkin 氏の研究に基づき、両方の仮想マシンを正式にサポートしています。Inform 7 の初期リリースでは Glulx はサポートされていませんでしたが、2006年8月に Glulx のサポートがリリースされました。

インフォーム6

情報1~6
パラダイムオブジェクト指向手続き型
デザイン:グラハム・ネルソン
開発者グラハム・ネルソン
初登場1993
安定版リリース
6.42 / 2024年2月10日[ 4 ] ( 2024-02-10 )
OSMicrosoft WindowsMac OS XLinux、その他
ライセンスフリーウェアArtistic License 2.0
Webサイトインフォームフィクション.org
影響を受けた
ZマシンC [ 5 ]
影響を受けた
インフォーム7

Informは1993年にGraham Nelsonによって開発されました。1996年、NelsonはInformを根本から書き直し、バージョン6(通称Inform 6)を開発しました。その後10年間でバージョン6は安定し、インタラクティブフィクションの執筆に人気の言語となりました。

Inform 6システムは、2つの主要コンポーネントで構成されています。Informコンパイラは、Informソースコードからストーリーファイルを生成します。Informライブラリは、プレイヤーのテキスト入力を解析し、ワールドモデルを追跡するという複雑な作業の大部分を処理するソフトウェアスイートです。Informという名称は、コンパイラが理解する Informプログラミング言語にも由来しています。

Inform 6 と Z-Machine はもともとインタラクティブ フィクションを念頭に設計されましたが、BASICインタープリタ、LISPチュートリアル (インタープリタ付き)、テトリスゲーム、 Snakeゲームのバージョンなど、他の多くのプログラムも開発されました。

Inform 6 コンパイラ

Informコンパイラは、 Inform 6ソース コードからZ マシンまたはGlulx用のファイル(ストーリー ファイルとも呼ばれます)を生成します。

Inform 6プログラミング言語

Informプログラミング言語はオブジェクト指向かつ手続き型です。この言語の重要な要素はオブジェクトです。オブジェクトは、オブジェクト間の親子関係を列挙するオブジェクトツリーで管理されます。親子関係は場所を表すためによく使用されるため、あるオブジェクトの親であるオブジェクトは、そのオブジェクトを「保持する」とも呼ばれます。オブジェクトはツリー内を移動できます。通常、最上位レベルのオブジェクトはゲーム内の部屋やその他の場所を表し、そこには部屋の内容を表すオブジェクト(物理的なアイテム、NPC、プレイヤーキャラクター、背景効果など)が保持されます。すべてのオブジェクトは他のオブジェクトを保持できるため、あるオブジェクトが、そのオブジェクトを含むオブジェクトを保持しているオブジェクトlivingroomを保持することがあります。 insurancesalemanbriefcaseinsurancepaperwork

Informの初期バージョンでは、オブジェクトはオブジェクト指向プログラミングにおけるオブジェクトの概念とは異なり、クラスというものが存在しませんでした。後のバージョンではクラス定義のサポートが追加され、オブジェクトがクラスのメンバになることが可能になりました。オブジェクトとクラスは複数のクラスを継承できます。インタラクティブフィクションゲームには通常、多数の固有のオブジェクトが含まれます。そのため、Informの多くのオブジェクトは、「メタクラス」であるObject以外のクラスを継承しません。ただし、オブジェクトはInformライブラリで認識される属性( や などのブール型プロパティscenery)を非常に頻繁に持っていますedible。他の言語では、これは通常、継承によって実装されます。

以下は Inform 6 ソース コードの簡単な例です。

! 角括弧はルーチンを定義します。これは引数を取らないMainルーチンです。[ Main ; print "Hello, World! ^ " ; ];

手続き部分、文、演算子はC言語から大部分を借用していますが、配列の添え字を取るため-->xに の代わりにが使用されるという点が顕著です。ルーチンは上記のルーチン[x]のように角括弧で定義されますが[ 5 ] 、 C言語と同様に丸括弧で呼び出されます。 文字は文字をエスケープしたり、生のZマシンオペコードを呼び出すために使用されます[ 6 ] 。Main@

Inform 6 ライブラリ

Inform システムには、インタラクティブ フィクションのプログラミングに伴う最も困難な作業をほぼすべて自動化する Inform ライブラリも含まれています。具体的には、プレーヤーの入力を解釈するテキストパーサーと、オブジェクト (およびそのプロパティ)、部屋、ドア、プレーヤーのインベントリなどを追跡するワールド モデルが 含まれています。

InformコンパイラはInformライブラリを必要としません。Platypus [ 7 ]やInformをスペイン語でコーディングするInformATEなど、代替ライブラリがいくつか利用可能です。ZorkInform 6に直接移植したゲームなど、ライブラリを全く使用しないゲームもあります。[ 5 ]

例のゲーム

Informライブラリを利用したInform 6のソースコードの例を以下に示します。以下のInform 6のコードサンプルはInform 7でも使用できますが、組み込みのレガシーコードであることを示す特別な表示が必要です。

定数ストーリー「こんにちは控除額」;定数見出し^インタラクティブな例^ ;「Parser」をインクルードします「VerbLib」をインクルードします[初期化; location = Living_Room ; "Hello World" ; ];オブジェクトKitchen "キッチン" ;オブジェクトFront_Door "玄関" ;オブジェクトLiving_Room 「リビングルーム」、説明快適に家具が備え付けられたリビングルーム」n_to Kitchen s_to Front_Door ライトありオブジェクト->セールスマン「保険セールスマン」、名前保険」「セールスマン」「男性」説明「安っぽいポリエステルの スーツを着た保険セールスマン。あなたと話をしたがっているようです。」[;聞く: Insurance_Paperwork をプレーヤー移動; 「セールスマンは 生命保険について話し合い、あなたを退屈させます。 彼はブリーフケースから書類をいくつか取り出して あなたに渡します。」; ]、アニメーション;オブジェクト-> ->ブリーフケース「briefcase」、名前briefcase」「case」説明「少し使い古した黒いブリーフケース。」コンテナーがありますオブジェクト-> -> -> Insurance_Paperwork 「保険の書類」、名前「paperwork」「papers」「insurance」「documents 」「forms」説明は「次から次へと短い法律用語が続きます。」;「文法」を含める;

Inform 6 以前のバージョンで開発された注目すべきゲーム

インフォーム7

インフォーム7
パラダイム自然言語宣言型手続き型
デザイン:グラハム・ネルソン
開発者グラハム・ネルソン
初登場2006
安定版リリース
10.1.2 / 2022年8月31日[ 2 ] ( 2022-08-31 )
OSMicrosoft WindowsMac OS XLinux、その他
ライセンスフリーウェア(2022年以前); Artistic License 2.0(2022年以降)
Webサイトhttp://inform7.com/
影響を受けた
Inform 6、自然言語プログラミング

2006年4月30日、グラハム・ネルソンはrec.arts.int-fictionニュースグループでInform 7のベータ版リリースを発表しました。[ 12 ] Inform 7は、インタラクティブフィクションのテストに特化した開発ツールを備えたInform 7 IDE 、新言語用のInform 7コンパイラ、そしてInform 7のコアライブラリとなる「標準ルール」という3つの主要部分で構成されています。Inform 7は、Inform 6のInformライブラリInformコンパイラも利用しています。コンパイラはInform 7のソースコードをInform 6のソースコードにコンパイルし、Inform 6はこれを別途コンパイルしてGlulxまたはZコードのストーリーファイルを生成します。Inform 7は、デフォルトでBlorbファイル(Zコードとオプションの「カバーアート」、そしてインデックス作成用のメタデータを含むアーカイブ)も作成します。Inform 7ツールのフルセットは現在、Mac OS XMicrosoft WindowsLinux(2007年以降)で利用可能です。

2023年現在、Inform 7とそのツールは開発中です。[ 13 ] 2022年4月以降、Inform 7はオープンソースであり、GitHubで開発されています。[ 14 ]

Inform 7は一時期Natural Informという名前でしたが、後にInform 7に改名されました。この古い名前が、Inform 7コンパイラが「NI」と名付けられている理由です。 [ 15 ]

インフォーム 7 IDE

Mac OS X上のInform 7 IDEでソースコードとskeinを表示
Mac OS X上のInform 7 IDEでインデックスマップとトランスクリプトを表示

Inform 7には、Mac OS X、Microsoft Windows、Linux用の統合開発環境(IDE)が付属しています。Mac OS X IDEはAndrew Hunter氏によって開発されました。Microsoft Windows IDEはDavid Kinder氏によって開発されました。Linux IDE(GNOME Informとして知られる)はPhilip Chimento氏によって開発されました。[ 16 ]

Inform 7 IDEには、Inform 7のソースコードを編集するためのテキストエディタが含まれています。他の多くのプログラミングエディタと同様に、構文の強調表示機能を備えています。引用符で囲まれた文字列は単色で表示されます。組織セクション(巻、書籍、章、部、節)の見出しは太字で大きく表示されます。コメントは異なる色で表示され、やや小さく表示されます。

IDEにはZコードインタープリタが組み込まれています。Mac OS X IDEのインタープリタは、Andrew Hunter氏によるZoomインタープリタをベースにしており、Jesse McGrew氏も貢献しています。Microsoft Windows IDEのインタープリタはWinFrotzをベースにしています。

開発者が組み込みインタープリタでゲームをテストする際、IDEの「skein」ビューと「transcript」ビューで進捗状況を追跡できます。skeinビューは、プレイヤーのコマンドを分岐可能なツリーとして追跡します。ツリーのどの分岐もすぐに再実行できるため、開発中のゲームで、ゲームの同じ部分を再度プレイすることなく、異なるパスを再試行できます。パスにはメモを付けたり、解決策としてマークしたりすることもでき、テキストウォークスルーとしてエクスポートできます。一方、transcriptビューは、プレイヤーのコマンドとゲームの応答の両方を追跡します。ゲームからの正しい応答には「blessed」マークを付けることができます。transcriptビューまたはskeinビューを再生すると、blessedバージョンからのバリエーションがハイライト表示され、開発者がエラーを見つけるのに役立ちます。

IDEは開発中のプログラムに様々なインデックスを提供します。コードはクラス階層、従来のIFマップ、書籍のような目次など、様々な形式で表示されます。インデックス内の項目をクリックすると、関連するソースコードにジャンプします。

IDEは、作業用に2つの横並びのペインを表示します。各ペインには、作業中のソースコード、コンパイルの現在のステータス、スケイン、トランスクリプト、ソースコードのインデックス、ゲームの実行バージョン、Inform 7またはインストールされている拡張機能のドキュメント、設定などを表示できます。このIDEのコンセプトは、多数の個別のウィンドウではなく、2つの「見開きページ」を表示することで、著者の原稿集を模倣することです。[ 12 ]

Inform 7 プログラミング言語

注目すべき特徴としては、宣言的なルールベースのプログラミングスタイルへの強い偏りと、オブジェクトの使用方法からその型とプロパティを推論する機能などが挙げられます。例えば、「ジョンは帽子をかぶっています。」という文は、「ジョン」という「人」を作成し(物をかぶることができるのは人だけなので)、さらに「着用可能」プロパティを持つ「物」を作成し(「着用可能」とマークされたオブジェクトだけが着用できるため)、ジョンが帽子をかぶっている状態を設定します。

この言語のもう一つの注目すべき特徴は、オブジェクト間の関連性を追跡する関係を直接サポートしていることです。これには、あるオブジェクトが別のオブジェクトを包含している、あるいはあるオブジェクトが装着されているといった、自動的に提供される関係も含まれますが、開発者は独自の関係を追加することもできます。例えば、人間同士の愛憎を示す関係を追加したり、ゲーム内のどのキャラクターが互いに出会ったかを追跡したりといった関係を追加できます。

Inform 7は高度にドメイン特化型のプログラミング言語であり、Inform 6よりもはるかに高い抽象度と、非常に可読性の高いソースコードを提供します。汎用的な論理式と算術式は自然言語で記述されます(例えば、『The Inform Recipe Book』の「Physics」の例を参照)。[ 17 ]

初期のInform 7では、コンパイラはCFrontがC++とCで行ったのと同様に、コードをInform 6に変換します。[ 15 ]現在のコンパイラ(2022年バージョン10時点)は、さらにコードをCに直接変換してネイティブ実行可能ファイルを作成し、ストーリーを説明する「インデックスミニウェブサイト」を生成することができます。[ 18 ]

例のゲーム

Inform 7の文は完全な文の形をとります。空白行とインデントは、場合によっては構造上重要な意味を持ちます。Inform 7プログラムの基本形式は次のとおりです。

「Hello, World!」by「IF Author」 世界は部屋です。 プレイが始まったら、「Hello, World!」と言います。

以下は、上記の「Hello Deductible」の例を Inform 7 で再実装したものです。これは、すべての Inform 7 コンパイルに自動的に含まれる「The Standard Rules」というライブラリに依存しています。

「IF Author」による「Hello Deductible」 記事の見出しは「インタラクティブな例」です。 リビングルームは部屋です。「快適な家具が備え付けられたリビングルーム」 キッチンはリビングルームの北にあります。 正面玄関はリビングルームの南側にあります。 正面玄関はドアです。正面玄関は閉まっていて、鍵がかかっています。 リビングルームにいる保険のセールスマンは男性です。説明文には「安っぽいポリエステルのスーツを着た保険のセールスマン。あなたと話したがっているようだ」とあります。「男性」とは保険のセールスマンのことだと理解してください。 保険のセールスマンはブリーフケースを持っています。説明には「少し使い古した黒いブリーフケース」とあります。「case」はブリーフケースのことだと 理解してください。 保険の書類はブリーフケースの中に入っています。説明には「何ページにもわたって細かい法律用語が並んでいる」とあります。「書類」「文書」「フォーム」は書類のことだと理解してください。 保険のセールスマンの言うことを聞く代わりに:「セールスマンは生命保険の契約内容について退屈な話をします。彼はブリーフケースから書類を取り出してあなたに渡します。」 と言います。 保険書類をプレーヤーに移送します。 

Inform 7で書かれた注目のゲーム

エミリー・ショート作『ミステリー・ハウス・ポゼスト』(2005年)[19]は、Inform 7初めて一般公開されたゲームである。「ミステリー・ハウス・テイクン・オーバー」プロジェクトの一環としてリリースされた。

2006年3月1日、ショートはさらに3つのゲームのリリースを発表しました。[ 20 ]ブロンズ[ 21 ](伝統的なパズル重視のゲームの例)とダムナティオ・メモリアエ[ 22 ] (受賞歴のあるインフォーム6のゲームサヴォア・フェールの続編)に加え、グラハム・ネルソンのトルティ=アフの遺物[ 23 ](2006年)がリリースされました。2006年4月30日にインフォーム7のパブリックベータが発表された際には、3月1日にリリースされた3つのゲームを含む、中規模から大規模の作品の「動作例」6つがソースコードとともに公開されました。[ 24 ] [ 25 ] [ 26 ]

エミリー・ショートの『Floatpoint』は、インタラクティブフィクションコンペティションで優勝した最初のInform 7ゲームでした。[ 27 ] また、2006年のXYZZYアワードではベストセッティングとベストNPC賞を受賞しました。[ 28 ] ネスプレッソの『Rendition』 (2007年)は、テキストアドベンチャーゲーム形式の政治的な芸術実験です。その悲劇へのアプローチは、計算機学会[ 29 ]ケンブリッジ大学の両方で学術的に議論されました。[ 30 ]ライターのアーロン・A・リードによると、Inform 7のより使いやすい構文とIDEのおかげで、ジェレミー・フリーズは『Violet』 (2008年)を制作することができました。[ 31 ]

参照

さらに読む

インフォーム6
インフォーム7

参考文献

  1. ^ 「Inform v10.1.0およびv10.1.1のリリースノート」 . github.com . 2022年8月26日閲覧
  2. ^ a b「Inform 7 v10.1.0 がオープンソース化」 2022年4月28日. 2022年4月28日閲覧
  3. ^ a b「SPAGインタビュー:グラハム・ネルソンとエミリー・ショート、Inform 7について語る」 SPAG #44アドベンチャーゲーム振興協会(Society for the Promotion of Adventure Games)2006年4月30日。 2015年11月7日閲覧
  4. ^ 「Release Inform 6.42」 . GitHub . 2024年12月4日閲覧
  5. ^ a b c Plotkin, Andrew (2019年4月17日). 「ZILとは何か?」 . Zarf .この例では、I6はCに非常によく似ています。
  6. ^ 「Inform デザイナーズ マニュアル、v4、目次」。www.inform- fiction.org
  7. ^ Turner, Anson (2002年3月14日). 「Inform Platypus release 4」 . 2007年1月4日閲覧
  8. ^ Alan De Smet (2006年3月14日). 「Curses (Interactive Fiction Reviews)」 . 2006年11月1日閲覧
  9. ^「Interactive Fiction Ratings」で評価された1219のゲームのうち、2007年1月4日時点では『Anchorhead』が最も高い評価を得ていた。(「IF Rating Stats」 。 2008年5月11日時点のオリジナルよりアーカイブ。 2007年1月4日閲覧
  10. ^モンフォート、ニック、スチュアート・モールスロップ(2003年8月)「Face It, Tiger, You Just Hit the Jackpot: Reading and Playing Cadre's Varicella」(PDF) 。 2009年11月6日時点のオリジナル(PDF)からアーカイブ。 2009年11月6日閲覧モンフォート、ニック、モールスロップ、スチュアート共著(2003年8月) として出版。 「Face It, Tiger, You Just Hit the Jackpot: Reading and Playing Cadre's Varicella」ファイン・アート・オンライン17 ( 8)ミシシッピ州立大学2007年10月13日時点のオリジナルよりアーカイブ。
  11. ^ “フォトピアは短編小説、水痘は世界” . L'avventura è l'avventura。 2002 年 1 月2007 年1 月 4 日に取得
  12. ^ a b Graham Nelson (2006年4月30日). 「Inform 7: Public Beta」 .ニュースグループrec.arts.int-fiction . Usenet: [email protected] . 2007年1月4日閲覧 
  13. ^エミリー・ショート (2007年2月18日). 「Inform 7: Possible future developments」 .ニュースグループrec.arts.int-fiction . Usenet: [email protected] . 2007年3月30日閲覧  また、 Short, Emily ; Graham Nelson (2007年1月). "Inform 7: Possible future developments"にもアーカイブされています。2008年9月5日時点のオリジナルよりアーカイブ。 2007年3月31日閲覧
  14. ^ Nelson, Graham (2023年1月13日). 「Inform 7 バージョン履歴」 . GitHub .
  15. ^ a b Graham Nelson (2007年3月30日). 「Re: 「Inform 7」は誤った名称です」 .ニュースグループrec.arts.int-fiction . Usenet: [email protected] . 2007年3月30日閲覧 
  16. ^ 「GNOME Inform 7 SourceForge プロジェクト ページ」。2008 年 2 月。– 現在はフィリップ、Chimentoの GitHub に移動しました(2022 年 12 月 27 日)。 "pTomato/inform7-ide"GitHub
  17. ^ 「10.1. ガス」 . ganelson.github.io .
  18. ^ 「Inform 7 コンパイラの構造」 . ganelson.github.io .
  19. ^ 「ミステリーハウスが占拠される」 Turbulence.org 2006年5月4日時点のオリジナルよりアーカイブ。 2007年1月4日閲覧
  20. ^エミリー・ショート(グラハム・ネルソンの依頼により)(2006年3月1日)「Inform 7の3つのゲーム」ニュースグループ:  rec.games.int-fiction。Usenet[email protected]。2007年14日閲覧 
  21. ^ショート、エミリー (2006). 「ブロンズ」. 2007年1月4日閲覧– Interactive Fiction Database経由.
  22. ^ショート、エミリー (2006). 「Damnatio Memoriae」. 2007年1月4日閲覧– Interactive Fiction Database経由。
  23. ^ネルソン、グラハム (2005). 「トルティ=アフの遺物」. 2007年1月4日閲覧– Interactive Fiction Database経由.
  24. ^ショート、エミリー (2006). 「ブロンズ」 . 2007年2月10日時点のオリジナルよりアーカイブ2007年1月4日閲覧– inform-fiction.org経由。
  25. ^ショート、エミリー (2006). 「Damnatio Memoriae」 . 2006年12月12日時点のオリジナルよりアーカイブ2007年1月4日閲覧– inform-fiction.org経由。
  26. ^ネルソン、グラハム (2005). 「トルティ=アフの遺物」 . 2007年2月6日時点のオリジナルよりアーカイブ2007年1月4日閲覧– inform-fiction.org経由。
  27. ^ 「第12回インタラクティブフィクションコンペティション」 2006年. 2007年5月12日閲覧
  28. ^ 「XYZZY Awards: Winning Games of 2006」2007年5月15日時点のオリジナルよりアーカイブ2007年5月12日閲覧。
  29. ^ 「ACM Hypertext 2007 カンファレンス スライド (PDF)」(PDF)
  30. ^ 「ケンブリッジ大学の講義スライド」
  31. ^ Reed, Aaron A. (2021年10月7日). 「2008: Violet」 .テキストゲームの50年. 2026年1月25日閲覧Substack経由.
  32. ^ 「Inform Designer's Manual をダウンロード」 2006年4月1日. 2007年1月4日閲覧
  33. ^ 「Inform デザイナーズマニュアルについて」 2006年4月1日. 2007年1月4日閲覧
  34. ^ 「Inform初心者向けガイドをダウンロード」 2006年4月1日. 2007年1月4日閲覧ファース、ロジャー、ソニア・ケセリッヒ(2004年8月)「The Inform Beginner's Guide: Third Edition」(PDF) 。 2007年1月4日閲覧
  35. ^ Graham Nelson (2006年4月10日). 「自然言語、意味解析、インタラクティブフィクション」(PDF) . 2018年3月14日時点のオリジナル(PDF)からアーカイブ。 2007年1月4日閲覧{{cite journal}}:ジャーナルを引用するには|journal=ヘルプ)が必要です
  • Cloak of Darkness: Inform ( 2016 年 8 月 30 日アーカイブ)は、 Wayback MachineでInform 6 と Inform 7 の両方で実装された同じ短いゲームを紹介し、比較のために他の言語でも紹介します。
  • Inform 6 - 公式サイト
  • Inform 6 FAQ ( 2016 年 10 月 10 日アーカイブ、 Wayback Machineの Roger Firth の IF Pages) には、Inform 6 でのプログラミングに関する詳細が記載されています。
  • Inform 7 - 公式ウェブサイト。
  • Interactive Fiction Archive は、多くの Inform ツール、例、ライブラリ ファイルを提供します。
  • Playfic は、Inform 7 を使用して新しいゲームを作成および共有するための Web ベースのインターフェイスです。
  • Guncho は、 MUDのようなインターフェースと Web ベースのインターフェースを組み合わせた、Inform 7 をベースにしたマルチプレイヤー インタラクティブ フィクション システムです。