【ウディタ】Wolf RPG Editorでノベルゲームを作ってみよう!その3(フラグ管理)
やぁ、あひぁだよ。誰も見てないかなと思って更新怠ってたら意外とアクセス来て申し訳なかったので続きを書くことに。(ゴメンネ!)しかも日数空きすぎて突然偉そうな口調になってるのもすみません。
今回はノベルゲームのキモとも言えるフラグ管理について説明するよ。
まず…フラグとは?
ノベルゲーム作ろうと思ってるなら多分知ってると思うんだけど、一応。フラグとは、特定の条件に入るためのオンオフスイッチみたいなもので、ノベルゲームでは分岐とかに使われる。Aちゃんを攻略するのに、好きとかキライとか、そういうことを伝えてたら話が変わると思うんだけど、その為に必要なもの。
ではウディタでフラグを実装していこう。ウディタでは、セルフ変数・通常変数を利用する。
適当に画面をダブルクリックしてイベントを作り、3.変数操作というものを選択する。…と、ここで一旦変数についての説明をしよう。
変数とは?(通常変数・セルフ変数の違いまで)
変数とは、数学でいうような、xとかyとかそういう、どんな値を入れるかで変わってくるモノ。この値によって、今回のノベルゲームでは複雑なフラグを作成することが出来る。たとえば、『「彼女のキライ度」という変数が3になったら、次のシーンの彼女が変化する』みたいな感じ。なんか分かんないな、と思ってもとりあえずいろんな条件を作るのに必要なモノと考えて貰って良い。
次に通常変数とセルフ変数について。(言語系統を触っている人なら分かると思いますが、グローバル変数か否かの違いです)通常変数とは、このゲームじたい全部が範囲で、セルフ変数はそのイベントのみの範囲。(分かった人は次に行ってね)すなわち、マップ(この講座ではシーンとしての利用)のみで完結させるならばセルフ変数、シーンから別シーンに変数を引き継ぎたいのならば通常変数を利用しよう。
それぞれのメリット・デメリット
セルフ変数
メリット
・沢山ある
・イベントごとに分けられているのでごちゃまぜにならない
デメリット
・引き渡しができない(そのシーンだけでしか使えない)
通常変数
メリット
・全体に共通するので扱いやすい
デメリット
・共通してしまうので意図せぬ変数操作などによるミスが響きやすい
ちょっと知ってる人向け
ここで、多少知ってる人なら「引数使えばいいんじゃ?」となるんだけども、筆者の調べた限りだとウディタは無いようなので、(通常変数以外はマップを変えるとたとえ引き渡し動作をしたとしても初期化されてしまうようす)通常変数を使おう。一応マップ内で完結させるのならそれっぽいのはある。
※追記 コモンセルフ変数は引き渡しが出来ます、ご指摘ありがとうございます!
それではやっと本題に入るよ。
フラグを作ろう!
先程説明したとおり、そのマップ(シーン)のみで完結させるならばセルフ変数を利用する。まずサンプルとして、『棒人間子ちゃんに「好き?」と聞かれ、「好き」と答えると喜び、「嫌い」と答えると悲しむ』というものを作ってみよう。まず文章を作成し、選択肢を挿入しよう。
ここで気を付けておきたいのが、「キャンセル不能」にしておくこと。「分岐1」「別分岐」などをオンにしていると、キャンセルボタンを押された際別の挙動になってしまう。キャンセルで特別な操作を作らない限りは不能にしておこう。
次に今回のお題である変数操作。ここではセルフ変数(このイベント:Self0)を使用している。(ちなみにすべての変数の初期値は0)右上を「+=」(へんすう=〇+〇=という意味)にし、真ん中のところを1にしよう。これで、「イベントSelf0に1という値がプラスされた」という意味になる。追記として、「=」はその値にする(へんすう=〇)という意味である。ちなみに囲った円の隣にも同じようなものがあるが、ソコでもOK。何で二つあるの?とかは多少複雑な変数操作をする時に使う程度なので今は理解しなくても大丈夫。(後述)
次に条件(変数)。
ここで、最初に言った「好きと答えたとき」と「嫌いと答えたとき」での条件を作ろう。先程の変数操作で、「好き」と答えた場合は+1、「嫌い」と答えた場合は-1とした。ここでその変数によって棒人間子ちゃんの反応を分けている。
まとめるとこんな感じ。これでフラグが完成!
もうこれで理解出来た人ならば完全にフラグの作成が出来るので、ここからの文章はまだ分からない人向け。今回変数を操作したことで、スキ、かキライ、かの分岐を作成したが、コレを応用することによって何が作れるか、の一例を示しておく。
・一度行ったところに行けなくする
変数を操作することで、「0のときだけ行ける、一度いくと1になる」といったふうにすると、一度行くとその場所に行けなくすることが出来る。同じような操作として、「一度選ぶとその選択肢が消える」なども出来る。
・何度も同じことをすると相手の反応が変わる
変数を操作することで、「その行為をするごとに1プラスされていき、5になると相手が怒る」といったものが作れる。
ちなみに念のために言っておくが、別のフラグを作りたいのならセルフ変数は別のものにしよう。
通常変数でフラグ管理
さて、ここまでは「そのマップ(シーン)だけのフラグ」を説明した。では、ゲームを通して最後にA子ちゃんに告白されるには5回好感度を上げないといけない、などとなるとセルフ変数だけでは範疇を超えており作ることが出来ない。ここで通常変数の出番である。
通常変数の名前設定
通常変数はその全体に共通する変数という特性上、名前を付けないと混乱してしまい危険。丸の下にある「データ数の設定」でデータの数を増やすことも出来る(ただし多用は混乱のもと。セルフ変数で完結できるならばそちらを利用すべきである。)
ちなみに例として過去作成した自分の操作を貼っておく。これまでの行動で募った不審度で、ところどころの文章が変化する、という操作。通常変数を利用することにより、マップ(シーン)が変わっても変数が引き継がれるため、前述の告白シーンなどを作ることが出来るようになる。
以上、今回はフラグの説明でした。もうすでにコレだけでノベルゲームは作れます。
発展したいヒト向け
ここではプラスアルファで変数操作・変数の説明をしていこう。
Ev:●●について
画像の通り、「Ev:0」なるものがある。コレは「Ev0の変数」という意味になる。Evって何ぞやという話なのだが、
コレ。
筆者は利用したことが無いが、これによってマップ内での変数の共有が出来、通常変数を使わなくても変数を共有することが出来るようになる。しかし今回の講座ではこの四角だけだとどれがどれだか分からなくなってしまうので利用は控えた。RPGゲームなどで重宝される。
変数操作のもうひとつの欄について
先程の変数操作では、「A=A+1」という動作を行った。しかし、「A=B+1」としたい場合はどうすれば良いか?その時に使うのがもうひとつの欄。この欄に限らず、ウディタは特定の数字を入れることによって変数を呼び出すことが出来る。
数値クソデカ!?と思われるかもしれないが、普通の値と混合しないためである。どれがどれなの?とかは開発者様の作成した一覧を参照されたし。
ところで、先程説明したセルフ変数の使い方で、今回のサンプルのように話がカンタンなものは、選択肢を選んだあとに反応を書き、変数をプラス、とすることをオススメする。これにより、彼女が反応したあと、セルフ変数が変化する、といった動作になる。(これらはプログラムを簡単にしたのではなく、完全に意味が変わった動作になっています!)どっちが良いとかは場合によりけりなので一概には言えない。ちょっと混乱させる言い方で申し訳ない。
今回はここまで。といっても残りは追加要素とかセーブロードとかそんなです。気長に待ってね。