投稿記事

2023年 09月の記事 (2)

推理ゲームで特定の手掛かりを見つけるまで進めない的な処理

ツクールの内部処理的な話です。

自分が今作っているゲームはぶっちゃけて言うと推理系ノベルゲームです。
なので、内部的には「ある特定の手掛かりを入手するまでシナリオ進行をロックする」的な処理が組み込まれています。

ツクールを触っているor触ろうとしている人の中には「プログラミング言語は知らないけどRPGツクールでゲーム作りたい」「いざ触ってみたはいいものの細かい処理を作り込むのが苦手」という人もいると思います。
(プログラミング言語知ってるけど、いざ組んでみたらゲームがクラッシュしたという方もいるかもしれません。私です)

という訳で半ば戒め的な感じで「特定の条件を満たすまでシナリオ進行をロックする」処理の話を書きなぐります。ちなみにRPGツクールMVでの話になります。


まず実際のイベントは下の画面の通り。(※1)

ツクールには「セルフスイッチ」「変数」というパラメータがあります。イベントコマンドの「ゲーム進行」の中にあるやつ。

基本的に、セルフスイッチはその「イベント限り(=一時的)」、変数は「ゲーム中(=永久的)」の間だけ状態を保持できます。基本的にはこの二つと「ループ」を使います。

まず、シナリオ進行のロックを解除するのに必要な条件を全て書き出します。
(例えば「犯人の手掛かり①を見つける」「被害者のダイイングメッセージを見つける」とか)

全て書き出したら、それらに「変数」もしくは「セルフスイッチ」を割り振ります。そのイベント限りの条件ならセルフスイッチを、他のイベントでもその条件を使用する場合には変数を使うと良いでしょう。
ここでは、セルフスイッチA、Bを使ったという想定で話を進めます。

割り振ったら、それを「ループ」の中に組み込みます。ループの先頭には「条件分岐」で「セルフスイッチAがON」を入れ、さらにその中に「セルフスイッチBがON」を入れます。こうすることで、「セルフスイッチAとB両方ONの時のみ実行される」処理が作れます。
「ループの中断」でループから抜け出してその先の処理を実行します。これを利用すると「セルフスイッチAとB両方ONになったらループから抜け出して先に進める」という処理にできます。


…という感じで、参考になるか分かりませんが内部処理の話でした。


(※1)自分が作っているのは推理ゲームなので、人によってはじっくり手掛かりを見つめたい人もいるかな…と思い、セルフスイッチが全てONになった時はメッセージを挟み、ユーザーが「はい」を押した時だけ進行、それ以外の時は手掛かり捜索に戻れるみたいな処理の組み方をしてます。
選択肢フラグは、並列処理で自由なタイミングで呼び出せるセーブ画面を置いておいたら、選択肢の表示とセーブ画面が被るとゲームがクラッシュするバグが起きたので回避用に入れた……という所謂おま環です。

制作中のRPGの立ち絵とか

フォロワー以上限定無料

支援者向けの記事が読めます。 基本的にゲーム制作の進捗等を公開します。

無料

月別アーカイブ

限定特典から探す

記事を検索