Unityと吉里吉里でSLGとかRPGを作るブログ

今回は、イベントについての話をしたいと思います。
イベント機能については、過去の記事でも紹介しています。
しかし、過去記事の読みにくさにヘキヘキしてしまったので、1から説明して行こうと思います。
このイベント制御は、姫百合にて実際にしようしており、1つ例として読んで頂ければと幸いです。


■イベントとは

まずはイベントについて定義してみましょう。
SLGゲームにおいてイベントと言えば、会話シーンです。
会話シーンは、そのままずばり、戦闘の前後、ターンの初め、敵軍を滅ぼした時などに発生する会話シーンです。


■イベントの制御方法

姫百合ではイベントを、「タイミング」、「フラグ」、「否定フラグ」、「実行されるイベントファイル」の4つで制御しています。

●タイミング
イベントが実行されるタイミングです。先程の例にあった様に戦闘の前後、ターンの頭等です。

●フラグ
そのままずばり、フラグですね。
このフラグが全てONになっている時にイベントを実行します。

●否定フラグ
フラグと逆の作用をするフラグです。
このフラグがONの場合、イベントは実行されません。
複数のタイミングで発生するけど、何度も起こらないイベントなどの制御に使います。
例えば、肉まんを3人のヒロインの誰かにあげるとします。
1人にあげた場合、他のヒロインにはあげられない様にしたい場合、「肉まんあげたフラグ」を全ての肉まんイベントの否定フラグに設定します。
誰かに肉まんが上げた場合は、このフラグがONになり、他の2つのイベントは起こらない訳です。

●実行されるイベントファイル
姫百合では、イベントは1つ1つ全てファイルにしていました。
これは中々のもので、デバック中もログにイベントファイル名が出るので、どのイベントが実行されたか非常に分かり易かったです。

■システム化

次にゲームシステムにどの様に取り込むかを解説します。
まず、各データはCSV形式で保存し、以下の様なテーブル化を行います。
イベントテーブル

次に、各タイミングでイベントチェックを行います。
一番分かりやすい所で、ターン頭を考えてみましょう。
ターン変更が終了した段階で、イベントチェックを行います。上の図で言うと、タイミングがT_HEDのデータを参照します。
この段階で、フラグ1,2,3がONになっているとすると、「イベント1」、「イベント3」が合致します。
複数取れた場合は、上のデータを優先します。
つまり、実行されるイベントは「イベント1」です。
イベント1を実行したら、実行フラグをONにします。これで次からはこのイベントは実行されません。
特に条件が変わらなければ、次のターン頭では「イベント3」が実行される訳です。
イベント実行の流れを図にすると以下の形になります。
図


■こぼれ話1

例題にも出たターン頭のイベント実行ですが、姫百合ではこのタイミングで実行されるイベントがかなりの数あります。
ターン頭のイベントは、それを見たプレイヤーが最も自由に動けるイベントです、何せターンの行動はまだ何もしてないのですから。
また、戦闘の合間と違って、多少長いイベントでもゲームの邪魔にならないと思い多用してしまいました。

この事から、重要イベントが多いターン頭のイベントですが、同時に敵を倒した後に特定のアイテムが手に入るサブ的なイベントもここで処理しています。
この為、ゲームの進みによっては、倒して手に入るはずのアイテムが、重要イベントに押されて中々手に入らないと言った事象がおこってしまいました。
ターン頭のイベントは、メインとサブで2つ作っておけば良かったなと、今になって思います。

ただ、サブイベントが重要イベントの無い、空いているターンに発生する事で、じっくり進むタイプのプレイヤーも飽きさせないと言うメリットもあり難しい所です。


■姫百合におけるイベント

●イベント数
姫百合を作る時、イベントの数については相当悩みました。
SLGゲームである姫百合は、イベントが無くてもゲームとして成立します。
実際問題、必要なイベントと言うのは、1つの敵を滅亡させたら、次の敵がアクティブになると言う条件くらいじゃないでしょうか。
全ての敵を滅亡させたらエンディング。これでゲームとしては成立します。
しかしながら、これではゲームとして面白いとは言えません。

そこでどれだけイベントをぶち込むかと言う話になります。
ノウハウも無い自分に、逆算は不可能のと考えて、「最も効率良くプレイした場合、1ターンに1イベント発生する」のを目途にしました。
更に、中盤以降はサブイベントの数を増やす様に心がけました、これは中盤以降に難易度が上がって行く為、何も知らないプレイヤーが攻略に手間取るからです。
この手間取っている間は、サブイベントが起こる感じにしました。これにより何もないターンを減らせる訳です。
弊害として、こぼれ話1で話した様に、アイテムが手に入らない事象が発生してしまいました。
因みに姫百合の総イベント数は、160以上。イベント用のテキストはオーぷイング、エンディングを合わせて600K以上になります。

●イベントの長さ
イベントの長さについても、気を使いました。
ずばり、1つ1つが長すぎない。
特に戦闘前と後に発生するタイプの物は、なるべく短く纏めました。
姫百合は部隊の選別に非常に悩むゲームです、攻防にバランス良く部隊を使わねばなりません。
それだけ悩んで選んだ結果を見るのに、長いイベントを挟むと興が削がれてしまうと思い、なるべく短いイベントに終始しました。

その分、ターン頭や、敵滅亡時のイベントは十分な長さを持たせました。
敵を倒したからには、それなりのイベントが欲しい所ですしね。

●イベントの管理
イベントの数が多くなってくると、難しくなってくるのが管理です。
私は、こんな感じでイベントフロー図を作って管理しました。
イベントフロー図

更に個々のイベントの発生条件一覧も作成しました。
これにKAGスクリプトで作成した実際のイベントファイル名をリンクさせて管理させました。
イベントフォルダ
この管理方法は中々良かったと思います。
全体のイベントの流れ、イベント量が分布等が分かり易く、イベントのミスも即座に直せます。


■こぼれ話2

姫百合には、シナリオとは全く関係ないイベントとして、ヒント機能があります。
元々難易度が高めに設定されているゲームなので、攻略の手助けとして追加した機能です。
分かり易く、セーブとロードの場所に入れました。

意味としては、このゲームを投げないで欲しいと言う思いから追加しました。
ゲーム製作者としては、やはりクリアまで遊んで欲しいと言うのが心情としてあると思います。
もう1つは、情報が可能な限りオープンなゲームが好みというのもあります。

この機能が良かったのか悪かったのかは、「正直わかりません」。
システム面や難易度については、比較的評価が高く、その様なコメントも頂いているのですが、ヒント機能に言及したコメントはありませんでした。
一応、次回作にも突っ込んでみる予定です。ヒント機能に思う事ある人は何かコメント下さい(笑)


■総括

イベント関連の話をつらつらと書いてみました。
イベントはゲームの内容に非常にリンクした内容なので、実際に作った姫百合の話を多くさせて貰いました。
他のゲームが、どの様にイベントを管理しているかは分かりません、あくまでも姫百合のシステムです。
しかし、ど素人の私がイベント組み込みに苦労しなかった点を考えると、SLG製作には良い手法なのではないでしょうか?




◆つぶつぶ主人公HP◆
スポンサーサイト
2012.07.02 / Top↑
Secret

TrackBackURL
→http://nekodamasi.blog79.fc2.com/tb.php/67-b8a1d665