設計を見直そう4、今を表す情報(章・日時・進捗・状態)。

前回はフラグでなくても状態管理ができそうだよね、というお話まで進みました。
本当に大丈夫?
やっぱりフラグいらなくない?的な疑問も残りました。

ここで用語を整理してみます。

フラグとは。
2つの状態を持つ「名前」を持った状態値。
ONやOFF、真や偽、未達や達成、などの状態を表す値。

レベルとは。
加算方向にのみ変化する「名前」を持った進捗値。
0またはそれ以上からスタートし、上限まで上がる。
現在値は過去の値の状態を全て併せ持つ。

フラグとレベルという呼び方ですと、ちょっと広範囲な意味になってしまいますので、
フラグはイベント・フラグと呼び、レベルはイベント・レベルと今後は呼び分けます。

状態を指しているイベント・フラグ。
進捗を指しているイベント・レベル。

イベント・フラグは「アイテムを拾った・アイテムを拾っていない」であったり、「Aさんと会話をした・Aさんと会話をしていない」であったり。
イメージしやすいですよね。
名前に対して2つの状態を定義して、どちらの状態であるかを切り替えれば済みます。
比較する際も、どちらの状態であるのかを判断すればよいです。

イベント・レベルはちょっと捉えにくいかな?
例えば、挨拶をしたことがあるかでNPCの会話が変化するのだとしたら、お店ごとにイベント・レベルを設けます。
会話をするごとにカウンタを上げて、一定数まであがったら止める。
ストーリーが進んだら、イベント・レベルの上限をあげるような管理になるでしょうか。

例で書くとこんな感じかな?

  • 武器屋のイベント・レベル0 「いらっしゃい、みない顔だね、旅のひとかい?」
  • 武器屋のイベント・レベル1 「いらっしゃい、今日も平和だな、何か買っていってくれよ」
  • 武器屋のイベント・レベル2 「いらっしゃい、帝国が攻めてくるって話ほんとうかねぇ」
  • 武器屋のイベント・レベル3 「いらっしゃい、もうこの国もダメかも知れねぇな・・」

 
ゲーム・スタート時は武器屋のイベント・レベルは0でスタート。
プレイヤーが店に訪れると+1。
序盤の内は武器屋のイベント・レベル上限は1に固定。
中盤で帝国軍が攻めてくるお話になったら武器屋のイベント・レベル上限を2に固定。
終盤で国が滅びそうなお話になったら器屋のイベント・レベル上限を3に固定。
のような感じ?(帝国ってフレーズ憧れちゃうよね!)

これにイベント・フラグを合わせて。
例えば、武器屋のイベント・レベルが3の時に、反乱軍の証のイベント・フラグがONなら「こんなこともあろうかとスゴイ武器を作っていた」イベント発生みたいに使うのかな?

なんとなく、ゲーム的な流れには使えそう。

むー?
でもこの形式の場合、プレイヤーが武器屋に一度も訪れなかったらどうなるの?って心配が出てきます。
例えば終盤で国が滅びそうになっているのに、まだ一度も武器屋に訪れてないプレイヤーがいた場合。
プレイヤーはレベル0から順番に会話をすることになりますので、ちょっと時系列に寝ぼけたことになりそう。
最悪もう済んだ事件のことを口走ったり、時系列のつじつまが合わなくなることもありそうです。

かといって、あまり当たり障りのないことしか会話できないのも味気ないですよね。それこそ会話しなくていいよってなっちゃいますし。

この件で何が問題になっているのかを考えると、武器屋のイベント・レベルには時間の概念がないこと。
だから、プレイヤーが訪れるまで時間が止まったままになってしまう。
現実世界ではそんなことってないじゃないですか。
じぶんがそこに行っても、行かなくても、時間は経過しますよね。
つまり、プレイヤーが介在しなくても時間を進める、という手法が1つの解決策として考えられます。

仕組み上どうやって実現するか、ですが。
うーん。
まず時間に値するものが1つ必要になりますよね。
それは世界に1つの時間を指しますので、2つめの時間は存在しません。
別途時間制限を設ける必要がある場合は、個別にイベント・レベルなどで管理させます。

時間というよりも日時の方が使いやすいかな?
日時が経過した場合、イベント・レベルを自動的に調整する機能があると良いかもしれません。
RPGのイメージですと、例えば宿屋で休んだら日付が更新されて(〇ィザードリィみたいな感じ?)、各イベント・レベルの調整が行われる。
毎回イベント・レベルを更新する必要があるというわけではなくて、敷居値を越えたら一定値に変更する、的な使い方になるのかなと思います。

ちなみにこの場合、日時を更新するのは宿屋での宿泊というルールに。
日付が何によって進むのか?もゲームのルール上キーになるのかな。
NPCとの会話であったり、あるイベントであったり、戦闘回数であったり。

いやでも、あまり日付で世界が支配されてしまうと、モタモタしてたら世紀末決戦になっちゃいそう。
ぬう。
それなんて〇マンシング・サガ?
もうちょっとゆとりのあるゲームにしたいひとは困りそうだ。
(主にトワナナさんがこまるよ!!)

とすると、日時とは別に世界の流れを刻むものが必要。
カウンタを刻むのはそれぞれに任せればいいとして、名前どうしましょう。
ドラマ風にシーズン(Season)?、アクション・ゲーム風にステージ(Stage)?、物語風にチャプター(Chapter)?、舞台風にシーン(Scene)?
区分と捉えてセクション(Section)とかもあり?
うーんうーん。
パっと見て想像できる方がよいと思いますので、ひとまず物語風にチャプターと呼びます。

もう一回、ここで整理し直します。
(統一した方がよいので、日時も英語表記にしておきます)

イベント・フラグとは。
2つの状態を持つ「名前」を持った状態値。
ONやOFF、真や偽、未満や達成、などの状態を表す値。

イベント・レベルとは。
加算方向にのみ変化する「名前」を持った進捗値。
現在値と、上限値の2つの値を持つ。
現在値は0またはそれ以上からスタートし、上限値まで上がる。
概念上、現在値は過去の値の状態を全て併せ持つ。

デート・タイムとは。
世界に1つの時間を指す日時情報。
2つ目の時間は存在しない。必要な場合はイベント・レベルなどを使用して代用。
NPCとの会話であったり、あるイベントであったり、戦闘回数であったり、ゲームで決められた出来事ごとに日付は更新。
日付が更新されるごとに、必要であればイベント・レベルの調整が行われる。

チャプターとは。
日時とは別に世界の流れを刻む値。
2つ目のチャプターは存在しない。
物語の区切りを指し、ゲーム内で特定の条件を満たした際に更新される。
特定の条件にはデート・タイム、イベント・レベル、イベント・フラグを判定に用いる。
チャプターが更新されるごとに、必要であればイベント・レベルの調整、およびデート・タイムの更新が行われる。

忘れ物っぽくなっていますが、イベント・フラグ必要なの?必要ないの?の話題が解決してませんでしたよね。

今回デート・タイムとチャプターを追加しました。
この2つはどちらも時間を表しています。
過去から現在、現在から未来のことをスケジュールする要素になり、固定要素です。
対してイベント・レベルとイベント・フラグも値の意味は規定はされていますが、値を変化させるのはプレイヤーの行動次第です。
つまり、この2つは可変要素になります。

イベント・レベルでイベント・フラグ相当の役割を代用はできますが、進捗値と状態値という要素は分けておいた方が扱いやすいように思いました。

プログラム上は1つである方が管理が楽なのですが(身も蓋もない)、ルールを作るひとにとっては分かれていた方が感じ取りやすいように思うことと、ゲーム・システムとして表示をわける方がルール上の広がりを持たせられるかもしれない気がしたのです。

例えばイベント・レベルやイベント・フラグを出力シートに表示できるようにすることで、プレイヤーはより状況を深く理解でき、戦略を立てる楽しさも広がります。
わたし個人はフラグ情報などを隠さない方が面白いゲームになると思うのですが、それでもイベント・フラグの情報は伏せたいケースはあるかも知れませんし、逆にイベント・レベルだけ公開を伏せたいケースもあるかも知れません。
そこはルール・シートを書かれる方に選択権を委ねたいなと思います。
あいや、イベント・フラグやイベント・レベル個別に表示・非表示を決めたくなるのかな?む。

まぁ、そのあたりは実装負担で検討するということで。
最後に。場所、ロケーション(Location)を加えれば、ゲームを規定する状態管理できるようになるのかな?
 
 
次回は、今回のまとめを書いてみて、ルール・シートのフォーマットへ進もう。
できるだけ簡単なフォーマットにしたいな。

・・・あれ?ちょっと待って。
戦闘パートって、どうするの?