ADVゲームのシナリオをXMLで記述する

どういうタグが必要か考えてみる訳だが、とりあえず物語をどうとらえるかで分かれてくる。
まずは大括りで有るところのstoryタグで、その中に複数のシーンが有るのでシーンごとにsceneタグで
括る。さらにシーンはカットに分かれているのでcutタグで分けられる。それぞれには当然のように番号が振られる訳でnumberタグも存在する。
さて、この段階でまとめると以下の通り

<story>
 <title>チラシの裏</title>
 <scene>
  <number>01</number>
  <cut>
   <number>01</number>
  </cut>
  <cut>
   <number>02</number>
  </cut>
  <cut>
   <number>03</number>
  </cut>
 </scene>
 <scene>
  <number>02</number>
    :
 </scene>
 <scene>
  <number>03</number>
    :
 </scene>
    :
</story>

こんなもんかな?


numberタグについては、シーンとカットで区別を付けるために、別タグを用意しなければいけないかもしれない。
で、さらに細かい部分を掘り下げる。特にcutタグ以下に細かい処理が必要となる(以下続く)

その前に、nametitleタグ

各括りの中にnametitleタグで示される部分が必要。
storyタグ直下の物は、物語の名称だし、sceneタグ直下はシーン名になる、もちろんcutタグ直下にも置ける。
シーンの切り替わり、カットの切り替わりでこのnametitleタグに指定されている文章が、表示される様な仕組みを作るべきだろう。

transitionタグ

sceneタグ、cutタグで試用するタグで、画面を切り替える際の効果の指定に使われる。

BGMタグ

シーン、またはカットが切り替わった際に、流すBGMのファイル名を指定するタグ

linesタグ、pageタグ

linesタグは、cutタグ配下で使われる台詞を記述するタグ。但し、台詞が長い場合に、複数に分割する事が出来る様に、linesタグ配下に台詞を分割するpageタグが存在する。複数のページタグが存在する場合は、ページを切り替えて画面表示を行う。

waitタグ

linesタグの直下に、このタグが存在する場合、表記された時間(ms)で1ページ表示ごとに、waitをかけて、自動でページ送りをする。
0が指定された場合、またはこのタグが省略された場合は、タップされるまでwaitする。

selectタグ、elementタグ

linesタグ内で使用する選択肢タグ
次に記述するgotoタグ、transition、BGMタグなどを配下に置くことが出来る。

<select>
 <element>
  <number>1</number>
  <item>選択肢1</item>
  <transition>fadeout</transition>
  <goto>2,1</goto>
 </element>
 <element>
  <number>2</number>
  <item>選択肢2</item>
  <BGM>bgm02.caf</BGM>
 </element>
 <element>
  <number>3</number>
  <item>選択肢3</item>
  <goto>9,1</goto>
 </element>
</select>

こんな感じ、細かい部分はさらに以下に説明。

gotoタグ

シーン、カット、選択後の次の状態を示すタグ。
内容的にはカンマで区切られ、「,」を意味し、該当のscene番号、cut番号へ処理が移る。

flagタグ・statusタグ

まさに外道!
フラグのオンオフを担当するタグ。フラグの番号を指定するnumberタグと、ON/OFFを指定するstatusタグがある。

<flag>
  <number>3</number>
  <status>ON</status>
</flag>

判定タグ

ifタグ、thenタグ、elseタグで構成され、cutタグ内で使用される。

<if>
 <item>flag3</item>
 <condition>ON</condition>
 <then>
  <goto>9,1</goto>
 </then>
 <else>
  <BGM>bgm02.caf</BGM>
  <goto>4,1</goto>
 </else>
</if>

えーと…

ここまで考えて、各タグの入れ子状態に自信が持てなくなって来た…w
てか、この構造じゃダメじゃないかな?w、教えて!XMLの偉い人!w