GB Studio TIPS④プラグイン大特集
まえがき
このTIPSシリーズでは、GB Studioを使っていて躓きがちな…というか自分が前に躓いた点をピンポイントに解説していきたいと思います。
第4回目はプラグインについて、出来得る限り多く詳細にまとめてみました。
それぞれのプラグインを活用できそうなシチュエーションも考えて併記していますが、筆者の主観モリモリですのでそれに囚われず自由に使い方を考えてみて下さい。
※以下の内容は検証し出来るだけ正確になるよう心掛けていますが、全然間違っている可能性もあります。ご留意ください。
※各プラグインのダウンロードや導入はあくまで自己責任でお願いします。
使用ソフト:GB Studio 3.2.1
プラグインとは?
前提として、GB Studioのプラグインとは何でしょうか?
GB Studio公式のドキュメントには下記のように書かれています。
上記の通り、プラグインは大分してアセットプラグイン、スクリプトイベントプラグイン、エンジンプラグインに分けられます。
アセットプラグインは背景画像の素材やスプライト素材などのことで、assetフォルダ以下のものと同じく素材として使用可能です。
スクリプトイベントプラグインは新たなイベントを追加できるようになるプラグインです。GB Studioの話題でただ"プラグイン"と言う場合はこれと後述のエンジンプラグインを指すことが多いように思います。
エンジンプラグインは↑よりも更にシステムの基幹部分に新たな機能を追加する…ざっくり言うと「設定」画面に新たな設定項目が追加される感じのプラグインです。後述するPlatformer plusのように大がかりで、できることが大幅に増えるものが多い印象です。
今回はスクリプトイベントプラグインとエンジンプラグインを特集します。
プラグインの導入方法
GB Studioのプロジェクトのフォルダ直下、assetフォルダやbuildフォルダと同じ階層にあるpluginsフォルダに各種プラグインを入れます。pluginsフォルダが無ければ新規作成しましょう。
プラグインは、スクリプトイベントプラグインであれば大体は (プラグインの名前)フォルダ>eventsフォルダ>JavaScriptファイル という構造になっています。pluginsフォルダに入れる際はこの構造を崩さずに(プラグインの名前)フォルダをそのままの形で入れましょう。
※フォルダがzip等で圧縮されている場合は解凍が必要
プラグイン紹介
GB Studio 3.2 - Plugin Pak
こちらのパックには、高度なダイアログ表示や背景テキスト表示からプレイヤーフィールドの操作関連まで様々な種類のプラグインがあります。
以下、それぞれの簡単な概要と使用する上でのポイント、使用例の一覧です。
① Display Advanced Dialogue:高度なダイアログを表示
ポイント:
「画面上部に表示」&「ダイアログを閉じない」設定にした時は、ダイアログを消した後にoverlay_cut_scanlineをリセットする必要がある
リセットしないと次のダイアログが表示されない
リセットはGBVMイベントで下記のように入力し実行
VM_SET_CONST_UINT8 _overlay_cut_scanline, 150
※このコードは手探りで割り出したものなので、詳しい方のご説明や訂正をお待ちしています…m(_ _ )m
使用例:HPバーやスコアなどを画面上に常に表示するHUD
② Display Advanced Menu:高度なメニューを表示
ポイント:
On ○○ move to:その方向にボタン入力したときにカーソルがどの項目に移動するか(入力する数値は各項目に割り振られたインデックス番号)
どこから表示:下から/右から ※横幅を縮めて画面横に表示することも可能
使用例:価格や所持数を表示する必要のあるショップやステータス
③ Display Background Text:背景にテキストを表示
ポイント:
X/Y:文字を表示したい座標
※タイル単位
※Xの値は0から19、Yの値は0から17のみ使用可能
※背景が一画面分(160px*144px)以上の大きさだと座標がおかしくなる
テキスト内でオートコンプリートが使えないので、変数を表示するときは$n$、変数の値と同じコードの文字を表示するときは#n#(n=変数のインデックス番号)と記入
使用例:沢山の文字情報が必要なステータスやメニュー
④ Print Screen Background:背景をプリント
※動作環境の都合により未検証
⑤ Set Clock Time:リアルタイムクロックの設定
⑥ Store Clock Time In Variables:変数にリアルタイムクロックの値を保存
⑦ Start Clock:リアルタイムクロックを開始
⑧ Stop Clock:リアルタイムクロックを停止
ポイント:
日/時/分/秒を設定したり保存できる
※「設定」でカートリッジタイプをMBC3にする必要がある
使用例:リアル時間に連動した仕掛け
⑨ Mute Channel:チャンネルをミュート
ポイント:
イベント名はMuteですが、チェックを入れたチャンネルが再生されることに注意
使用例:音楽と連動した仕掛け、ミュージックプレイヤー
⑩ Store Player Field In Variable:プレイヤーフィールドを変数に保存
ポイント:
Platformerシーン用
Velocity X:右に行く時は増え、左に行く時は減る
Velocity Y:上に行く時は減り、下に行く時は増える
On GroundとOn Ladderは後述のPlatformer Plusも導入している場合に正しい数値が出なくなったり実行時エラーが出たりする
使用例:地上にいる時や梯子にいる時のみ任意のアクションを有効化
⑪ Player Field Update:プレイヤーフィールドをアップデート
ポイント:
Platformerシーン用
このイベント実行時、プレイヤーに任意の速度を与える
=好きな方向に吹っ飛ばせる
32767~-32768 の値が有効
使用例:任意のボタン押下時に実行してハイジャンプやダッシュ
⑫ Store Camera Field In Variable:カメラフィールドを変数に保存
⑬ Camera Field Update:カメラフィールドをアップデート
ポイント:
Scroll X/Y:現在の画面の中央の座標(背景座標X80 Y72を原点として)
Camera X/Y:プレイヤーの座標に追従(Xはプレイヤー座標+4~12px、Yはプレイヤー座標-8px)
Camera Deadzone X/Y:どれだけプレイヤーが画面端に移動するとカメラが移動するか(0以上の値、0だと背景の端以外では常にプレイヤーが画面中央に来る、増やすと増やしただけプレイヤーが画面端に寄らなければカメラが動かなくなる)
Camera Offset X/Y:どれだけカメラ位置がスクロール位置からずれているか(Xは増やすと右寄りに、減らすと左寄りに。Yは増やすと下寄りに、減らすと上寄りに)(2024/6/20修正)(Xは増やすと右寄りに、減らすと左寄りに。Yは増やすと上寄りに、減らすと下寄りに)
※ピクセル単位
使用例:カメラ位置の調整(プレイヤーの進行方向を広めに映すなど)
⑭ Smooth Fade:滑らかなフェード
ポイント:
Fade In:白/黒になってから指定のカラーにフェード
Fade Out:指定のカラーになってから白/黒にフェード
使用例:背景が変化する演出(神々しいNPC遭遇時に背景だけが白んでいくなど)
⑮ Move Variable Actor To:変数で指定したアクターを移動
⑯ Store Variable Actor Position In Variables:変数で指定したアクターの位置を変数に保存
ポイント:
既存のアクター移動イベントや座標保存イベントと同じ効果だが、ドロップダウンでアクターを指定するのではなく変数を使用して指定するのが特徴
0:プレイヤー
1~: シーン内のアクター(追加順にインデックス番号が振られている)
使用例:便利そうとは思うものの具体的には思い浮かばず… 思い浮かんだらぜひ活用してください
⑰ Actor FX:アクター視覚効果
ポイント:
Split In:スプライトが左右からその中心に合体
Split Out:スプライトが左右に分散(アクターは消える)
※ピクセル単位/タイル単位
演出中はプレイヤー移動等他の操作不可
※Out、Inと連続して実行するとアクターの座標がずれるため、間に位置設定イベントを挟むといい
使用例:アクターの登場や退場の演出
⑱ Locked Event Group:ロックされたイベントグループ
ポイント:
ロックされたイベントグループのイベントを実行中は他のOn Update等のイベント実行がストップする
使用例:同時に動くと重くなるイベントの処理速度を上げるために優先して実行するイベントを指定する
⑲ Unlocked Event Group:ロックされていないイベントグループ
ポイント:
通常のイベントグループと同じ
⑳ Pin Actor to Screen:アクターを画面に固定
㉑ Unpin Actor from Screen:アクターを画面から固定解除
ポイント:
アクターを動的に画面に固定/固定解除する
アクターを画面に固定すると、常に画面に映っている状態になる(ピン止めマークにチェックするのと同じ)
アクターを画面から固定解除すると、画面ではなく背景のその位置に置かれる
※既に固定されている状態で同じイベントを実行するとアクターの位置がおかしくなるので注意
※アクターにSelfを指定すると実行時エラーが出る
使用例:ハウジングで家具を自由に移動させる
GB Studio Plugin Collection
こちらのコレクションには、大きなアバター付きダイアログやアクターの当たり判定操作からフェード無しシーン切り替えまで様々な種類のプラグインがあります。
以下、それぞれの簡単な概要と使用する上でのポイント、使用例の一覧です。
㉒ Transfer SGB Packet Plugin:SGBパケット転送
※動作環境の都合により未検証
㉓ Dialogue With Name Tag/Large Avatar Plugin:名前タグ/大サイズアバター付きダイアログ
ポイント:
X/Y Position:名前/アバターを表示する座標(ダイアログボックスの左上をX1Y1として)
Width (In tiles) :アバターの横幅
※タイル単位
アバターはフォント内に文字として分割して仕込んでおく必要がある
!fからのオートコンプリートでフォント変更ができるので、アバター用のフォントを作っておくとGood
使用例:情報量の多いダイアログ、キャラクターの顔を見せたい会話
㉔ Actor Set Collision Box Plugin:アクターの当たり判定設定
ポイント:
位置の設定にクセがある(上図参照)
Height:アクターのY座標-1タイル地点を中心にして上下に等分展開(タイル数にして偶数の場合は上寄り)
Width:アクターのX座標0タイル地点を左端にして右方向に全展開
※ピクセル単位
使用例:しゃがみ時にプレイヤーの当たり判定の縦幅を半分にする
㉕ Change Scene With No Fade (Glitchy) Plugin:フェード無しシーン変更
ポイント:
同じシーンに変更だと大丈夫だが、他のシーンに移動すると一瞬スプライトがグチャっとなる
回避法(誤魔化し方)は過去の記事を参照
※ver4では同様の機能が公式で実装されるらしい
使用例:素早いシーンチェンジでゲームテンポを上昇させる
㉖ While Loop Plugin:Whileループ
※公式で同様の機能が実装済みのため未検証
㉗ Advanced Math Functions Plugin:高度な数式
ポイント:
平方根、正弦スケール、余弦スケールが使える
※他の演算と同じく整数ではない結果は小数点以下切り下げされる
使用例:発射物や敵に複雑な動きをさせる
㉘ Set Master Volume Plugin:マスターボリューム設定
ポイント:
左右で音量を設定できる
※0にしても微かに音は出続け、完全な消音にはならない
使用例:BGMコンフィグ、SEが聞こえてくる方向による演出
㉙ Store System Time in Variable Plugin:システムタイムを変数に保存
※実行時エラーのため未検証
㉚ Set Music Position Plugin:音楽の位置を設定
ポイント:
音楽の位置をパターン番号で設定
再生中のBGMの位置も変更でき、位置を設定してからBGMを流すことも可能
※MODファイルでは無効、UGEファイルでは動作することを確認済み
使用例:イベントに合わせて任意のフレーズからBGMを再生する演出
㉛ Set Palette Colors Plugin (not updated for 3.1+ yet for GBC):パレットカラー設定
※公式で同様の機能が実装済みのため未検証
㉜ Scene Movement Plugin:シーンの操作
ポイント:
イベントを追加するプラグインではない
GB Studioのメニューにシーン操作のオプションを追加する
例)全てのシーンを8px下に移動、16pxグリッドに整列 など
使用例:大量のシーンを整理したい場合
Show Actors On Overlay Plugin for GBstudio
アクターをオーバーレイの上(手前)に表示
ポイント:
アクターをオーバーレイの上(手前)に表示する チェックを入れると効果オン、外すと効果オフ
使用例:HUDにアニメーションするアイコンを載せる、プレイヤーに追従する背景をオーバーレイで表現
SubMap Plugin for GBstudio
背景の一部をオーバーレイに表示
ポイント:
背景の一部をオーバーレイに表示する
後述するSwapTile等で参照元の背景に変更を加えた場合、リアルタイムで反映される
背景の一部なので背景と同じ色数やカラー設定が使える
X/Y:オーバーレイ上の表示したい座標を指定(オーバーレイの左上を原点として)
W/H:表示したい範囲の大きさを指定
SX/SY:参照元の背景の座標を指定(背景の左上を原点として)
※タイル単位
※このイベントを実行しただけではオーバーレイは表示されないため、事前にオーバーレイ表示イベントが必要
使用例:グラフィカルなHUD
Swap Tiles Plugin for GB Studio
背景の一部を別シーンの他のタイルと入れ替え
ポイント:
背景の一部を別シーンの他のタイルと入れ替えられる
入れ替え用のタイルを配置したシーンはLogoタイプにしておくとGood
ループさせてアニメーションにも使用できる、使い勝手がいいプラグイン
※ver4では公式で実装されるらしい
使用例:水面など背景のアニメーション、スロット
GBStudio Platformer Plus
プラットフォーマーの機能を大幅に拡張する
ポイント:
詳細な公式ドキュメントあり
このプラグインを導入すると追加できるスクリプトイベントも複数増えますが、それらで操作できる項目等についてはこのドキュメントをご確認ください
https://github.com/becomingplural/GBS_PlatformerPlus/tree/main/docs
n段ジャンプや壁掴み、足場すりぬけ、動く足場などを実装できる
使いこなしたら滅茶苦茶便利
使用例:多様なアクションが可能な横スクACT
Advanced Dialog and Menu vB
凝ったメニューやダイアログを表示できるプラグイン2種です。
普通のオーバーレイではできない、画面端から離れたメッセージウィンドウ等が表現可能。なお。実際の処理としてはオーバーレイに背景をコピーしてそういった見た目を実現しているようです。
㊲ Advanced Menu 2.0:自由に位置を設定できるダイアログ
㊳ Advanced Dialog Version B:自由に位置を設定できるメニュー
ポイント:
○○ X/Y Position:項目/ダイアログボックスの座標(今映っている一画面上の左上を原点として)
※タイル単位
㊳で"アクターを表示する"&"ダイアログボックスを表示しっぱなし"にしてプレイヤーが移動すると、一画面に固定された背景(に見えるオーバーレイ)の上をプレイヤーとアクターだけが滑るという不思議な見た目になる
※タイル単位
使用例:RPGのバトル画面
Shin's GB Studio plugins
こちらには、プレイヤーへのアクター追従やシューティング機能拡張からダイアログ用に特化した背景テキスト表示まで様々な種類のプラグインがあります。
以下、それぞれの簡単な概要と使用する上でのポイント、使用例の一覧です。
㊴ Actors Pass Through Actors:全てのアクターがプレイヤーを含む他アクターを通過
ポイント:
背景に設定しているコリジョン(壁等に使用)も通過する
エンジンプラグインなので「設定」で切り替え可能(0 無効、1 有効)
イベントで切り替える場合はエンジンフィールドアップデートを使う
※ver.3.2.1では実行時「古いエンジンを使っています」的な警告は出るが実行可能
使用例:プレイヤーにちゃんと衝突するアクションの敵
※通常だとUse CollisionsがオンだとぶつかってもOn Hit Playerが呼び出されないため
㊵ Top Down Followers:プレイヤーにアクターが追従
ポイント:
シーン内に配置してあるアクターが、割り振られているインデックス番号が若い順に使用される
エンジンプラグインなので「設定」で切り替え可能(0 無効、1~3 有効)
イベントで切り替える場合はエンジンフィールドアップデートを使う
※ver.3.2.1では実行時「古いエンジンを使っています」的な警告は出るが実行可能
使用例:RPGでの仲間連れ歩き
㊶ Shmup Reloaded:Shoot 'Em Upタイプを完全に置き換える
ポイント:
画面がスクロールする方向はシーン最初のプレイヤーの向きによって変わり、向いている方にスクロールしていく
背景内における画面の初期位置もこの向きによって変わる
(向きに対して水平方向のみ。垂直方向の位置はプレイヤーの位置によって変わる)
例)プレイヤーが右向きの場合は背景左端からスタート、Y方向の位置はプレイヤーのY位置による
※ver.3.2.1では実行時「古いエンジンを使っています」的な警告は出るが実行可能
使用例:自機が自由に動けるシューティングゲーム
㊷ Background Dialogue:背景に名前とダイアログを表示
ポイント:
X/Y:背景に対しての座標を入力
※タイル単位
※画面に対しての座標ではないので、基本的に一画面に収まるシーンでの使用が想定されている
使用例:移動無しの会話型アドベンチャー
㊸ Repaint Background:ダイアログや背景に描画したテキストを削除
ポイント:
新たに背景テキストやダイアログを表示する前に使うと便利
使用例:㊷やDisplay Background Textと併用してテキスト表示リフレッシュ
㊹ Load Sprite:スプライトをロード
※己の知識不足ゆえ使い道にピンとこなかったため未検証…
Mini Variables Plugin for GB Studio
変数の中にミニ変数を作るプラグインです。
最終更新が2021年のため一部のイベントで実行時エラーが出たりと実際に活用するのは難しいかもしれません。
新たなバージョンに合わせたアップデートをお待ちしています…
㊺ Variable: Set 2-Bit Variables:普通の変数内に2ビット変数を複数設定
㊻ Variable: Set 2-Bit Variable:普通の変数内に2ビット変数を単数設定
㊼ Variable: Set 4-Bit Variables:普通の変数内に4ビット変数を複数設定
㊽ Variable: Set 4-Bit Variable:普通の変数内に4ビット変数を単数設定
ポイント:
2ビットのミニ変数:0~3の値が保存可能
4ビットのミニ変数:0~15の値が保存可能
普通の変数1つにつき2ビットミニ変数×4つ=4ビットミニ変数×2つを保存できる
※最終更新日が2021年なので、普通の変数が16ビットではなく8ビットであることが前提となっている
※後述の㊾でエラーが出て直接このミニ変数から値を引き出せないため、現在の用途はかなり限定されるだろう
※ミニ変数は普通の変数を2進数で表現した場合の下の桁から2桁ごとに切り分けてインデックス番号が振られている
例)
普通の変数Aの2ビットミニ変数1に2の値を保存すると変数Aは00 00 00 10(2進数)
普通の変数Aの2ビットミニ変数4に2の値を保存すると変数Aは10 00 00 00(2進数)
使用例:不明(有識者の方お待ちしています)
㊾ Variable: Store Bits in Variable:ミニ変数から普通の変数に値を保存
※実行時エラーのため未検証
um3k's GB Studio stuff
文字列を扱うことに特化したプラグイン3種です。
後述の件で日本語をそのまま扱うのは難しいですが、アルファベット大文字を使うのであれば㊿以外のイベントは問題ないようです。
㊿ Display Dialogue Enhanced:強化ダイアログ表示
※実行時エラーのため未検証
51 Load String into Variables:変数に文字列を格納
ポイント:
使う変数の数を文字列の長さに合わせてくれる機能がある
※大文字Aが!(ASCiiコード33)になったり小文字aが大文字A(ASCiiコード65)になったり日本語入力は全く別の文字になったりする
使用例:入力された名前を表示(アルファベット大文字限定)
52 Variable: Copy Range:変数コピー
ポイント:
変数から変数に値をコピー
※複数いっぺんに操作可能
文字列を扱う時やそれ以外にも使える
使用例:文字列の操作時
Maximum SFX
53 Maximum SFX:ROM同梱のGame Boy Sound Manipulatorを併用して効果音を作る
※動作環境の都合により未検証
Pico8 SFX / Max SFX
効果音関連のプラグイン2種です。
54 Pico8 SFX:Pico8で作った効果音をGBStudio用に変換
※Pico8ユーザーではないため未検証
55 Max SFX:上記Maximum SFXの3.1対応版
※動作環境の都合により未検証
おわりに
ここまで(Platformer Plusに含まれる複数のスクリプトイベントをひとまとまりとしてカウントし、未検証のものを含めると)計55個のプラグインをほぼ紹介してきました。
繰り返しになりますが、使用例としてあげたものはあくまで筆者の考えた一例でありどのプラグインも工夫次第で様々な活用法があると思います。
この記事をご覧になった皆様ご自身で、自分のゲームをより面白くするため、または「こうしたい!」を実現するために創意を躍らせてください。
また、GB Studio本体の更新が活発に行われているために最新環境では動かなくなってしまったものもありますが、プラグインで実現されていた機能が公式に取り入れられたりすることもあるため、そのあたりは一長一短ですね。
本体は現在ver.4.0のβテスト中とのことで、そちらも楽しみです。
最後に…まとめてになってしまいますが、全プラグインの製作者様に深く感謝いたします。
こういったプラグインのおかげで出来ることが増えて思ったように作品が作れています。また、「このプラグイン、どんな場面で活用できるかな…」といった思考から新たなゲームのアイディアが生まれることも多々あります。
将来的には自分でプラグインを作りたいな… するか、JavaScriptの勉強…!
長い記事になりましたが、ここまで読んでいただきありがとうございました。
今後ともよろしくお願いいたします。
参考文献
主にプラグインを探すため、参考にさせていただきました。
本当にありがとうございました。