拡張データマスターへの道 written byさんぴの

ここは、ゲーム「拡張データサンプル」の攻略本ページです。
対応するゲームはこちらから遊べます

  1. 拡張データ
  2. システム設定

拡張データ

只今の拡張データID:0 のJSONデータは以下の通りです。※攻略本の特性上空白が反映されていませんがご了承ください。

{
"1or0":{"":0,"false":0,"true":1},
"TorF":{"":"","0":"","1":true},
"villager1":[
"きゃー!のろいくんに襲われるー!",
"ありがとー!"],
"option1":[
{"name":"[items.0.name]",
"ban":false,"id":0},
{"name":"[items.1.name]",
"ban":false,"id":1},
{"name":"[items.2.name]",
"ban":false,"id":2}]
}

システム設定

基本的にシステムは弄っていませんが、以下の部分のみ変更しています。
・拡張データID:0 のJSONデータをデフォルトから上記の通りに変更
・ストーリーID:0 のストーリー名を空欄から「ストーリー0」に変更
・ストーリーID:1 のストーリー名を空欄から「ストーリー1」に変更
・メニューコマンドに「デバッグ」を追加
・ウィンドウの背景をすべて「なし」に変更

この項目は設定されておりません。
この項目は設定されておりません。
  1. ストーリーに応じたセリフ
  2. 独自のサイズの選択肢ウィンドウ

ストーリーに応じたセリフ

ストーリーに応じたセリフ
素材の使用フリー(無料)
利用方法自由に利用可能
再配布全て可能
利用者数0
ライセンシーPLiCyユーザーページに記載(素材利用登録)

ゆずのセリフは以下の通りです。

[jsons.0.data.villager1.[chapters.chapter_id]]

『jsons.0.data』で拡張データID:0のJSONデータ全体を指定します。
『.villager1』の部分がJSONデータのうち『["きゃー!のろいくんに襲われるー!",
"ありがとー!"]』の部分を指定します。
この指定された部分は配列型ですから、
『jsons.0.data.villager1.0』なら『"きゃー!のろいくんに襲われるー!"』
『jsons.0.data.villager1.1』なら『"ありがとー!"』
が指定されます。
ここで、のろいくんを倒す前はストーリーIDが0、のろいくんを倒した後はストーリーIDが1となっていますから、『chapters.chapter_id』がストーリーIDを表すことを踏まえると、全体のセリフは上のようになります。
この書き方のメリットは、本来はストーリー条件分岐が必要なイベントを、この表記にすることで、セリフイベント一つで済ませられることです。

独自のサイズの選択肢ウィンドウ

独自のサイズの選択肢ウィンドウ 独自のサイズの選択肢ウィンドウ

事前に設定された選択肢の、選択肢ウィンドウの大きさを変えることができます。
自分で作る難易度はそこそこ高いです。


①選択肢の準備
[{"name":"タブレット","ban":false,"id":0},
{"name":"カプセル","ban":false,"id":1},
{"name":"ドラッグ","ban":false,"id":2}]
一つの選択肢に、name(選択肢に表示される名前)とid(選択された時の選択肢のナンバリング)を設定し、それを連想配列にまとめます。これをリストで繋げれば完成です。
高いレベルを狙う人は、アイテム名が変わっても正常に動作する為に、
[{"name":"[items.0.name]","ban":false,"id":0},
{"name":"[items.1.name]","ban":false,"id":1},
{"name":"[items.2.name]","ban":false,"id":2}]
のようにするとよいでしょう。[items.X.name]はアイテム番号Xのアイテム名です。
このリスト全体を「option1」というキーの辞書の値に設定し、その辞書は拡張データID:0のデータ内に保管します。
こうすると、『data.jsons.0.data.option1』で全ての選択肢を参照できます。

②選択肢ウィンドウの準備
好きなサイズのウィンドウを設定しましょう。最初は「JSON利用サンプル」を再編集すると良いでしょう。
・選択肢の設定は「参照データ」を参照したいデータ(この場合は『data.jsons.0.data.option1』)に設定することでできます。「プレビュー用参照データ」も同じものにすることを推奨します。
・「開始条件」を『イベントから呼び出し』にしましょう。でないとイベントからその画面を開けません。
・「ウィンドウ変数0に代入する値」を『このウィンドウの選択内部ID』にしましょう。もちろんウィンドウ変数1や2でも良いですが、今回は0で進めていきます。これで、選ばれた選択肢の、①で設定した選択肢のIDをイベント中に参照できます。

③イベントの設定
イベントの、「ウィンドウを開く」コマンドで、先程設定したウィンドウを開かせるコマンドを作ります。このウィンドウの選択肢IDに応じてウィンドウ変数の値が変わります。
「パラメータを変数に代入」コマンドで、『windows.v.0』すなわちウィンドウ変数0の値を変数0に代入します。その数字を、次のコマンドではアイテム番号として認識させて、アイテムプレゼントコマンドを実行することになります。

この項目は設定されておりません。
  1. 拡張データマスターへの道1 拡張データとは?
  2. 拡張データマスターへの道2 JSONデータとは?
  3. 拡張データマスターへの道3 データの取得

拡張データマスターへの道1 拡張データとは?

拡張データとは、JSON形式(後述)で書かれたデータです。これを利用することで、イベントのコマンドを簡略化できたりするなど、システムを簡単に作ることができるようになります。

拡張データマスターへの道2 JSONデータとは?

JSONデータとは、その名の通り、JSON (JavaScript Object Notation) という形式で書かれたデータです。文字や数字をグループ分けしたり、番号をつけて管理できます。詳細はググった方が詳しいですが、ここでも書き方をGDWで有用なものに限り解説していきます。

まず、原則が2つあります。地味に重要です。
原則1:全てのデータにはダブルクォーテーションをつける
原則2:データ同士の区切りはコンマで行う
(原則1は正確には違いますが、ここで習得する範囲に限っては問題ありません)

さて、データの書き方に入りましょう。
①文字や数字の場合
ただ書くだけですから簡単です。原則1に従うのを忘れずに(数字などの場合は従わなくても良い)。
 例:『"ゆず"』『"すばる"』『"plicy"』『"1.41421356"』『3.14』

ここからがJSONの醍醐味です。①で完成したデータを繋げていきます。
例えば、"ゆず"、"19歳"、"動画配信者"のように、別種のものを繋げたい場合は②を参照してください。"ゆず"、"すばる"、"三波"のように同種のものを繋げたい場合は③を参照してください。

②オブジェクト (別名:辞書または連想配列)
例として、"ゆず"、"19歳"、"動画配信者"の3つのデータを繋げていきます。たったの2ステップで完成します。
(1)それぞれのデータに名前をつけ、名前とデータをコロンで繋ぐ。名前もデータの一種ですから、原則1を適用してください。
例:『"name":"ゆず"』『"age":"19歳"』『"job":"動画配信者"』
名前は半角英数字のみを使ってください。
悪い例:『"名前":"ゆず"』
(2)名前とデータを一纏めにして、コロンで繋ぎ(←原則2)、全体を中括弧で括る。
例:『{"name":"ゆず","age":"19歳","job":"動画配信者"}』
これで完成です。

③配列(別名:リスト)
例として、"ゆず"、"すばる"、"三波"の3つのデータを繋げていきます。配列は簡単です。データをコロンで繋ぎ(←原則2)、全体を大括弧で括るだけです。
例:『["ゆず","すばる","三波"]』
因みに、GDWにおいては上の配列は下のオブジェクトと構造は全く同じです。
『{"0":"ゆず","1":"すばる","2":"三波"}』
名前が0で始まることに注意!1ではありません。

④多重構造
配列のデータや、オブジェクトのデータには配列やオブジェクトを組み込むことができます。下はオブジェクトに配列を組み込んだ例です。こうして複雑になっていくのです…。
例:『{"name":"ゆず","age":"19歳","job":["動画配信者","魔王"]}』
複雑になった場合、コロンの位置で改行すると読みやすくなることがよくあります。
例:『{"name":"ゆず",
"age":"19歳",
"job":["動画配信者",
"魔王"]
}』

参考:③オブジェクトの説明で挙げた「名前」の正式名称は「キー」(あるいは鍵)、コロンの右側に位置するデータを「値」と呼びます。

拡張データマスターへの道3 データの取得

次は作られたデータ全体から必要なものを指定して取得する方法についてです。
ゲーム内でデータを取得する方法は、https://plicy.net/ToolFAQ/GameDesignerWorldの「ゲームデータアドレスについて」を参照してください。と言いたいところですが、拡張データの項目だけ詳細解説します。
拡張データID:0 のJSONデータに以下の内容を書いたと仮定します。
{"name":"ゆず","age":"19歳","job":["動画配信者","魔王"]}

『jsons.0.data』でこのデータ全体を指定できます。この中の一部分だけを指定していきます。例として『19歳』を指定したい場合、『age』という名前がついていますから、『jsons.0.data.age』のようにすればできます。忘れがちな重要ポイントは下の2つです:
・ダブルクォーテーションを外す
・ピリオドで繋ぐ
また別の例として、『魔王』を指定してみましょう。先程と同様に、『jsons.0.data.job』で『["動画配信者","魔王"]』全体を指定できますね。この配列のうち、『動画配信者』が0番目(1番目ではありません!)、『魔王』が1番目(2番目ではありません!)ですから、先ほどと合わせて『jsons.0.data.job.1』とすればできます。

尚、ゲームデータアドレス同士の多重構造も可能です。これを使いこなせるようになると大変便利です。ただし、多重構造やセリフ内での使用にはコツが必要です。いつか更新します。

掲示板