皆さんはRPGツクールのイベント処理に並列実行って使っていますか?
自動実行なら使ってるけど、並列実行ってどう使うのかよくわからないという方も多いと思います。
今回はそんな並列実行の簡単な使い方を紹介していこうと思います!
そもそも並列実行って何?
まず、並列実行がどういうものなのか、簡単に説明していきますね。
並列実行とはプレイヤーが操作している間や他のイベントが動いている間も同時に動き続ける処理です。
例えば5分以内に爆弾を処理しなければならないようなイベントがあったとして、タイマーによるカウントダウンを裏で実行させつつプレイヤーには爆弾処理の為に試行錯誤してもらう、といった感じです。
もっとざっくり言ってしまえば、自分が寝ている間も心臓は動き続けてるようなイメージです、たぶん!
自動実行と何が違うの?
自動実行はイベントの中身がすべて実行され、なおかつイベントページが切り替わるか一時消去されない限り、操作ができないまま延々と繰り返されます。
メリーゴーランドから下りたいのに、動き続けるから降りられないようなイメージでしょうか。
セルフスイッチなどを使って空のページに切り替えてあげる事で停止します。
また、並列処理はいくつあってもそれぞれ処理を続けてくれますが、自動実行は1つしか処理されないので、そこも注意です。
並列実行の簡単な使い方
では、具体的に並列実行をどう使えば良いのか気になりますよね?
簡単な使い方としてはモブの上にアイコンを常に表示させたり、アニメーションを表示させ続けたりといった感じでしょうか。
これらの処理を実際に作りながら並列実行について学んでいきましょう!
モブの上にフキダシアイコンを表示させ続ける
例えばベッドで寝ている人がいて、寝ている事がわかるようにフキダシアイコンを表示出来たら、なんて思った事はありませんか?
それでいて、話しかけた時には「むにゃむにゃ・・・」と寝言を言わせたい、みたいな。
実は並列実行を使えば簡単に作る事が出来るんです!
まずはマップを用意してベッドの上にモブキャラを置きます。
このモブキャラのイベント内容は文章の表示で「むにゃむにゃ・・・」と言わせるだけでOKです。
この時、オプションの向き固定にのみチェックを入れておいてくださいね(寝てるのにプレイヤーの方を向くのはなんだか変な気もするので)
次に任意の場所にフキダシアイコンを表示させるためのイベントを作ります。
中身は非常に単純でトリガーを並列処理にし、実行内容でフキダシアイコンの表示をモブキャラに設定してあげるだけです。
この時、完了までウエイトにチェックを入れてください。
これだけで寝ているモブの上にアイコンが表示され、なおかつ話しかければ「むにゃむにゃ・・・」と発言してくれます。
<スポンサードリンク>
アニメーションを表示させ続ける
PC版のツクールMVやMZならばアニメーションをループさせるプラグインがあるので便利なのですが、MVトリニティのようにプラグインが使えない場合は並列処理で再現できます。
今回は夜の町を舞台に、窓や街灯に灯りを表現するアニメーションを表示させようと思います。
必要なイベントは以下の通りです。
マップを夜にする為のイベント
トリガーを自動実行にし、画面の色調変更で夜にします。
色調変更の後には必ずイベントの一時消去を入れてください。
アニメーションを表示する為のイベント
トリガーを並列処理にし、アニメーションの表示を実行させます。
表示させたい場所の数だけアニメーションの表示を実行させますが、最後の1つだけ完了までウエイトを入れてください(他はウエイト無しにします)
※私も勘違いしていたのですが、ループの処理は無くても動きます!アニメーションの表示だけ入れてあげてください!
アニメーションを実際に表示させたい場所のイベント
窓や街灯の所に置いてください。
画像も何も設定しない空っぽの状態でも大丈夫ですが、念の為オプションのすり抜けにチェックを入れて、プライオリティを通常キャラの上にしておきましょう。
表示させるアニメーションは事前に作っておく
アニメーションはデータベース上で自分好みに作る事が出来ます。
今回は灯りを表現するのに個人的に良さそうだなと思ったWater3の画像を使いました。
基本設定の「位置」は中心、「フレーム数」は5、そして下のアニメーション画像から1つの選び(スクショでは四角で囲われているアニメーション)全てのフレームにポチポチと1個ずつ置いていきます。
右側の一括設定を使えば全てのフレームを同じ設定にできるので、フレーム1~5のXとYを0にし(十字の中心に表示されるようになります)、そして合成方法を加算にします。
また、画像を選択する際に色調を変更できるので黄色にしておきましょう。
ここで作ったアニメーションを先ほどの並列処理で表示させる事になります。
アニメーションの編集は最初は難しいかもしれませんが、今回は簡単な設定で作れるので参考にしてみてください。
制限時間内に脱出できなければゲームオーバーなイベント
こちらは私が実際に「ソルシエール年代記~騎士と魔道士編~」で使った処理です。
崩落する坑道から脱出するというシチュエーションで、タイマーが0になったらゲームオーバーという流れでした。
複数あるマップを移動するのでコモンイベントの並列処理を使っています。
コモンイベントは全てのマップに適応されるので、このようなシチュエーションにはもってこいと言えるでしょう。
この並列処理を起動するスイッチとタイマーの設定はマップ上のイベントで設定し、停止する際もマップ上のイベントでそれぞれ停止しましょう。
<スポンサードリンク>
ちょっと応用すれば採取ポイントの復活にも
私のゲームでは、よく薬草などのアイテムを採取できるポイントを用意しています。
基本はマップ移動で復活するようにしているのですが「小さなエルフの大冒険~神の従者と生命の樹~」では採取ポイントが復活するようになっています。
実はこれも並列処理を使っています。
まず、アイテムのランダム入手処理をコモンイベントで作っておきます(変数の乱数と条件分岐で薬草や他のアイテムをランダムで入手できるようにしています)
この処理をマップイベントの採取ポイントで呼び出し、セルフスイッチAをオンにします。
次のイベントページの出現条件をセルフスイッチAがオンの時にし、並列処理にしておきます。
イベントの中身は、まずウエイトを300に設定し、その後セルフスイッチAをオフにします。
ウエイト60フレームで1秒なので、5秒後に採取ポイントが復活する事になります。
コモンイベントや乱数、また条件分岐を使えばランダムで5~10秒後に復活という処理も作る事が出来ますよ(実際、本作はそのような設定になっています)
これを応用すればシンボルエンカウントの復活にも使えるので便利ですよ!
並列処理の多用はゲームが重くなる要因に
並列処理は便利な反面、実は多用するとゲームが重くなる事で有名です。
特に並列処理のイベント内でスイッチや変数の操作をすると重くなりやすいようです。
ただ、私はあまり重く感じた事が無いのでPCのスペックの問題なのか、あるいは重くなるほど多用していなかっただけという可能性もあります。
とはいえ、乱用は避けた方が無難なのは確かですね。
まとめ
並列処理はプレイヤーにも動いてほしいけど、それとは別でイベントを動かしたい時に使う処理です。
タイマーの処理なんかはRPGに限らずアドベンチャーなどでも使えるので使い方を覚えておいて損はないと思います!
ただし、並列処理のイベントを多数設置するのは動作が重くなる要因になるのでほどほどにしておきましょうね。
それでは、今回はここまで_( _´ω`)ノシ