ゲーム制作の裏側 Vol.1 システム解説:リロード
こんにちは、あるいはこんばんは。青島清華です。
フォロワーさんにゲーム制作関連の方が多かったので、もしかしたら役に立つかもということで今回は前作のシステムについてのお話です。前作も次回作もそうですが、ゲーム制作はRPGツクールMZで行っているので、関係ない、興味ない、という方も多いかとは思いますが、「そんなことしてるんだ!」と何かの参考にしていただければ……。
戦闘中の状態異常と追加イベント
今回紹介するのは前作で使っていた「リロード」のシステムです。
画面を見て頂いた方が早いと思うので掲載しますが、
(画像は次回作用の物なので、前作とは少し異なります)
左上が、銃を使った攻撃スキルの設定画面、右上がその結果発生する異常状態、
左下が、状態異常を発生させるためのイベント(処理)です。
RPGツクールMZでは攻撃や回復のスキルを使用した後に、あらかじめ指定した、イベント(コモンイベントと言います)を実行させることができます。これを使えば、特定のスキルを使った後にアイテムを消費したり、攻撃や回復の対象者以外にも、何かの効果を与える、例えば敵に攻撃しつつ味方を回復したり強化する(この処理はMZにはデフォルト機能では実装されていません)ということができるようになります。
リロードについてはこれを利用して作っており、
- 「射撃」スキル発動後に「リロード発生」のイベントを実行
- 「リロード発生」のコモンイベントでは、直前に行動したパーティーキャラクターをさがして、そのキャラクターが「リロード中」の状態異常になる
- 「リロード中」になっていると、そのキャラクターは「射撃」スキルを使えない
- (画像はありませんが)「リロード」のスキルを使うと「リロード中」の状態異常が解除される
という処理の手順を踏んでいます。
戦闘が終わった後は銃の手入れをしているはず、というゲーム内の世界の設定なので
「リロード中」の状態異常は戦闘が終わったら解除されます。
これで一応動くのですが……。
問題はコモンイベントの発生タイミング
ちょっと困ったことになるのがコモンイベントの発生タイミングです。スキル使用”後”にイベントが発生するので、スキル使用の前提となる条件は、コモンイベントの中では設定できません。銃が単発式になったのはこの辺りにも原因があります。(ゲーム内で記録できる数値を利用して、残弾数の管理をしようとしていました)
今なら、ツクールの機能を拡張するプラグインを導入したり、記録数値と状態異常を組み合わせれば作れそうな気がするのですが、武器ごとに最大装弾数が違ったりすると少々面倒かも……。MPを弾数という名前で使うことにして、攻撃するたびにMP=弾丸を消費していくようなゲームならありかも知れません。SFや西部劇でやってみたい気もします。
そしてもう一つ困るのが、このイベントの発生は予約式なので、戦闘終了後でも実行されてしまいます。どういう事かと言うと、最後の敵を銃で倒した場合、「リロード中」の状態異常になるのが戦闘後で、しかも、戦闘終了後に解除される状態異常の解除される判定は、戦闘終了時のようなので解除されることなく次の戦闘に突入します。つまり、最後の敵に銃で止めを刺すと、次の戦闘が不利になってしまうのです。
これを防ぐための処理が左下の画像の「実行内容」の枠の1行目から6行目までで、
- コモンイベントが発生したのが戦闘中なら、そのまま処理を続ける
- それ以外の時=非戦闘中ならば、何もしない
という処理の条件を作っています。
最初にこの状態(戦闘開始時から「リロード中」)に遭遇したときは、何が起こっているのか全く分かりませんでしたが、色々試しながら、仕様について、多分こうなのだろうと理解しています。恐らく、今後も意図しない動作をする可能性は多々あります。しかも、そのままゲームを発表してしまうこともあるとは思います。ただ、「何か変なことが起きている」、そう思われたときは遠慮せずにお知らせください。ご迷惑をおかけするかもしれませんが、今後ともよろしくお願いいたします。
今日は、この辺で。それでは!