見出し画像

GB Studio TIPS② 処理の実行順

このTIPSシリーズでは、GB Studioを使っていて躓きがちな…というか自分が前に躓いた点をピンポイントに解説していきたいと思います。
第2回目はOn InitやOn Updateの処理の実行順について。
※以下の内容は検証し出来るだけ正確になるよう心掛けていますが、全然間違っている可能性もあります。ご留意ください。
使用ソフト:GB Studio 3.2.1

On ○○って何?

GB Studioでは、イベントやその集合体のスクリプトはシーンやアクター、トリガーにある「On ○○」というところに追加していくことでゲームを作っていきます。
これらは「この処理は○○のタイミングで実行する」という意味です。
On ○○シリーズには以下のものがあります。

On Init:
そのシーンが読み込まれたときに一度だけ実行
シーン、アクターにある
On Update:
1フレーム毎に何度も実行(アクターが画面外に出ても実行し続けるかどうかは切り替え可能)
アクターにある
On Interact:
それを調べた(=それに重なるか対面した状態でAボタン(デフォルト))ときに実行
アクター、トリガー(ポイント&クリックタイプのみ)にある
On Hit:
それにぶつかったときに実行
アクターにある
On Player Hit:
プレイヤーがコリジョングループにぶつかったら実行
シーンにある
On Enter:
その範囲に入ったときに実行
トリガーにある
On Leave:
その範囲から離れたときに実行
トリガーにある

細かな注意点

On Initの順番
シーンとアクター両方にOn Initがあるけど、同時に実行されるの?
そう思われる方もいるかもしれません。
ですが、実際は
1 アクターのOn Init
2 シーンのOn Init
の順で実行されます。
GB Studioで作れるのはゲームボーイ(カラーやスーパー含む)仕様のゲームなので、基本的にイベントは1つずつ行われるようです。
例)後述の"ゲームマネージャー"アクターのOn UpdateでSwap Tiles Pluginのアニメーションが、他のNPCアクターとのOn Interactの会話イベント中は停止する。
高速で処理が走らず人間の目でも何が起きているか追いやすい反面、つよつよマシンパワーで勝手にいい感じにしてくれるわけではないので、実行順には他のゲームエンジンよりも気を付ける必要があるように感じます。

On Enter/On Leaveの順番
隣接する形で2つのトリガーA&Bが敷かれていてプレイヤーがAからBに移動する場合、
これから入るトリガーBのOn Enter
もう離れるトリガーAのOn Leaveより先に実行されます。
特定の場所を離れる前に別の場所に入ってしまうというのは感覚的に違和感がありますが、GB Studioではそうなっているようです。

アクターは便利

上記の一覧で分かる通り、イベントを実行するタイミングが一番豊富なのはアクターです。
特にOn Updateは常に走り続けることもあり、プレイヤーの行動を見て何かを起こしたり常にNPCを動かせると一気にゲームらしくなります。
ただ、絶え間なく実行されるOn Updateは動作が重くなる原因にもなるので、フラグ等を使い適切なタイミングで必要な数だけ処理が走るようにしましょう。
そこまで毎フレーム処理されなくていいよ…という場合は、特定の秒数ごとに実行されるタイマーをOn Initで仕掛けておくのも手。

透明なアクターを用意して画面に固定し、そのシーンの色々な処理をOn Updateで担う「ゲームマネージャー」に任命すると捗ります。

縁の下の力持ち、それがゲームマネージャー

おわりに

記事の中でも書きましたが、GB Studioは手軽にゲームが作れる反面制約も多いです。
イベントが思ったように動かなくて「どうして~~~???」と頭を抱えることは少なくありません。
ですが、そういった制約の下であれこれ解決策を考えているとゲームの作りについての基礎的な考え方が身についてくる…ような気がします。
あくまで独学者の思い込みに過ぎませんが…
この記事が、自分と同じく悩みながら制作する方のお力になれれば幸いです。
最後までお読みいただき、ありがとうございます。今後ともよろしくお願いします。

いいなと思ったら応援しよう!