『RPGツクールMZ』の基礎プラグインを調べてみた

6 min read読了の目安(約5700字

色々探す前に基礎プラグイン

『RPGツクールMZ』の[ヘルプ]メニューの[資料集]-[公式プラグインの使い方]には、付属プラグインの簡単な解説があります。
新規プロジェクトに入っているものと、dlc/BasicResources/plugins/official に入っているものがあって、以下のような感じです。

プラグイン 作者 場所 説明
AltMenuScreen 尾島陽児 新規プロジェクト メニューのキャラレイアウトを縦に
AltSaveScreen 尾島陽児 新規プロジェクト セーブ画面を別レイアウトに
ButtonPicture 尾島陽児 新規プロジェクト ピクチャをコモンイベントを呼ぶボタンに
EventCommandByCode トリアコンタン official コマンドを直に呼ぶ
ExtraImage トリアコンタン official シーンごとに画像を追加
ExtraWindow トリアコンタン official シーンごとにウィンドウを追加
MaterialBase トリアコンタン official 画像・音声をID指定
OverpassTile トリアコンタン(original 尾島陽児) official 立体交差
PluginCommonBase トリアコンタン official プラグインの前処理
RegionBase トリアコンタン official リージョンの機能拡張
TextPicture 尾島陽児 新規プロジェクト 文字を画像に変換
TextScriptBase トリアコンタン official 文字列を管理
UniqueDataLoader トリアコンタン official 外部データ読み込み

※ヘルプにはUniqueDataLoadingって書いてありますがUniqueDataLoaderの誤記です(バージョン1.2.1で修正されました)

新規プロジェクトのプラグインは尾島陽児(Yoji Ojima)さん、officialに入っているのはトリアコンタン(triacontane)さんみたいな感じですね。
dlc/BasicResources/plugins/ には launch フォルダもあって、こちらにもプラグインが入ってるんですがヘルプでは解説してありません。
これは別に『RPGツクールMZ』のロンチプラグインを調べてみたで書いています。

『RPGツクールMZ』も発売から半年たちプラグインもかなり豊富になってきました。
しかし足元を把握するのが賢明ということで、一個一個見ていきたいと思います。

AltMenuScreen

こいつは簡単。導入するだけでメニューのキャラレイアウトが縦型に変わります。
これをそのまま使ってもいいけど、メニュー改造プラグインのサンプルとして有用ですね。

AltSaveScreen

これも入れるとレイアウト変えるタイプ。
レイアウトが変わるだけでなく、顔グラが追加されるので画像の扱い方も分かります。

ButtonPicture

画像をボタンとして使え、クリック・タップでコモンイベントが呼び出せるようになる。
プラグインコマンドを使うので、プラグインコマンドの設定方法の勉強になります。
ただ、大抵の場合は後で説明する PluginCommonBase を使った設定方法を使ったほうが何かと便利かと思いますが。
クリックイベントの設定方法の勉強にもなります。
これで、マウス・タッチ操作のゲームが作りやすいですね。

TextPicture

テキストを画像にしてくれる。
アイコンとかの文章の表示に使える制御記号も使える。
画像として表示するので、上記の ButtonPictureと組み合わせることもできる。
一旦ウィンドウを作って文字を生成してビットマップを抜き出したらウィンドウを削除、みたいな方法で作ってて「へー」。

以上が新規プロジェクトを作った際に入ってるプラグイン。
新規プロジェクトに入れておく必要あるのかって気もするけど、プラグイン利用のハードルを下げる意味はあるし、使いやすいものなので、あった方がいいのかな。
MVのスプラッシュスクリーンみたいな、ゴリ押しの邪魔なやつでもないし。

EventCommandByCode

変数渡しが難しいコマンドもこれがあれば行ける! 後述の MaterialBase や TextScriptBase と組み合わせると、さらに使い勝手が良くなる。
いやもう本体のコマンドとかいらないね! (言い過ぎ)
でも例えば、BGMの演奏(あれ?設定って書いてあるけど間違いかな)だとパラメータにこれ渡す必要があるんだけど、そんなん分かんないよね。

{
    "name": "Battle1",
    "volume": 90,
    "pitch": 100,
    "pan": 0
}

あと、EventCommandByCode は[文章の表示…]とか、内部的には複数行にわたるコマンドには対応してなくて、そのへんも事情知らないと、理解しがたい感じ。

でも、プラグインを書く前に、これでプログラム的なものに慣れるのにはいいかも。
サブルーチン的にコマンドを呼び出しているだけで、コードはめっちゃシンプル。
むしろシンプルすぎて意味わかんないかもしれない(笑)
Game_Interpriter が this に当たるんで、メソッドを this.メソッド名() で呼び出せる。
ここでは文字列で this["メソッド名"]() と呼び出してる。

ExtraImage

多分こんな感じにタイトルにキャラ置いたりして「わーい」ってやるプラグイン。
各シーンごとに設定できるんで、メニューに豪華枠乗せたりとかもできる…と思う。
Spriteを継承したクラスによる画像の扱い方がよくわかる。

横方向拡大率を-100にすると左右反転できるよ。
そのほか、出現条件スイッチやら(手前・奥の)優先度など気の利いたパラメータもあって使いやすい感じ。

ExtraWindow

ExtraImageのウィンドウ版。
こちらはWindow_Baseを継承したクラスの作り方使い方がわかる。

サブタイトル書いてみたりとか、著作権とかバージョン表記とかしておくのにいいんじゃないかな。

MaterialBase

画像や音声を指定する場合にID指定できるようにするもの。
IDは文字列が使えるので管理が楽。
EventCommandByCode を使えばいろんなコマンドに適用できるけど、一応、IDを使った画像・音声の使用コマンドも付属してて親切。
これ本体で用意すべき機能だとは思う。

OverpassTile

MVにあった立体交差プラグインのMZ版ではあるんですが、地形タグの指定もできるなど、色々とバージョンアップしてます。
Trinityの機能にあったんだから、本体機能にしてよかったんでは?
そもそも立体交差の機能自体は、コアスクリプトに存在するんですよね。

PluginCommonBase

プラグインの引数を型変換した上で渡してくれるようにするなど、全プラグインこれをベースプラグインにしていいんじゃないかな、みたいなプラグインです。
というか本体にこの機能組み込んどいてくれよ、と思います。
僕が作るプラグインも、基本このプラグイン前提で作ります。

ヘルプのパラメータの説明に「マスク処理無効化」とか書いてありますけど、どっからきた情報ですかね?
完全に無関係な情報が書かれてるみたいですけど。

RegionBase

リージョンと地形タグの機能をパワーアップするプラグイン。
タイルごとの衝突判定や、[茂み]などの特徴指定、スイッチのON/OFF、コモンイベント呼び出しなど小さい割に多機能です。
応用すれば非常に多くの処理が実現可能になりそうな、夢が膨らむプラグインですね。
これもTrinityにほぼ同様の機能あるんだから、本体に組み込んでデータベース用意して欲しかった。

TextScriptBase

データベースの用語のさらに追加バージョンみたいなプラグインです。
「宝箱は空っぽだ」みたいな、たくさん設置する同じ文章をデータベースで一元管理、という感じの使い方…かな?
ダンジョンクリアで村人のセリフが変わる、みたいなのにも使えそうです。
セーブファイルに保存されるので、大量の文字列を扱うものでもないと思いますが。
変数でもほぼ同じことが可能な機能ですが、何でもかんでも変数にぶち込むと混乱しますし、こっちは識別子に文字列が使えるんで、圧倒的に使い勝手がいい…というか本体の変数なんで数字指定なの???
これも本体に欲しいですよね。

PluginCommonBase をベースプラグインとしているプラグインなら、メモ欄、プラグインコマンド、プラグインパラメータにも使えるので、共通した設定を管理するのに便利です。
スクリプトも登録できるんで、サブルーチン的に使えたりします。
たったこれだけの処理にプラグイン作るの面倒だけど、使う箇所は多いから一元管理したい、みたいな時に使える感じ。

UniqueDataLoader

外部JSONファイルを読み込んで大域変数に保存するプラグイン。
基本的には、プラグインが使うプラグイン。
単純に、指定した大域変数のプロパティとして登録されるだけなので扱いは簡単。
システムデータを入れてる $dataSystem に上書きして、後から設定をまるっと変えるみたいなこともできる…はず。
章ごとに $dataActors を入れ替えて、しまうみたいなこともできるのかも。
実際どう使うかは、やりたいシステムと工夫次第でしょうか。

これも本体に組み込んで、さらに衝突を避ける仕組みを用意しておいて欲しかったところ。

ということで、一通り触ってみました。
officialにあるプラグインは全部トリアコンタンさんが作ったやつなんですね。
OverpassTileだけは、移植+機能強化ですけど。
トリアコンタンさんがヘルプに画像つけて解説しているページもありますので、実際使う時に参照するとより理解が深まると思います。
また公式フォーラムでツクール開発部さんが書いてる【RPGツクールMZ】プラグイン紹介も参考になります。

特に派手な機能というわけではないけど、工夫すると威力を発揮しそうなプラグインが揃ってます。
逆にいうと、どう使っていいか最初はよくわからないというか、作者のトリアコンタンさんも、どんな使われ方するんだか明確に想定してない部分も大きそうな感じです。
「やべぇ、この機能あったら無限に拡張できちゃうじゃん」ぐらいの感覚で、どう拡張するのがいいかはそこまで考えてないみたいな(笑)

全体的に「本体に入れておきたかったんだけど…」って感じのプラグインなので、積極的にベースプラグインに指定して活用していけばいいと思います。

いやむしろ、ここまで全部新規プロジェクトのプラグインとして入れといたほうがよかったんじゃないかという気すらする。