サウンドノベルプレーヤー 「のべ〜る」

【ゾウリムシでもわかるサウンドノベル制作講座】



■ 第08回:応用編C イベントフラグと分岐

くににん「今回は、前回の続きで分岐についてだ」
フィー「あれ? のべ〜るでは選択処理って3択しかできないんじゃ・・・」
くににん「選択処理じゃない。分岐だよ」
フィー「はにゃ?????」
くににん「こういう状況を想像してごらん。暗い洞窟に入って、宝物を取ってくる話を
サウンドノベルで作ったとする。途中、分かれ道があったりモンスターに出会
って謎々をだされたり・・・とにかくいくつもの選択の末に宝箱のある部屋にた
どりつく」
フィー「はい」
くににん「ところがプレーヤーは選択を誤って、宝物庫ではなくただの物置きに入って
しまったんだ。そして目的の "黄金の剣" ではなく、ハズレアイテムの "キム
チの壷" を持ち帰ってしまった。」
フィー「・・・・なんだかすごいシナリオですね」
くににん「まあ内容の正当性はこの際どうでもいい。重要なのは物語の最後だよ。
勇者達の持ち帰った宝物に応じて、王様のリアクションを変えたいとき、
どうすればいいと思う?」
フィー「えーと・・・洞窟のなかでの選択処理は、とっくの昔に終わってしまっていま
すよね。そうすると、なにか主人公の選択の結果をメモしておいて、あとから
それを確かめられる仕組みが必要ですよね」
くににん「そう。それが、イベントフラグだ」
フィー「フラグって・・・あの "旗" のFLAG ですか」
くににん「そう。語源は手旗信号の旗だ。これを大量に用意しておいて、○○の町に
行った、△△と話をした、××を手に入れた・・・など、ストーリー上必要な
条件が整ったときに順次ONしていくのさ。そしてあとで必要になったときに、
フラグの何番がONだから条件はクリアしている・・・という判断につかう」
フィー「のべ〜るでは、イベントフラグはいくつ使えるんですか」
くににん「0番〜255番の256個が使える。初期値はすべてOFFだ。使い方は
↓以下のような要領になる。」

【イベントフラグn番をONにする】
#flag_on n


【イベントフラグn番をOFFにする】
#flag_off n


【イベントフラグn番の値に応じて処理を分ける】

#if_flag n {
フラグがONの場合の処理
/
フラグがOFFの場合の処理
}

※n = 0〜255

フィー「ストーリーの分かれ道というと選択肢を選ぶところですから、フラグは選択コマ
ンドの中でONにしたりOFFにしたりするわけですね」
くににん「そうそう」
フィー「でもフラグって番号だけですよね。何番のフラグが何を意味しているかちゃんと
覚えていないと大変そうです。」
くににん「それくらいは、ノベル作者に管理してもらおう。単純な表を作れば済むことだし、
作者さえ把握していれば読者には無関係なことだからね。それはともかく、実際
のスクリプト例を↓に示そう。こんなふうに使うといい。」


*TOP:
王様「おお、勇者よ!#w 細かいことは省略するが、洞窟から
宝剣を取ってきてくれ」#w ;
勇者「いえっさー」#w ;
;
さて途中の冒険は省略(爆)#w ;
;
*AAA:
勇者の目の前に、宝剣とキムチの壷がある。#w どちらを持ち帰ろう?
#select3 {
宝剣を持ち帰る
キムチの壷を持ち帰る
とりあえず踊る
/
勇者は、宝剣を持ち帰ることにした。#w
#flag_on 1
/
勇者は、キムチの壷を持ち帰ることにした。#w
/
勇者は、とりあえず踊ってみた。#w
…しかしこんなところで踊っても魂の充足は得られなかった。#w
もうすこし真面目になったほうが良さそうだ。#w
#page
#jump *AAA:
}
#page
さて帰路もすっぱりと省略(^0^)#w ;
;
王様「おお、勇者よ!#w よくぞ戻った!」#w ;
勇者「約束の品にございます。ささ、これを」#w ;
#if_flag 1 {
王様「うむ、たしかに宝剣じゃ!#w でかした!」#w
/
#jump *BAD_END:
}
;
こうして、勇者はさらに名声を高めましたとさ♪;
;
【めでたしめでたし】
#halt

*BAD_END:
王様「ばか者、誰がキムチの壷を持ち帰れと命じたか!#w
逝ってよし!」#w ;
;
【BAD END】

#halt




フィー「ところで、イベントフラグが足りなくなるということはないでしょうか」
くににん「256個もフラグが使えれば、中規模以上のRPGに相当するシナリオ分量で
ないと、フラグを使い切るような事態にはならないよ。たとえば、市販ゲームの
攻略本などでよく攻略のフローチャートが乗っているだろう? あれで主要な分
岐がいくつあるか数えてごらん。」
フィー「そういえば、まじまじと数えたことなんてありませんでした。」
くににん「足りなくなるくらいの力作を作る猛者が登場したら、フラグの最大数を増やして
再コンパイルするくらいのサービスはするよ(笑)」
フィー「あはは。ということで、今回はここまでですぅ〜」




【今回のまとめ】

【イベントフラグn番をONにする】

#flag_on n

【イベントフラグn番をOFFにする】

#flag_off n

【イベントフラグn番の値に応じて処理を分ける】

#if_flag n {
フラグがONの場合の処理
/
フラグがOFFの場合の処理
}

※n = 0〜255