開発日誌

テクニック

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] RPGツクールMZプラグインまとめ

2021-01-22 21:37:22

去年の8月以降、RPGツクールMZ(MVも一部対応)のプラグイン素材をいくつか公開してきましたが、埋もれてしまったものも多そうなので、ここらでまとめて紹介します。

ルビ表示プラグイン

詳しくは「RPGツクールMZでルビを振る」記事参照。

こんな感じでテキストにルビを振ることができるプラグインです。

{九尾|きゅうび}の{狐|きつね}のように、ルビを振りたい文字を{ }で囲んで、 | の手前の漢字、後ろにルビを記述すれば、ルビ付きのテキストとして表示されるようになります。

とてもシンプルな記述でルビを実現できるので便利!

ややルビの文字サイズが小さめですが、1行の高さを標準から変えずにルビ振りができるので、ウィンドウレイアウトに影響しないのが特徴です。文章の表示だけでなく、アクター名、スキル名、敵キャラ名、説明文や戦闘メッセージなど、基本的に全てのテキストに対応しています。

進行状況ウィンドウプラグイン

詳しくは「メニュー画面に物語の進行状況を表示」記事参照。

メニュー画面上部に、現在の物語の進行状況を示す簡単なテキストを表示できるプラグインです。

進行度を管理する変数を1つ用意し、その変数の値に応じたテキストを入力しておけば、メニュー画面を開いた際に常に現在の進行状況が表示されます。日をまたいでプレイ再開した時に、「次は何をすればいいんだっけ?」となるのを防げます。

ウィンドウの位置は好みの場所に調整可能です。

データベースの名前表示プラグイン

詳しくは「文章中にアイテムや敵キャラ等の名前を表示」記事参照。

「文章の表示」コマンドやアイテム等の説明文で、以下の制御文字をそれぞれの名前に置き換えてくれるプラグインです。

\class[n] n番の職業名
\skill[n] n番のスキル名
\item[n] n番のアイテム名
\weapon[n] n番の武器名
\armor[n] n番の防具名
\enemy[n] n番の敵キャラ名
\troop[n] n番の敵グループ名
\state[n] n番のステート名

\item[\V[1]]のように、nに変数を用いることも可能です。また\*skill[n]のように頭に*を付けると、そのスキルのアイコンを表示できます(item、weapon、armor、stateも同様)。

上のように書いておくと、下のように表示されます。

アイテム発見イベント規格化プラグイン

詳しくは「アイテム発見イベント規格化プラグインとサンプルミニゲーム」記事参照。

宝箱やタンス、タルなどを調べるとアイテムが見つかる、というイベントを簡単に組むためのプラグインです。

イベントの名前を例えばi1とすればID1番のアイテムが、w25とすればID25番の武器が、g500とすればお金500Gが、手に入るイベントを作成できます。アイテム入手時の演出やメッセージは、上の「データベースの名前表示プラグイン」と組み合わせたコモンイベントで作成します。

後から宝箱の中身を変更する際に、イベント名を変更するだけで済むので、とても便利です。ちょっと作成方法がややこしいので、上記記事で紹介しているサンプルゲームも参考にしてください。

重要語句の文字色変更プラグイン

詳しくは「重要語句の文字色変更プラグイン」記事参照。

「文章の表示」コマンドや説明文等で <N人名> のようにテキストを囲むと、囲まれた部分の文字色を手軽に変更することができます。人名は青、アイテム名は赤のように、語句のタイプに応じて色を変えることができ、語句のタイプと対応する色は自由に指定可能です。

プラグインがなくても色の変更は制御文字の\C[n]で可能ですが、人名は青にしてたっけ赤にしてたっけとか、色を戻し忘れたりとか、後から人名はやっぱり黄色にしたいとか、このプラグインが役に立つ場面はいくらでもあるはずです。

アイテム獲得メッセージにアイコン表示プラグイン

詳しくは「アイテム獲得メッセージにアイコンを表示」記事参照。

こんな感じで、戦闘終了時のアイテム獲得メッセージにおいて、アイテム名の頭にアイコンを表示させることができるプラグインです。

なお、サンプル画像ではアイテム名の色も変わっていますが、これは「用語」の「メッセージ」で色を変更しているだけです。

バフ・デバフ効果個別設定プラグイン

詳しくは「バフ・デバフの効果を個別に設定」記事参照。

バフ・デバフの倍率を、能力値および強化か弱体かでそれぞれ個別に設定できるプラグインです。

デフォルトだと全て1段階につき25%共通なので、能力値によっては物足りなかったりします。それが柔軟に設定できます。

セルフスイッチ操作プラグイン

詳しくは「任意のセルフスイッチを消去」記事参照。

プラグインコマンドで、対象のマップID、イベントID、スイッチID(A-D)を指定すると、該当のセルフスイッチをOFFにすることができます。マップIDは全てのマップや現在のマップ、イベントIDやスイッチIDは全てのものなども指定可能です。

特定セルフスイッチ消去プラグイン

詳しくは「特定のセルフスイッチをリセット」記事参照。

マップに入った際、そのマップにあるイベントのうち、名前が指定した正規表現にマッチするイベントのセルフスイッチをOFFにできるプラグインです。

マップに出入りするたびに復活する宝箱とか、開けた扉や押したスイッチを元の状態に戻したい時とかに使えます。

メッセージ中にスイッチ操作プラグイン

詳しくは「台詞の途中でスイッチ操作 in MZ」記事参照。

文章表示の途中でスイッチのON/OFFができるプラグインです。

「文章の表示」の制御文字で、\+switch[n]と入れるとn番のスイッチをONに、\-switch[n]でOFFにできます。

スイッチに連動した並列処理を使うことで、台詞の途中の狙ったタイミングでキャラクターを動かしたり、フキダシアイコンを表示したり、効果音を入れたりすることが可能になります。

戦闘終了時特殊処理プラグイン

詳しくは「戦闘終了時に特殊処理」記事参照。

戦闘終了後に直ちにフェードアウトさせたり、BGM/BGSを継続させずに停止したり、勝利時・敗北時など条件によってスイッチをONにできるプラグインです。バトルイベントの0ターン目(戦闘開始時)に、プラグインコマンドで指定するようになっています。

ボス戦後などにイベントを実行したい時、標準だと経験値やお金の獲得メッセージを出している間に元のBGMが流れてしまいますし、イベントが始まる前に一瞬だけ元のマップが表示されてしまいます。このプラグインを使うと、BGMを停止させたり、フェードアウトした状態でイベントに移行することができます。

選択肢表示時SEプラグイン

詳しくは「選択肢表示時にSEを鳴らす」記事参照。

「選択肢の表示」で選択肢ウィンドウが表示される際に、SEを鳴らすプラグインです。

職業名の代わりに二つ名表示プラグイン

詳しくは「職業の代わりに二つ名を表示」記事参照。

ステータス画面等で職業名の代わりに二つ名を、二つ名の代わりに職業名を表示するプラグインです。後者はプラグインパラメータで非表示にすることもできます。

長編RPGなどで、ストーリーに応じて主人公の職業が「村の自警団兵」→「王国兵」→「勇者」などと変化する場合、それを職業の代わりに二つ名の変更で済ますことができます。

イベントスキッププラグイン

詳しくは「イベントスキップを実装した」記事参照。

並列処理イベントと連携して動くプラグインで、指定したラベルの位置(もしくはイベントの最後)までイベントをスキップさせることができます。あまり高機能ではなく、会話だけのイベントを飛ばすといった限定的な使い方を想定しています。

VX方式経験値算出プラグイン

詳しくは「必要経験値の計算をVX方式で」記事参照。

レベルアップに必要な経験値の算出方法をVXでの方式に変更するプラグインです。

VX Ace以降、MV、MZの算出方法だと、序盤はなかなかレベルが上がらない一方、中盤以降はどんどんレベルアップしてしまい、バランス調整が非常に難しいです。VXでの算出方法に変えることで、調整をやりやすくすることができます。


以上、全部で15個ありました。思ったより作ってましたね。

あまり派手なものはないですが、ツクールのちょっと物足りないところや融通の利かない部分を補う、便利なプラグインだと思います。ぜひご利用ください!

質問やアドバイスなどはコメント欄まで、お気軽にお願いします。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。

[ テクニック ] 透明タイルや空イベントを使ったツクールの小技

2020-12-18 00:00:12

本記事は「ツクールフォーラムアドベントカレンダー Advent Calendar 2020」12月18日分の投稿記事です。

今回は、透明タイルや空イベントを使った小技について紹介します。

割と基本的で伝統的な小技なので既にご存じの方も多いと思いますが、基本的ゆえにあまり解説されていなかったりもしますので、改めてご紹介したいと思います。

ツクールのバージョンに関わらず共通して使えますので、応用範囲も広いです。

透明タイルで通行制御

例えば次のような、段差に橋が架かったマップを考えます。

しかしこのままでは、この橋は渡れません。

段差の縁には自動的に四方向通行設定がなされていて、下方向以外は通行不可に設定されています。赤線の間は互いに行き来ができません(当然、壁面の部分はもともと通行不可なので、階段部分以外の下方向にも行けません)。

したがって、下方向にある階段とは互いに行き来ができますが、横方向にある橋とは互いに行き来ができないのです。

これを解決するには、小石や草花といった通行可能な装飾タイルを上に置けばOKです。

RPGツクールの通行判定は、レイヤーが上のタイルの通行設定(ただし[☆]のタイルは無視)が優先される仕組みになっています。なので、下層レイヤーのタイルが通行不可でも、上層レイヤーに通行可のタイルを置けば通行可能になります。

とは言え、橋のたもとにいつも小物が置いてあるのは、景観的に問題があります。

そこで活躍するのが、透明タイルです!

タイルセットの画像にわざと透明のタイルを作り、通行設定を[○]にします。

そしてこの透明タイルを橋のたもとに置くのです。こうすれば外観を変えることなく通行設定を制御することが可能です。

注意点としては、Bタイルの一番左上に透明タイルがありますが、これは上層レイヤーに何もないことを表すタイルなので、通行設定をデフォルトの[☆]から変更してはいけません。必ず別のタイルを透明にして使いましょう。

また、透明なので、実際にタイルが設置されているのか分かりづらいです。なので、開発段階では透明ではなく、分かりやすく○などの記号を入れておくのがお勧めです。リリース時に透明に直すのを忘れないようにしてください。

また通行可にするのとは逆に、通行設定を[×]にした透明タイルで、通行不可にすることもできます。

よくある使い方としては、段差の縁に草花などの小物を置くと、前述の通り上層レイヤーの通行設定が優先されるため、段差の四方向通行設定は無視されて、上側に通り抜けられてしまいます。

そんなところに小物を置かなきゃいいという話でもありますが、置きたい場合もあるでしょう。マップの構造上、上側に立ち入れる必要がないのなら、上側に通行不可の透明タイルを置けば、この問題は解決します。

モブキャラの移動範囲を制御

マップ上にモブキャラを設置して、全く動かないのは味気ないので、自律移動を「ランダム」にして歩き回らせるとします。

そうした時によく起こる問題として、気付いたらキャラクターがとんでもない位置にいたとか、狭い通路に入り込んでプレイヤーの邪魔になるといったことがあります。

前者の問題に対しては、元の位置からあまり離れすぎた場所に行かないようにするプラグインなどもありますが、後者の狭い通路に入り込んでしまう問題には、基本的に無力です。

しかし、後者の問題も解決できる、もっと簡単な方法があります。

「すり抜け」でないイベント同士は重ならない性質を利用して、立ち入ってほしくない場所に空のイベントを設置するのです。

こうしておけば、その場所にはキャラクターが行かないようになります。もちろんプレイヤーキャラクターは普通に通行が可能です。

これ以上進んでほしくないところや、1マスしかない通路の入口、ドアや宝箱の前などに空のイベントを設置すれば、元の位置からあまりに離れたところまで行ったり、狭い通路でプレイヤーの邪魔をすることもなくなります。

イベントの内容はデフォルトの状態で構いません。画像は「なし」、「すり抜け」がOFF、プライオリティが「通常キャラの下」になっていればOKです。

注意点としては、空とは言えイベントには違いないので、むやみやたらと置くと重くなります。斜めに置いたり、壁や樹木、テーブルなど通行不可のオブジェクトを上手く利用したりして、設置する数を節約しましょう。

宝箱をカウンター越しに開けられなくする

カウンター属性を利用すると、お店などでカウンター越しに店員と話ができるので便利です。

ただ仕様的には、「カウンター越しにキャラクターと話せる」という機能ではなく、「カウンター越しにイベントを起動できる」というものに過ぎません。

したがって、宝箱などをカウンターに隣接して設置すると、それもカウンター越しに開けられてしまいます。これだとちょっとマズいですね。

そもそもそんなところに宝箱を置かなきゃいいと言われればその通りなのですが、マップを作っていると案外こういうことはよく起こります。

これを解決するには、カウンター部分に空のイベントを置けばOKです。

ただし今回は「モブキャラの移動範囲を制御」とは違い、デフォルト状態だとイベントが無視されて、カウンター属性が効いてしまいます。

無視されないようにするには、プライオリティを「通常キャラと同じ」にすることと、実行内容が空でないことが必要です。実行内容は空でさえなければ何でもよく、例えば「注釈」だけにしておけば、他に何も影響しないのでオススメです。

こうしておけば、カウンター上にあるイベントが優先的に起動するので、カウンター越しに宝箱が開けられることはありません。

宝箱以外にも、カウンター裏のスイッチとか、カウンターの奥に倒れている人とか、カウンター越しに発動すると違和感のあるイベントに使えます。

ポイントは、設置する空イベントのプライオリティを「通常キャラと同じ」にすることと、実行内容が空でないことです。

逆に、実行内容が空であれば、イベントが設置されていても無視してカウンター属性が発動するため、カウンターの上にイベントで小物等を置いても、問題なくカウンターとして機能します。

タッチUIで額縁や貼り紙を調べる

2マスある壁の上側に置いた額縁や貼り紙を調べるイベントを考えます。

壁の上側だと直接は触れないので、壁の下側にイベントを設置するのが普通です。キーボードやコントローラーの操作ならば、これで何の問題もありません。

しかし、MVから導入されたマウスやタッチ操作の場合、このやり方だとちょっと不都合があります。額縁や貼り紙自体をタッチしても、そこにはイベントが設置されていないので反応しません。その下をタッチしないと反応しないという、やや直感的でない操作を要します。

かといって、額縁や貼り紙自体にイベントを設置しても、壁が邪魔なので、やはりイベントは起動しません。

それを解決するには、カウンター属性付きの透明タイルを利用しましょう。

まず先述の「透明タイルで通行制御」と同様に、タイルセットに透明のタイルを作って、そこに「カウンター属性」を付与します。もちろん通行設定は[×]にしてください。

そしてイベントは額縁や貼り紙自体に設置し、その下のマスの上層レイヤーに、このカウンター属性付きの透明タイルを置きます。

こうすることで、望み通りの動作をさせることができます。

先述の通り、やはり透明タイルのままだと分かりにくいため、開発段階では◆などの記号にしておき、リリース時に透明タイルにすることをオススメします。

おわりに

いかがだったでしょうか?(キュレーションサイト風)

いずれも少しの工夫で、仕様上の不都合が解決したり、プレイしやすくなったりするので、オススメです。

この手のテクニックは、知っている人にとっては基本的すぎるため、あまりしっかりと解説されていない印象があります。

昔はゲームデータの暗号化機能がなく、エディターを持っていれば中身を開いて見られたため、この手のテクニックも自然と広まっていきましたが、XP以降、暗号化アーカイブが作れるようになってからは、敢えて解説しないと広まっていかないような気もしたので、書いてみました。

それでは今回も長くなりましたが、読んでいただきありがとうございました。

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] メニュー画面に物語の進行状況を表示

2020-12-08 00:00:10

本記事は「ツクールフォーラムアドベントカレンダー Advent Calendar 2020」12月8日分の投稿記事です。

長編RPGをプレイしていてありがちなこと。「次は何をすればいいんだっけ?」

大人になると毎日ゲームして遊ぶというわけにもいかず、忙しくて数日、下手をすると数週間以上も間が空いてプレイ再開ということもあり得ます。

それだけブランクがあると、多くのプレイヤーはこれまでの話の内容や、次に何をすればいいのかをほとんど忘れてしまうでしょう。

ストーリーを百も承知な制作者目線ではなかなか気付きにくいポイントですが、途中で次の目的が分からなくなってプレイを断念するというのはよくある話で、その対策として「思い出すコマンド」や「あらすじノート」など、様々な手法が開発されてきました。

とはいえ、あまり凝った仕組みを作るのはコストがかかりますし、あまりに自己主張が激しい見せ方も抵抗があります。

いろいろ思案した結果、現在の進行状況を示す簡単なテキストを、メニュー画面に表示するようにしました。シンプル!

RPGツクールMZでは、メニュー画面の上部にマウス操作用のボタンスペースがあります。そのままだと1行が収まりきらないのですが、余白を調整することで、何とかこのスペースに1行テキストのウィンドウを表示させることができました。デッドスペースの有効活用!

プラグイン素材として公開します。

使い方は簡単です。

まず物語の進行度を管理する変数を1つ用意し、その変数の番号をプラグインパラメータの「進行度変数」に指定します。

そして、その進行度変数の値に応じたテキストを、「進行度テキスト」にリストの形で入力します。

変数の値がリストの番号に相当していますので、進行度変数の値は1がスタートとなります。値が0の時は何も表示されませんので、オープニングイベントの中で進行度を1にしてやる必要があります。

後は、イベントの時にこの進行度変数の値を順次操作してやればOKです。

数が多いとテキストを用意するのも入力するのもかなり大変ですが、そこは頑張りましょう……。

ウィンドウ系のプラグイン作成にあたって

今回、プラグイン化するにあたって悩んだのが、メニュー画面のレイアウトは様々なプラグインが出ており、各自で変更されていることが多い点です。

そのため、プラグインとして公開しても、ウィンドウの位置がネックとなって、あまり使われないのではないかという懸念がありました。かといって、数あるウィンドウレイアウト系のプラグイン全てに対応させるのは不可能です。

どのようにしたかというと、プラグインパラメータでデフォルトのウィンドウ位置にするかのON/OFFを設けました。

ONの場合はデフォルトの通りにメニューの上部に表示。OFFの場合は別途パラメータで、ウィンドウの左上隅のX座標とY座標、および幅と高さを指定できるようにして、その値に従ってウィンドウを表示させるようにしました。

こうして自由に位置を設定できるようにしておけば、どんなレイアウトでも対応可能ですし、逆にデフォルトでよい場合は何も設定しなくて済みます。

このように、デフォルトレイアウトをOFFにして、ウィンドウの位置とサイズを指定すれば、好きな位置にウィンドウを置けます。ていうか邪魔w

ウィンドウの高さを調整すれば、複数行表示にも対応しています。進行度テキストは\nで改行できます。\N[n]\C[n]などの各種制御文字も反映されます。

ウィンドウをいじる系のプラグインは競合が厄介ですが、このようにデフォルトか位置・サイズ指定かを選べるようにしておけば、柔軟性が増すのではないかと思います。プラグイン化を検討する際は、ぜひ参考にしてください。

単行テキスト入力で改行したい

パラメータの型(type)で文字列型には、単行のテキストであるstringと、複数行のテキストを入力できるmultiline_stringの2種類があります。

今回のプラグインでは、基本は単行のテキストで、指定の仕方によっては複数行も表示できるよ、という形だったので、パラメータ型は単行テキストのstringを採用し、改行したい場合は改行文字\nを入れてもらうようにしています。け……決してmultiline_stringがあることを知らなかったわけじゃありません(汗

当然、単行テキストで\nと入力しても、そのままでは改行だと認識されないため、スクリプト内で改行コードに変換しています。

変数textにパラメータの値が代入されているとして、通常のテキストなら、

text = text.replace("\\n", "\n");

で、\nが改行コードに変換されます。

今回のようなリスト形式であれば、

text = text.replace("\\\\n", "\\n");
text = JSON.parse(text);

で、textに改行反映済みのテキストの配列が格納されます。\がカオス……。

基本は1行だけど、場合によっては改行も可能、みたいなパラメータを設定する場合は、ぜひ参考にしてみてください。

今回も最後まで読んでいただきありがとうございました。

[ テクニック ] RPG制作におけるExcel整理術

2020-12-04 00:00:28

本記事は「ツクールフォーラムアドベントカレンダー Advent Calendar 2020」12月4日分の投稿記事です。

短編ならともかく、ある程度の長さのRPGを作ろうと思ったら、スイッチや変数の管理、武器・防具や敵キャラのパラメーター調整など、管理・調整する内容がいろいろあります。

RPGツクールの「データベース」は、その名の通り、それらの項目を管理できるメニューになっていますが、この中で直接バランス調整などを考えるのはかなり大変です。

これらの管理・調整方法はツクラーによって千差万別だと思いますが、私はExcelを使って管理していますので、それを紹介します。もちろんExcelでなくとも、Googleスプレッドシートなどの表計算ソフトなら、同じように使えると思います。

世の中にはExcelでRPG自体を作っちゃう猛者もいるそうですが、私はそこまで奇人ではないので管理・調整のみExcelで。RPGの実装はRPGツクールでやりますw

メインストーリー管理

まずはExcelファイルを1つ作成しましょう。全てはここから始まる……。

基本的に1作品で1ファイルを使い、各種データはそれぞれシートを作って管理します。

ストーリープロット

まず管理する代表的なものとしては、メインストーリーのプロットでしょう。

これは『小さな大冒険』の時のストーリープロットです。

細かい台詞などは別で作るとして、全体的なストーリーの構成をこんな感じで簡潔に書いておきます。各イベントの想定レベルなども設定しておくと後々便利です。

登場人物

登場人物なども別シートでまとめておくと便利です。

私のはそこまでキャラゲーではないので必要最低限の設定しかしていませんが、もっといろいろな設定を記載してもいいでしょう。名前とかは油断していると似た名前になってしまったりもするので、こういう風にまとめておくと便利ですし、アイデアノート的に名前の候補だけを先に作っておくといった使い方もできます。

台詞はテキストファイルで

なお、個別のイベントやキャラクターの台詞については、当初は同じようにExcelで管理していたのですが、あまりに面倒だったため、普通にテキストファイルで下書き&管理しています。

ただ、パラメーターの値や進行状況など様々な条件によって細かく台詞が変わるような場合は、条件の設定漏れを防ぐためにも、Excelで管理するメリットがあるでしょう。

データベース管理

Excelを使うことで最もメリットの大きいのが、武器・防具や敵キャラ、スキルなどの管理・調整でしょう。

いきなりツクール本体でデータを作っていくよりも、まずはExcel上で準備をしておくと、アイデアも広がりやすいし修正もしやすいです。

もちろん全部を完璧に決めておく必要はありませんが、例えば、武器ならどんな種類をいくつぐらい用意するか、1段階上がるごとにどのくらい価格と威力を上げていくか、といった大枠程度を決めておきましょう。その辺をあらかじめ決めておけば、後で破綻せずに済みます。

装備品

これは『小さな大冒険』の時に作った装備品のシートです。

こんな感じで、それぞれの名前、価格、装備可能者、能力値、属性などを入力します。特別な追加攻撃や耐性などは備考欄に記載します。

一番右の「効率」では、「価格÷攻撃力or防御力」を数式で計算させています。特殊効果などもあるので一概には言えませんが、この値がだんだん上がっていくように価格と能力値を設定すると、自然なバランスになると思います。

Excelを使うことによって、このように自動でバランスを確認できたり、また複数のアイテムを同時に比較できます。ツクール本体でやるよりも調整がずっと楽でしょう。

敵キャラ

こちらは新作RPGで使っている敵キャラのデータシートです。

名前や攻撃パターン、強さや戦利品、属性やステートの有効度などを一覧にしています。こうして一覧にしておけば、前後で強すぎたり弱すぎたりといったバランスの確認や調整も容易です。

ここで入力した内容は、別途「エクセルで敵キャラかんたん設定」で紹介したExcelツールにコピペして、ツクール本体に反映させています。

コモンイベント・スイッチ・変数

あと重要なのが、コモンイベントスイッチ変数の管理です。

右は『天下御免!からくり屋敷』の時のリストですが、長編だと数が多くなるので、こんな感じで一覧にしておくと管理しやすいです。

スイッチや変数については、以下のような管理方法がよく推奨されます。

  • ゲーム全体で使用する共通的なものやシステム的なものは前半に配置し、個別のイベントで使用するものは後半に持って行く。
  • 例えばある一連のイベントで51〜57番までのスイッチを使ったとしたら、その次のイベントで使うスイッチは58番から始めずに、61番から始めるなど適宜間隔を空けて、後で追加が発生しても大丈夫なようにする。

こうした管理もExcelを使って一覧にしておくと、非常にやりやすいでしょう。

その他の管理

このほか、スキルの設定やステート、アニメーションなど、数の多いものはExcelで管理しておくと、必要なものが漏れてないかとか、前に作ったのを忘れて二重に作ろうとしてないかなど、簡単に確認できるのでお勧めです。

欠点は、Excelでは直したけどそれをツクール本体に反映し忘れていたとか、ツクール本体でちょっと直したのをExcelに反映し忘れていたといったことが、ついつい起こりがちなことです。その点さえ気を付ければ、データベースはExcel管理が非常にオススメです。

それ以外にも、プラグインや画像、音楽など、他者の素材を多用している場合は、それらの情報をシートにまとめておくと、後で出展が分からなくなったり、Readmeテキストに掲載し忘れたり、といったことを避けられます。

Excelの機能を駆使してバランス調整

さて、ここまでは割と普通のExcel管理でしたが、ここからややマニアックな世界に……。

Excelを駆使すれば、細かいバランス調整もやりやすくなります。

進行バランス確認

炎系の敵が多く登場するエリアに行く直前で氷魔法を覚えたり、毒治療の魔法を覚えた直後に毒を使ってくる敵が現れると、バランス調整が上手いゲームだなと感じます。これはそうした進行におけるバランス調整を行うシートです。

最初のストーリープロットをもとに、各エリアと想定到達レベルを入力します。そして、そのエリアで想定している敵キャラの種別と一緒に、そのレベルでどんなスキルを覚えているか、どんな装備品が入手できているかを横串で見ていくことで、この魔法はもう少し早く覚えてないといけないとか、こういう武器が手に入るならそれが有効となるような敵を出さないといけない、といった調整がしやすくなります。

敵の強さシミュレーション

これは敵の強さをシミュレーションするシートです。

左上のセルに敵キャラ名を入れると、VLOOKUP関数で「敵キャラ」のシートから各能力値が自動的に引っ張られてくるようになっています。こんな感じです。

=VLOOKUP($C2,敵キャラ!$B:$AK,5,FALSE)

次に、各パーティーメンバーのレベルを入力すると、同様に別シートで管理されている各キャラ各レベルの能力値が、VLOOKUP関数で参照されてきます。さらに装備品を入力すると、やはり「装備品」のシートからVLOOKUP関数で補正値や属性を引っ張ってきます。

最終的に、レベルによる基本能力値+装備品による補正値、および属性による倍率を加味して、右下に通常攻撃で与えられるダメージ、受けるダメージが算出されるようになっています。

これを見れば、実際に戦闘テストをしなくても、だいたい一撃でどのくらいのダメージ量になるのかが分かるので、強さの微調整がやりやすくなります。

また、Excelの機能を駆使することで、シートをより便利にすることができます。

「数式」>「名前の定義」で、敵キャラの名前が入ったセル範囲に対して「敵キャラリスト」などと名前を付けることができます。

その上で、先ほどの敵キャラ名を入力するセルに対して、「データ」>「データの入力規則」で、入力値の種類を「リスト」、元の値を先ほど付けた名前を使って「=敵キャラリスト」としておくと、敵キャラ名をリストから選択できるようになります。いちいち敵キャラ名を自分で入力する必要がないので、格段に使いやすくなります。

装備品名なども同様にしておくと非常に便利でしょう。

その他Excelツール

これ以外にも、過去に公開したExcelツールがあるので、改めて紹介します。

必要経験値をExcelで計算」では、次のレベルに上がるために必要な経験値量と想定している戦闘回数から、敵1体あたりどのくらいの経験値を得られればよいか、計算してくれるツールを紹介しています。

エクセルで能力値かんたん調整」では、職業とレベルごとの能力値を編集して、それをVBAマクロを用いて、ツクール本体のデータベースに反映させられるツールを紹介しています。これは特に反響の大きかったツールですね。

これらは独立したファイルとして公開していますが、同じファイルに統合してやると、より便利に使えるかと思います。

タイトル画面だって作れちゃう

作品の顔として重要なタイトル画面。

高度な画像編集ソフトがなくても、Excelを使えばそれなりの見栄えのタイトル画面が作れます。

これは『夫婦戦争MZ(まさに絶体絶命)』のタイトル画面ですが、この通りExcelで作りました。

メインの画像はデフォルト素材の画像を読み込んで、そこに「ワードアート」で文字を配置しています。ワードアートで、文字の輪郭や透明度、影、反射、光彩あたりを駆使すれば、そこそこ見栄えの良いものが作れます。

画像も「アート効果」などを使えば、同じデフォ画像でも水彩画風やモノクロ風など、ちょっと違う雰囲気に変更できるので、試してみてはいかがでしょう。

特にタイトル文字は、デフォルトの「ゲームタイトルの描画」で表示するのに比べると、ずっと見た目が良くなると思います。

締めの挨拶

以上、RPG制作におけるExcel整理術の紹介でした。

長編RPGにおいては、これらの管理がしっかりなされていないとゲームバランスが悪くなりますし、何よりフラグミスなどのバグを生みがちです。管理や調整は非常に面倒な作業ですが、このようにExcelを駆使して、少しでもその作業が楽になればいいなと思います。

長い記事になりましたが、読んでいただきありがとうございました。

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 戦闘終了時に特殊処理

2020-11-28 02:35:06

ボス戦の後、そのまま暗転して感動的なイベントに移行したいとします。

RPGツクールの標準仕様だと、戦闘終了後にすぐ「画面のフェードアウト」を実行しても、戦闘が終わってマップ画面に戻った際に、一瞬ですが戦闘前の画面が表示されてしまいます。

また、戦闘終了後はBGMを変えたいと思っても、経験値やお金の獲得やレベルアップのメッセージなどが表示されているうちに、戦闘前のマップBGMが流れ出してしまうため、感動が薄れてしまいます。戦闘開始前にBGMをなしにすれば、戦闘終了時にBGMは流れなくなりますが、戦闘に負けた場合は通常通りマップBGMで始めたかったりします。

戦闘終了後にスイッチを操作して、キャラの配置などを変えたい場合は、戦闘中にスイッチを操作しておけば、スイッチの状態が反映されてマップに戻れますが、勝利時のみスイッチをONにしたい場合は、それも上手くいきません。

というわけで、戦闘終了後に直ちにフェードアウトさせたり、BGM/BGSを継続させずに停止したり、勝利時・敗北時など条件によってスイッチをONにできるプラグインを作成しました。

プラグインコマンドで実装したので、RPGツクールMZ用となっています。

バトルイベント内に、プラグインコマンドで指定するようになっています。

効果を発動させたい敵グループで、0ターン目(戦闘開始時)のバトルイベントに設定すればよいでしょう。

以下の項目が設定可能です。

  • 勝利時・逃亡時・中断時・敗北時それぞれでONにするスイッチ番号
  • 戦闘終了後ただちにフェードアウト
  • 戦闘終了後、BGMを停止
  • 戦闘終了後、BGSを停止

フェードアウト、BGM/BGSの停止は、勝利時・逃亡時(中断時も含む)・敗北時、どのケースで発動させるかも設定可能です。例えば、戦闘に勝利時と敗北時はフェードアウトさせて、逃亡時はそのまま、といった設定が可能です。

このプラグインを組み込むと、こんな感じになります。

使用前は、レベルアップのメッセージを処理している間に元のBGMが流れてしまいますし、イベントが始まる前に一瞬だけ元のマップが表示されてしまうため、美しくありません。プラグインコマンドを入れた後は、BGMが停止し、フェードアウトした状態でスムースにイベントに移行しています。

質問やアドバイスなどはコメント欄まで、お気軽にお願いします。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。