開発日誌

プラグイン/スクリプト

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

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が停止し、フェードアウトした状態でスムースにイベントに移行しています。

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

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] バフ・デバフの効果を個別に設定

2020-11-22 22:58:21

攻撃力や防御力を強化・弱体化する、いわゆるバフ・デバフの仕組みは、RPGツクールVX Aceから改良され、2段階までの重ねがけが可能になりました。VXまではステートでバフ・デバフを実現する仕組みだったので、相殺は標準機能でできましたが、重ねがけは困難でした。VX Ace以降のバフ・デバフの仕組みは、重ねがけをしたいという要望に応えたものとなっています。

しかしその反面、VXまでは強化・弱体化される倍率が自由に設定できましたが、VX Ace以降は1段階につき25%とスクリプト内で指定されてしまっているため、倍率を変更したい場合はスクリプトの改造やプラグインの導入が必要となりました。1カ所数字を変えるだけなので、スクリプトの改造としては非常に簡単な部類ではありますが、自由度が下がったのは事実です。

とにかくVX Ace以降、デフォルトでは1段階につき25%、すなわち1段階強化なら1.25倍、2段階強化で1.5倍になり、逆に1段階弱体なら0.75倍、2段階弱体で0.5倍(半分)となります。

しかし、攻撃力ならこのくらいの変動でちょうど良さそうに思いますが、敏捷性や運がこのくらいの変動幅だと、ほとんど効果が感じられないように思います。かといって変動幅を50%にすると、2段階強化で2倍になりますが、攻撃力も同じ強化幅になってしまうため強すぎる感もあります。また弱体の場合は2段階弱体で0になってしまうため、それはそれで都合が悪いです。

というわけで、バフ・デバフの倍率を、能力値および強化か弱体かでそれぞれ個別に設定できるプラグインを作成しました。RPGツクールMVとRPGツクールMZの両方に対応しています。

能力値8個×強弱2種で計16個を設定する必要があるため、ややパラメーターの数は多いですが、使わないものはデフォルトの0.25のままで構いません。弱体倍率の方は0.5以上にすると、2段階弱体の際に0以下になってしまうため、ご注意ください。

また、強化・弱体がそれぞれ2段階ずつというのは変わりません。3段階以上にしたいなどの場合は、他のより柔軟な設定が可能なプラグインがあるようなので、そちらをご利用ください。個人的には、3段階とかあっても戦闘のテンポが悪くなるだけの気がしていて、せいぜい2段階までが有効に使える範囲かなと思います。アイコンも2段階までですし。

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

[ ゲームリリース情報 ] [ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] イベントスキップを実装した

2020-11-02 21:08:18

ミニゲーム『夫婦戦争MZ(まさに絶体絶命)』を少しバージョンアップしました。

進行のテンポを改善してほしいというフィードバックをいただいたので、一部のウェイトを短縮してみたほか、一度見たバッドエンドは次回から飛ばせるように、イベントスキップの機能を取り入れました。

イベントスキップ機能については、そもそも飛ばしたくなるような長いイベントを作るなというのと、飛ばしてもストーリーが成立するような無意味なイベントを作るなという理由で、個人的には不要派です。

実際、『天下御免!からくり屋敷』では、ボス戦前の会話イベントなど、そもそもそんなに長くはしていませんが、2回目に戦う時は前半を飛ばして最後の2〜3台詞ですぐに戦闘に入れるようにしています。

しかし、この『夫婦戦争MZ(まさに絶体絶命)』は周回前提のゲームなので、何度も同じエンディングを見るのは、たとえ数秒程度とは言え時間のロスになるのは確かです。

というわけで、一度見たバッドエンドは↑キーを押せばスキップできるようにしてみました。

本音を言うと、何も考えずにスキップするのではなくて、今回手に入れたアイテムでどのエンディングになったのか、よく考えながら戦略を練ってほしいというのはありますが……。

いくつかイベントスキップのプラグインは探してみたのですが、多機能すぎたり、いまいち使い方がよく分からなかったりしたので、結局自分で作ってしまいました。

プラグインだけでイベントスキップを実現しているのではなく、並列処理イベントと連携して動かす前提になっているので、機能はシンプルですが実装は難しいかもしれません。

スキップさせたいイベントの実行中に、特定のスイッチをONにします。そのスイッチに連動して起動する並列処理イベントを作成し、スキップ時に押すキー(ここでは↑キー)が押されていたら、プラグインコマンドで「実行中イベントのスキップ」を実行します。これでイベントスキップが実現できます。

プラグインコマンドの「実行中イベントのスキップ」は、現在メインで実行しているイベントを、指定したラベルの位置までスキップさせる機能です。ラベルが指定されていなければ最後までスキップされます。もちろん呼び出し元の並列処理イベントはスキップされません。

イベントからコモンイベントを呼び出して……みたいな入れ子状態になっている場合は未対応です。「文章の表示」中であれば直ちにメッセージウィンドウを閉じてスキップしますが、それ以外のイベントコマンド、例えば選択肢の表示や移動ルートの設定などは、そのコマンドが完了してからスキップされます。

なので汎用性は非常に低いと思いますが、会話だけのイベントを飛ばすといった限定的な使い方であれば、これで十分です。

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 必要経験値の計算をVX方式で

2020-10-25 22:34:19

以前、「経験値の仕様に苦悩」という記事で、RPGツクールVX Ace以降の必要経験値の計算方法が、調整しにくいという話をしました。

その後、ちょうど良さげな基本値や増加度を探し求めたり、計算式を微調整していい感じにできないか奮闘してみましたが、なかなか芳しい結果が得られず、結局RPGツクールVXの計算方法を再現するプラグインを作成しました。

MVとMZの両方に対応しています。このプラグインを導入すると、レベルアップに必要な経験値の算出方法が、VXでの方式に変更されます。

具体的には経験値曲線の「基本値」および「増加度A」を用いて、以下の式で計算されます。

M[1] = 基本値
N[2] = 0.75 + 増加度A / 200
M[Lv] = M[Lv-1] * (1 + N[Lv])
N[Lv] = N[Lv-1] * 0.9
累計経験値[Lv] = 累計経験値[Lv-1] + M[Lv-1]

VXのデフォルトである基本値=30、増加度=35の時の累計経験値と、VX Ace以降のデフォルトである基本値=30、補正値=20、増加度A=30、増加度B=30の時の累計経験値とを比較すると、こんな感じになります。

中盤以降の伸び方が全然違いますね。VX Ace以降だと中盤以降の必要経験値量も緩やかにしか増えていかないため、ちょっと戦闘回数が増えただけでどんどんレベルが上がってしまいます。

その一方で、序盤の累計経験値を拡大比較すると、こんな感じです。

レベル10ぐらいまではVX方式の方が必要経験値量は少ないため、序盤はVX Ace以降に比べてレベルが上がりやすくなっています。

VX方式ならば、適正レベルと敵の獲得経験値も調整しやすいのではないでしょうか。

経験値曲線で指定する4つ値のうち、「基本値」と「増加度A」のみが計算に用いられ、「補正値」と「増加度B」は無視されます。

また、経験値曲線のウィンドウで表示される「次のレベルまで」と「累計」の値は、当然VX Ace以降の計算方式で算出されているため、異なります。

なので、必要経験値を計算してくれるエクセルファイルも用意しました。

以前に「必要経験値をExcelで計算」の記事で作成したファイルのVX方式版で、単に必要経験値量を計算してくれるだけでなく、敵1体の獲得経験値の目安も求められるようになっています。

これでバランス調整まわりのプラグインはだいたい揃えられたかな。

ウィンドウの調整とかもしていかないといけないのですが、まあその辺は後からでも十分なので、今はまだ考えないことにしよう。

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 台詞の途中でスイッチ操作 in MZ

2020-10-08 21:39:22

以前の記事で、文章表示の途中でスイッチのON/OFFができる拡張制御文字を紹介しました。

当時はRPGツクールVX用、かつ作品固有の処理がたくさん含まれていたために素材としての公開ができなかったのですが、今回はRPGツクールMZ用のプラグインとして公開します。

このプラグインを導入すると、「文章の表示」で以下の制御文字が使えるようになります。

  • \+switch[n]:n番のスイッチをONにする
  • \-switch[n]:n番のスイッチをOFFにする

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

具体的には、台詞の中でこの制御文字を使って、10番のスイッチをONにします。

10番のスイッチが出現条件で、トリガーを並列処理にした別イベントを作成し、そのタイミングで実行したい内容をイベントに記述します。最後にスイッチをOFFにするのを忘れないようにしましょう。

そうするとこんな感じで、台詞の途中の狙ったタイミングで演出を入れることができます。

話している途中でハッと気付いたり、不意にこちらを向いたり、SEを鳴らしたり、といった細かい演出を入れることが可能なので、表現力が増すことでしょう。並列処理で演出を入れる以外の使い方もあるんじゃないかと思います。

RPGツクールMVは、制御文字の処理がちょっと違ったため、MZ専用のプラグインとなってしまいましたが、少しの改造でMVでも動かせると思います。その辺の改造はご自由にどうぞ。

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