Translate

2014年2月23日日曜日

変数ってなーにー?(サウンドノベルゲーム作る人向け)

 変数は、プログラミング用語です。しかしかなり基本的な用語なので、プログラマーではない人も、ゲーム制作に携わるなら覚えておいたほうが良いと思います。特に、シナリオライターさんがこの概念を理解していないと、プログラマーさんがとても困ることになります。



 ノベルゲームにおいて変数は、好感度として扱うことが多いです。よって、「変数は好感度のようなものだ」と理解してもらうのが最も手っ取り早いと思います。
 もしくは「フラグ」という言葉の意味がわかる人なら、そのフラグこそが変数です。こちらは「ようなもの」ではなく、完全に同じ語意です。変数=フラグです。

 上の説明で理解できたという人は、もうここから先を読む必要もないと思いますが、理解できなかった人も当然いるでしょうから、もう少し噛み砕いて説明したいと思います。

 例えば、ノベルゲームだと分岐点がありますよね? 一番わかりやすい分岐は、プレイヤーが「はい」を選択したらこっちのルート、「いいえ」を選択したらあっちのルート、という感じの分岐です。

 しかしこのタイプの分岐だけだと、あまり捻りのないシンプルなノベルゲームになりがちです。なぜなら、「はい」が正しい答えなのか、それとも「いいえ」が正しい答えなのかは、その後の話の流れを見ればすぐにバレてしまうからです。

 ゲーム性を追及するなら、簡単にはトゥルーエンドに辿り着けないようにカムフラージュしなくてはいけません。
 つまり、「はい」を選んでも「いいえ」を選んでも、その直後の話の流れはほとんど変わらない。しかし、最後の結末は、その時の選択肢で「はい」を選んでいたらトゥルーエンド、「いいえ」を選んでいたらバッドエンド――という感じの分岐の仕方です。

 これを可能にするのが、変数です。
 具体的に説明しますと……

 ・「はい」を選んだら、「変数」を1にする。「いいえ」を選んだら「変数」を0にする。
 ・最後の分岐点で、「変数」が1ならトゥルーエンドへ、「変数」が0ならバッドエンドへ

 ……ということです。

 なぜ0とか1とか数字で表現するのかと言いますと、最初にも言ったように、変数は好感度として使うことが多いからです。
 好感度が上がる選択肢は、1つとは限りません。仮に10個の選択肢があって、プレイヤーが全て正しいほうを選んだなら、変数(好感度)は10になります。逆に間違い続ければ、0です。
 結末を3通り作るのであれば、「変数」が0~4ならバッドエンド、5~9ならノーマルエンド、10ならトゥルーエンドということもできます。

 このようにしておくと、プレイヤーがトゥルーエンドに辿り着くのは容易ではありません。10個の選択肢全てで正しい答えを選ばないといけないのに、10個の内のどの選択肢を間違えているのかがわからないからです(まるっきり答えがわからないのも良くありませんから、話の中にある程度ヒントを散りばめておくといいでしょう)。



 更に踏み込んで説明しますと、変数は1つではありません。
 もし主人公以外のキャラクターが5人いて、それぞれに好感度を設定したいなら、当然変数も5個必要ということになります。
 5個の変数に関連性を持たせることで、シナリオだけでは表現しきれないリアルな人間関係を表現することもできます。例えば……

―――――――――――――――――――――――――――――――――――――
【穂香】
もういい加減にしてください! 私と椎子ちゃんと、どっちが大事なんですか!?

;選択肢
; 穂香
; 椎子

;「穂香」を選択した場合、変数「穂香好感度」を+1、変数「椎子好感度」を-1、シナリオ002へ
;「椎子」を選択した場合、変数「椎子好感度」を-1、変数「穂香好感度」を+1、シナリオ003へ
―――――――――――――――――――――――――――――――――――――

 ……という感じでしょうか。まあ、実際にシナリオを書く場合はもっと簡略化しますし、ましてや変数だなんて書いたりはしないのですが。

 ところで、こういう変数の使い方をしている時によくある分岐の仕方として、〈最も好感度が高いキャラクターのルートに移る〉というものがあります。
 合理的ではありますが、ここで注意しなくてはいけないのは、好感度が同着1位の場合どうするのか、ということです。さっきの例で行くと、「穂香好感度」が5、「椎子好感度」も5、その他に好感度が5より上のキャラクターはいない、という場合です。これだと穂香ルートに進めばいいのか、椎子ルートに進めばいいのか、わかりませんよね。
 同着ならこちら、という指示を入れておくとか、もしそれが嫌ならば、好感度が同着にならないように選択肢を調整しておかなくてはなりません。



 ここまでは、変数を好感度として使うことばかり書いてきましたが、もちろん好感度以外にも変数は使います。
 例えば、傘を持って家を出たか、傘を持たずに家を出たかとか。
 石ころを蹴飛ばしたか、蹴飛ばさなかったかとか。
 貰ったお菓子を食べたか、食べなかったかとか。
 そういった選択を後々のシナリオに影響させたい場合も、変数を使うことになります。



 変数について、わかっていただけましたか?
 後半は少しややこしいことを書いてしまったので理解するのが難しいかもしれませんが、せめて前半部分だけでも理解していただければ、その知識はきっと、ゲーム作りに活用できると思います。

 それでは、この辺でさようならです。ゲーム制作、がんばってくださいね。





【おまけ】
 乱数、という言葉もあります。これはつまり、選択や変数に関係なく、その時々でランダムに進むルートが決まるという場合に使います。サイコロを振るイメージですね。

0 件のコメント:

コメントを投稿