GB Studio TIPS⑦もっとプラグイン特集
このTIPSシリーズでは、GB Studioを使っていて躓きがちな…というか自分が前に躓いた点をピンポイントに解説していきたいと思います。
第7回目はおおよそ3度目になるプラグイン特集。
日々素晴らしいGB Studio用プラグインが更新されており、それらを少しでもご紹介したいと思い再び筆を執りました。
今回はGithubで探したり、X(Twitter)で拝見したものを中心に。
※以下の内容は一つ一つ検証し出来るだけ正確になるよう心掛けていますが、間違っている可能性も大いにあります。ご留意ください。
※各サンプルやプラグインのダウンロードや導入はライセンスやソースを確認した上で、あくまで自己責任でお願いします。
使用ソフト:GB Studio 4.1.3
カラーの表現力向上
Fade Street
フェードをはじめとしたカラー表現の大幅強化
ポイント:
導入すると元からあるフェードアウト/インは無効化されるので、新たにプラグインによるイベントを追加する必要がある
サンプルプロジェクトや説明ページが充実している
使用例:
リッチな画面作り など
シーンタイプ置換、シーン間切替
Adventure Reforged
アドベンチャーシーンタイプの置き換え
ポイント:
○プレイヤーが通り抜けることができないソリッドアクター
・ソリッドアクターはアクターの衝突タイプを [なし] に設定
※通り抜け可能なアクターとソリッドアクターを重ねるとソリッドアクターの衝突判定の位置がずれてしまうので注意
○アクターが互いやプレイヤーを通り抜ける
※ソリッドアクター同士でも通り抜ける
※ソリッドアクターとプレイヤーでも通り抜けるが、重なった状態のときはプレイヤーが動けなくなるので注意
○切り替え可能な背景衝突
・「設定」>「Adventure」>「Toggleable Collision」で切り替え(エンジンフィールド更新イベントでも変更可能)
・Passable:通り抜け可能 / Impassable:通り抜け不可
・設置方法はソリッドコリジョン+はしごコリジョン
※プレイヤーではなくアクターはコリジョンを利用する移動のときPassableな衝突を通り抜けられない
○切り替え可能な水泳の動き
・「設定」>「Adventure」>「Swimming」で切り替え(エンジンフィールド更新イベントでも変更可能)
・有効にするとプレイヤーの移動がゆっくりになる & A+方向押下で一度素早く前進する(水を掻く)
○その他注意事項
・プレイヤーの移動速度は 1 固定
・Actors Pass Through Actorsの機能が含まれているため、別個で入れる必要はない
使用例:
見下ろし型パズルアドベンチャー など
scrollScenePlugin
スクロールしてシーンチェンジ
ポイント:
シーン端にトリガーは不要
シーン間で共通のタイルセットを使っている必要がある
※他のプラグインと競合する可能性に注意
使用例:
ゼル伝ライクな画面移動 など
アクターの動作、見え方等
Actor Hop / Social Hop
アクター(単体・複数)が飛び跳ねる
ポイント:
飛び跳ねる上方向にコリジョンがあってもぶつからず実行される
ジャンプしている間は(マルチスレッドを使わない限り)動かない
※シーンタイプがトップダウン2Dの場合、マルチスレッド使用時かつ上から話しかけると位置が重なって動けなくなる
【Social Hopの場合】ジャンプ回数(Max Hop Sequence)の決め方にやや癖がある(1回:first actorが1回ジャンプ / 2回:first actorが1回ジャンプした後second actorが2回ジャンプ…以下略)
使用例:
RPGでのNPCの演出 など
SetProjectileRenderOrder / RenderProjectilesAboveActors
アクターと発射物の重なり調整 / アクターの前面に発射物表示
ポイント:
後者はプラグインフォルダに追加したら自動的に有効になる
使用例:
アクションで敵の攻撃をはっきり見せたい場合 など
Store Actor ID In Variable
アクターIDを変数に保存
ポイント:
IDはプレイヤーも含めて0始まり、シーンに追加された順
使用例:
話しかけたアバターが正しいか同一スクリプトでチェック など
アクターIDを指定する他プラグインと組み合わせて使えそう
発射体の機能拡張
Custom Projectile Plugin
発射体の軌道変更
ポイント:
★使い方
発射体イベントの前に「Custom Projectile」を入れる
★説明
○Default:通常の発射体
○Arc:発射体が放物線を描いて飛ぶ
高さ(Height)と重力(Gravity)が設定可能
○Boomerang:ブーメラン的な動き
飛んでいく方向の反対からの抵抗(Resistance)が設定可能
○Sine Wave:正弦波(うねうね)
波の幅(Amplitude)、繰り返しの速さ(Frequency)、波のどこから始まるか(Phase)を設定可能
○Orbit:対象の周りをぐるぐる回る
回りながら前進するような設定も可能(Launch Projectiles オン、別個イベント「Launch Orbiting ○Projectiles」でも設定可能)
回転の中心となる対象(Orbit Center)、オフセット、対象からの距離(Amplitude)、回転の速さ(Frequency)、どの角度から始まるか(Phase)を設定可能
○Hookshot:フックショット
先頭・鎖1-3のうちどのパーツか(Hookshot Chain)、背景コリジョンとぶつかった時どうなるか(Collision Behaviour)を設定可能
その他、フックショットの状態は「Set Hookshot State」イベントで設定可能
※フックショットの状態は発射体で共通なので同時に複数のフックショット先頭を発射できるようにすると変な動きになるため、発射中はプレイヤーの動きを制限すること
※発射体の方の設定でコリジョン対象にプレイヤー追加、ヒット時に消滅、方向オフセットを任意の値(発射時にプレイヤーのスプライトに被らない数値)にしておくと手元に戻った時発射物が消滅するようにできる
※フックショット発射体は発射体の寿命を無視するため、手動で削除する必要がある
○Custom:独自に設定可能
※Deltaに設定する変数はGrobal変数のみ可能
★共通:プロパティタブの設定項目
・Infinite Lifetime:オンにすると発射体がシーンから消えなくなる(別途イベント「Set Projectile Lifetime」でも設定可能)
・No Bounds:画面から消えたら発射物が消える
・Gravity:発射物にかかる重力
・Collision Behaviour:発射物がコリジョンにぶつかった時にどうなるか
・No effect:なし
・Remove Projectile:発射体が消える
・Bounce:発射体が落ちた後滑る
・Bounce (only floor) :床にぶつかった時のみ↑
・Update Variables on removal:発射体が消えた時のぶつかった座標を変数に保存(Local変数、Temp変数はエラーが出るのでGrobal変数を使う)
※「設定」>「Custom Projectile」にイベントで設定できる値があるため、参照したい場合はエンジンフィールドの値を変数に保存したりできそう
※ Hookshot:トップダウン2D向き / その他Custom以外:プラットフォーマー向き な感じ
使用例:
悪魔城やロックマン、ゼル伝のような発射物 など
コリジョン接触によるイベント実装
Attach TopDown Tile Collision Script / Clear TopDown Tile Collision Script
コリジョンの種類によってイベント実行 / 衝突によるイベント実行を削除
TopDown Tile Collisionsにまとめられている
ポイント:
壁にぶつかったらどうこう…というイベントを実装 / 削除
Retrigger:コリジョン方向にキーを入力しっぱなしにしているとき、一定フレーム後に再びイベントが呼び出される
使用例:
触れるとダメージを受けるゾーン、その解除 など
メニューの制作
Cursor Controller
簡易的なカーソル操作を実現
ポイント:
日本語ドキュメントがかなり詳細で助かります!
"スムーズな移動"を有効にしているとカーソルが移動しきらないときがある…?
オプションがたくさんあるので様々な組み合わせを試すとGOOD
使用例:
項目を選択する必要があるメニュー など
ダイアログイベントをまとめる等
Dialogue Tree Builder
ダイアログ & 選択肢 & 条件式のセット
ポイント:
テキスト部分には !f(フォント変更) 等も使える
使用例:
ショップシステム など
Actor Dialogue Cycler
複数のダイアログをループ表示
ポイント:
話しかける度に別のダイアログを表示する
ダイアログ群は同一のイベントで登録可能
使用例:
NPCのランダム台詞 など
Set Cursor
ダイアログに出るカーソルのスプライト変更
ポイント:
tilesetsフォルダ下のスプライトが選べる
使用例:
シーンによって違うカーソルを使う など
フラグイベントをまとめる
If Variable Has All Flags / If Variable Has Any Flags
任意のフラグが全てtrueの場合 / 任意のフラグのどれかがtrueの場合
ポイント:
変数のフラグ条件分岐を入れ子構造にしなくてもこれ一つでAND条件 / OR条件が表現できる
使用例:
複雑なフラグ条件分岐時 など
おわりに
このTIPS全般に関してでもありますが、個人用の備忘録やノートも兼ねている書き連ねのため、読みにくいところがありましたら申し訳ありません。
大規模なプラグインは見ただけでできることが増える可能性にワクワクします。
その原動力を活かし、少しでもGB Studioでゲーム制作をされる方のお力になれればと思います。
また、使用例としてあげたものはあくまで筆者の考えた一例であり、どのプラグインも工夫次第で様々な活用法があると思います。
この記事をご覧になった皆様ご自身で、自分のゲームをより面白くするため、または「こうしたい!」を実現するために創意を躍らせてください。
今回も、勝手ながら取り上げさせていただいたプラグインの製作者の皆様に深く感謝いたします。
以前の記事の締めで宣言しましたが、現在自分でプラグインを自作する試みも続けています。形になったら制作記もあわせてご報告…したいなぁ……(願望)
最後に、ここまで読んでいただきありがとうございました。
今後ともよろしくお願いいたします。