アットウィキロゴ

マジックカードデータ仕様説明

by ◆CEeOGi4Lj. (2015/4/4)


ここではマジックの仕様について説明します。
マジックに於いても以前説明したバニラモンスターと同じくJSON形式のデータとして扱います。
まずはマジックのカードデータのパラメータを見てみましょう。

【図1.マジックカードのデータ構造】
{
   "CardType": "magic",
   "ID": 2XXXX,
   "Name": "",
   "COST": ,
   "Range": "0000000000002000000000000",
   "Effect": [],
   "FT": ""
}

次に各パラメータについて説明していきます。

CardType : カードの種別(バニラモンスター、マジック、効果モンスター)。マジックにおいてはここには "magic" という値が入ります。

ID : カードNO。マジックのカードNOは先頭桁が"2"になっているので"2XXXX"といった5桁の値が入ります。

Name : カードの名称が入ります。

COST : カードのプレイコストが入ります。

Range : カード効果の適用範囲が入ります。範囲の書き方は以前モンスターのデータ入力で説明したものと同じです。

FT : フレーバーテキストが入ります。

Effect : カードの効果が入ります。マジックにおいて一番重要なところと言えますね。
この"Effect"パラメータは上で説明した"CardType"や"ID"などと違い、「配列」となっており、ここには1個~複数個の「要素」が入ります。

【図2."Effect"データ構造1】
"Effect":[
 {処理0},
 {処理1},
 {処理2},
 .....
 {処理x}
]

簡単に表すとこのようなデータ構造になっております。
上から順に 処理0→処理1→処理2→...→処理x と実行していき、効果を再現します。


大体のイメージはできたかと思います。では"Effect"の要素、上の図2中の "Effect"の要素、{処理1}の中身がどうなっているかみてみましょう。

【図3."Effect"の要素{処理}のデータ構造】
{
   "scope": "",
   "execute": "",
   "process": []
}

これらのパラメータについて説明していきます。

scope : 日本語に訳すと「視野」などに当たります。ここではどこに着目した処理かを定義します。
例えば"range"(効果範囲)や"board"(フィールド全体)、"player"(プレイヤー)などの値が入ります。詳しくは後述していきます。

exectute : 処理がいつ実行されるかを定義します。大抵の場合、発動後すぐに処理される効果になるので"immediate"という値が入ります。

process : 日本語に訳すと「過程」といった意味です。このパラメータも「配列」になっており、この処理が遂行されるための1個~複数個の要素 {過程} が入ります。

【図4 "process"データ構造】
"process":[
 {過程0},
 {過程1},
 .....
 {過程x}
]
※詳しく後述しますが、"process"の要素{過程}は必ずしも上から順次にすべて実行されるとは限りません。



ここまでをまとめてもう少し詳しい"Effect"の構造をみてみましょう。

【図5."Effect"データ構造2】
"Effect”:[
    {
        "scope": "",
        "execute": "",
        "process”:[
              {過程0},
              {過程1},
              ….
              {過程x}
         ]
    },
    {
        "scope": "",
        "execute": "",
        "process”:[
              {過程0},
              {過程1},
              ….
              {過程x}
         ]
    }, 
 .....
    {
        "scope": "",
        "execute": "",
        "process”:[
              {過程0},
              {過程1},
              ….
              {過程x}
         ]
    }, 
]

さてここで一旦、マジック「空調どうだろう?」の効果を例に"Effect"のデータ構造がどういう風に書かれているかを簡単にみてみましょう。

【図6.「空調どうだろう?」の"Effect"データ構造1】
"Effect”:[
    {
        "scope": "player", ←プレイヤーを対象
        "execute": "immediate", ←発動後すぐに実行
        "process”:[
              {あなたに3ダメージ与える}
         ]
    },
    {
        "scope": "range", ←効果範囲のモンスターを対象
        "execute": "immediate", ←発動後すぐに実行
        "process”:[
              {タップする},
              {-1/+0の修正を与える}
         ]
    }
]

次に"process"の要素(以下 {過程} とする)について説明していきます。
「空調どうだろう?」中の"process"における{あなたに3ダメージ与える}等も含めて、どのように記述されているか完成形をみてみましょう。

"Effect": [
       {
           "scope": "player", ←プレイヤーを対象
           "execute": "immediate", ←発動後すぐに実行
           "process": [
               {
                   "do": "alterValue", ←パラメータを修正する
                   "target": "me", ←自分(発動したプレイヤー)を対象
                   "param": "life", ←修正するパラメータ
                   "val": "-3", ←修正値
                   "next": "-1" ←次に実行される{過程}
               }
           ]
       },
       {
           "scope": "range", ←範囲内のモンスターを対象
           "execute": "immediate", ←発動後すぐに実行
           "process": [
               {
                   "do": "switch", ←タップ状態、コントローラを切り替えるときに使う
                   "param": "tapped", ←切り替えるパラメータ
                   "val": "true", ←切り替える値
                   "next": "1" ←次に実行される{過程}
               },
               {
                   "do": "alterValue", ←パラメータを修正する
                   "param": "atk", ←修正するパラメータ
                   "val": "-1", ←修正する値
                   "next": "-1" ←次に実行される {過程}
               }
           ]
       }
   ]

(つづく)
また今度続き書くからちょっとまって

タグ:

+ タグ編集
  • タグ:
最終更新:2015年04月04日 00:14