RPG Maker MZ(旧名: RPGツクール)のチュートリアルを触ってみて、「イベント」や「スイッチ」という概念にちょっと戸惑ったので、自分なりに整理メモを残します。

RPG Maker MZのチュートリアル




チュートリアルでわかったことメモ

イベント

「宝箱を開ける」「村人Aに話しかける」などの出来事。
関数とか、コントローラー的なものと考えて良さそう。

・基本の流れは自動で「実行内容」が上から順に動作
・出現条件で「実行内容」を実行するかどうかを制御
・出現条件はAND結合
・出現条件の指定が何もなければ、常にtrueとして実行される
・イベントの、ページ番号の大きい方が優先的に実行される



例えば、簡単作成した宝箱のイベントを見てみる。

RPG Maker MZの宝箱イベント

RPG Maker MZの宝箱イベント


初回の宝箱クリック
・タブの中で1ページと2ページがあるので、まず2ページから実行される。
・しかし、出現条件に、セルフスイッチがAという条件がついている。
・まだ、セルフスイッチ = Aにはなっていないので、2ページ目は何も実行されない。

・1ページ目の出現条件チェックする。
・出現条件が空っぽなので、実行内容が上から実行される。
・SEが鳴る。
・宝箱オープンのアニメーションが流れる(これが移動ルートの設定で実現されている。詳細は後述)
・セルフスイッチAがONになる
・所持金が増加し、その旨がメッセージに出る。

・セルフスイッチAがONになったことで、2ページ目の条件がtrueになったので、2ページ目の実行内容が上から実行される。
・実行内容は特にないのでここで終わり(画像変化のみ)


2回目以降の宝箱クリック
・タブの中で1ページと2ページがあるので、まず2ページから実行される。
・すでにセルフスイッチ = Aになっているので、2ページ目の実行内容が上から実行される。
・実行内容は特にないのでここで終わり(何も起こらない)



イベントと条件分岐の使い分け

RPG Maker MZのイベントと条件分岐の使い分け

チュートリアルで、たとえば薬をくれる人(ポーションの有無で動作が変わる)という場合は条件分岐を使えるが、「画像などの条件が変わるときは、必ずイベントページ」とのこと。


「画像などの条件が変わるときは、必ずイベントページ」とは?
基本的に1画像に対して1イベントとして考えられるのでこう書いてある。





ただ、移動ルートの設定を使って、「左を向く」「右を向く」などを入れることで、1イベント内で画像を変えることも可能。

例: 宝箱を作ったら自動設定されるイベントの中で、宝箱が開くアニメーションは、「移動ルートを設定」で指定されている。

RPG Maker MZの宝箱イベント


宝箱にはこのような画像が設定されているが、
「左を向く」 = 2段目の画像
「右を向く」 = 3段目の画像
に相当するので「左を向く」「右を向く」を移動ルートにセットすることで、箱が開くように見せられる。

宝箱の移動ルート設定

キャラクターの向き
キャラの一覧と比べたらわかる
でも「右を向く」「左を向く」で箱が開くのは直感的に理解しづらいよな...


スイッチとは何か

スイッチはON/OFFを切り替えるもの。

true/falseを取得して、isOpenのようなチェックをするのに使える。


スイッチとセルフスイッチの使い分け

スイッチ = グローバル変数
セルフスイッチ = ローカル変数

他のイベントから参照したいかどうかでどちらを使うか決まる。
1イベント内で完結する場合、スコープ上、極力セルフスイッチを使った方が良さそう。
予期せぬ書き換えを防ぐため。


スイッチと条件分岐の違い

スイッチはイベントコマンド[条件分岐]に利用できます。スイッチを活用したイベント分岐も可能です。
とあるので、一瞬混乱しやすい。


条件分岐は普通のif文
スイッチはt/fを管理するための変数(isOpenみたいな)。

if(isOpen){
  // 宝箱オープン時の動作
  addMoney(2000)
}
みたいな分岐を作れると言うこと。



セルフスイッチの設定をいじって、セルフスイッチの仕組みを理解する

簡単作成した宝箱の条件を色々いじってみた。


わざと2ページのセルフスイッチの出現条件のチェックを外すとどうなるか?
宝箱開けっぱなしになる。お金が増えない。

原因はこれっぽい。

ページ数が大きいものが優先的に実行されるので、2ページが優先される。
つまり、2ページでセットしてある画像(宝箱開封済み)が出現したままになる。



ちなみにこの仕様は、デバッグ機能を隠しておくために使うことも可能。

マップ上で、ユーザーが立ち入れない任意の場所に、デバッグ機能を仕込んだ(戦闘開始後、いきなりボスが死ぬとか)イベントを準備する。
ページを追加して、トリガーを自動設定にする。

RPG Maker MZのイベントトリガー


そして、同イベントに、まっさらなイベントのページを増やしておくと、常にこのページが実行されるので、デバッグが実行されない(デバッグを埋め込み、実行なしで隠しておける)。

RPG Maker MZのデバッグ裏技


このまっさらページをEVページ削除で消せば、デバッグが自動実行される。

RPG Maker MZのデバッグ裏技





わざと1ページの実行内容の中で、「セルフスイッチ=ON」を、「セルフスイッチ=OFF」にするとどうなるか?
宝箱は何度でも開けられる。お金も無限に増える。

2ページの出現条件がセルフスイッチA=ONだが、それが走らなくなったので。

isOpenがfalseにならないので、何度でも開けられてしまうということ。




わざと2ページのセルフスイッチの出現条件を、指定したA以外のBやCにするとどうなるか?
→同じく宝箱は何度でも開けられる。お金も無限に増える。

2ページの出現条件がセルフスイッチA=ONだが、それが走らなくなったので。
現象は上と同じ。





※このあたりを触っている時、宝箱が開くアニメーションがページ1で設定されている部分のせいで、2ページ(宝箱開封済み)が呼ばれているのかがとてもわかりにくかった。

この実験をしたい場合、2ページの宝箱開封済み画像を、わざと全く別の箱の画像に変えておくことで、挙動をより理解しやすくなるのでオススメ。



まとめ

プログラミングなしでゲームを作る、というツールなので、エンジニアは逆に最初の導入部分で躓きやすいかもな、と感じました。

特にイベントの概念はちょっと最初は掴みにくいかも。
今回の記事が、少しでも役に立てば幸いです。


今回はチュートリアルを軽く触っただけでしたが、今後もう少し複雑なイベント処理を入れようとして躓いたら、また記事化したいと思います。



参考

こちらの記事がとてもわかりやすかったです。

『RPGツクールMZ』イベントページのヘルプ

『RPGツクールMZ』イベントページのヘルプ

undefined