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タグ
シーン、カット、選択後の次の状態を示すタグ。
内容的にはカンマで区切られ、「
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