開発日誌

すべての記事

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 画面外のイベントをカスタム移動させる

2023-11-07 22:15:24

表示画面範囲外のイベントでも、自律移動が「カスタム」に指定されているイベントは、自律移動を行うようにするプラグインを作成しました。

RPGツクールMV/MZ、どちらにも対応しています。

ツクールの標準機能では、画面に表示されている範囲内またはその近くにあるイベントのみ自律移動を行い、遠く離れた位置にあるイベントは自律移動が「固定」以外に設定されていても、自動的には動かないようになっています。

これは負荷軽減のための仕組みです。

イベントを自律移動させるには、移動先のタイルが動けるかどうか、他の全てのイベントと重なっていないかどうかを調べる必要があります。広いマップで100以上のイベントが設置されているような場合、これを全てのイベントについて逐一処理すると、非常に重くなってしまいます。

そこで、画面表示に関わらないイベントは自律移動を行わないようにして、負荷を軽減しているわけです。

具体的には、標準画面サイズである17x13マスの場合、プレイヤーから横17マス、縦13マスよりも遠くにあるイベントは、自律移動を行わないようです。プレイヤーが画面の隅にいても表示範囲のイベントはちゃんと自律移動するので、基本的にはこの仕様で問題はありません。

ただし、自律移動が「カスタム」のイベントで、ダンジョンギミックになっていたり、複数のイベントで動きを合わせているような場合は、問題が起こり得ます。

例えば、左右に移動する足場に乗って進むダンジョンギミックを作る場合、足場の初期位置が遠く離れた場所にあると、待っていても永遠に来ない足場となってしまいます。

また、複数のイベントを並べて動かしたい場合、プレイヤーに近い方のイベントが先に動き出してしまうため、各イベントの動きが揃わなくなってしまいます。

下の動画は、連動するモブキャラの代表とも言える、池の周りを回る子供たちのイベントですが、本来は2人がくっついて動くべきところ、先頭の男の子の方が先に動き出してしまうため、女の子との間が開いてしまいます。

これを解消するために、自律移動が「カスタム」であるイベントは、遠く離れた位置にいても強制的に自律移動させるプラグインを作成しました。

「ランダム」や「近づく」のイベントは従来通り動きません。「カスタム」のイベントのみを動かします。

カスタム移動のイベントが大量に置かれている場合は、重くなる可能性がありますので、注意してください。

イベント個別に自律移動の可否を設定するような機能はありません。全てのカスタム移動のイベントが対象となります。

個別のイベントについて自律移動を制御したい場合は、砂川赳さんの「画面外イベントの自律移動を許可」のご利用をお勧めします。

基本的に画面外のイベントの自律移動が問題となるのはカスタム移動の場合だけであり、カスタム移動のイベントを1つのマップに大量に置くことも少ないので、設定不要ですぐに使えるものがあると便利だと思い、作成しました。

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

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 挑発スキルを完璧にする

2023-10-25 23:45:29

狙われ率が最大値よりも一定値以上低い場合は、狙われ率を0%と見なすプラグインを作成しました。

敵の攻撃対象を自分に集中させる、いわゆる「挑発」のスキルをきちんと実装する際に、必要となったので作りました。

RPGツクールMV/MZ、どちらにも対応しています。

「挑発」スキルと「狙われ率」

作品によって「挑発」や「仁王立ち」など様々な呼び名がありますが、いわゆるタンク役(盾役)の持つスキルで、敵の攻撃を自分に引きつける特技があります。

RPGツクールには「特殊能力値」の一つとして「狙われ率」というパラメータがあります。作品によっては「ヘイト値」などと呼んだりもしますが、敵からの攻撃の対象になりやすさを表す指標で、この値が大きいメンバーほど敵の攻撃のターゲットにされやすくなります。

RPGツクールで「挑発」スキルを実装するには、この「狙われ率」を上昇させてやればよく、一般的には「狙われ率」が上昇する特徴を持ったステートを作成して、そのステートを付与するスキルを作成することで、簡単に実現できます。

ただ、こうして作成した挑発スキルは、完璧ではありません。

狙われ率の計算法

RPGツクールの標準機能では、敵からのランダムな攻撃対象のターゲットとなる確率は、以下の式によって算出されます。

自分の狙われ率 ÷ パーティーメンバー全員の狙われ率の合計

例えば、4人パーティーで各メンバーの狙われ率がそれぞれ、200%、150%、100%、50%だった場合、4人の狙われ率の合計は500%となります。すなわち各メンバーの実際の狙われ率は、40%、30%、20%、10%となります。

今ここで、狙われ率200%のメンバーが挑発スキルを使用し、狙われ率を特徴で付与できる最大倍率である10倍(*1000%)にすると、各人の狙われ率は2000%、150%、100%、50%となります。

これで実際の狙われ率を再計算すると、分母は2300%となるため、それぞれ約87%、6.5%、4.3%、2.2%となり、明らかに1人目のメンバーにターゲットが向かいやすくなることが分かります。

しかし、よくよく考えてみると、13%の確率で本人以外のメンバーに攻撃が当たってしまう計算になります。回数に直すと、8回に1回以上の確率であり、これは思ったよりも高い確率だという印象です。

「特徴」は重ねがけができるので、「狙われ率*1000%」の特徴を複数付けて、100倍、1000倍としてやれば、流れ弾が当たる確率を限りなく小さくすることは可能です。しかし、どんなに小さくてもゼロにすることはできません。

そこで、それを解消するプラグインを作成しました。

狙われ率改良プラグイン

このプラグインを使用すると、パーティー内のメンバーの狙われ率の最大値より、一定値以上に低い狙われ率は、狙われ率0%として扱われます。

デフォルトではこの閾値は500%としています。前述の状態であれば最大値の2000%より500%以上低い狙われ率、すなわち1500%以下の狙われ率は0%と見なされるため、挑発状態では1人目以外に攻撃が向くことはありません(もちろん全体攻撃は別)。

閾値はプラグインパラメータで任意に指定することが可能です。

通常は閾値はデフォルトの500%、挑発スキル使用時の狙われ率上昇は×1000%で十分かと思いますが、同時に複数人が挑発スキルを使ったり、隊列や装備品等で狙われ率が細かく変化するようなシステムの場合は、閾値や上昇倍率を適切に調整してやる必要があるかもしれません。

試行錯誤の履歴

当初はプラグインを使わず、狙われ率×0%のステートを作成して、コモンイベントで使用者本人以外の狙われ率を0%にする方法を考えていました。

しかし、いざ実装してテストプレイしてみたところ、挑発していた人が戦闘不能になった場合に、他のメンバーの狙われ率が0%のままになるため、敵のターゲットが正しくランダムにならず、先頭のメンバーに攻撃が集中してしまいました。

これを解消するには、常に状況を監視して、挑発していた人が戦闘不能になったら、それ以外の人の狙われ率0%を解除するといった、かなり面倒なことをしなければなりません。

それだったら、素直に狙われ率の仕様を改良するプラグインを作った方がいい、ということで作ったプラグインです。

本プラグインの応用

基本は「挑発」スキルで他のメンバーに被弾しないようにするための、限定した用途のプラグインですが、他にも応用が可能かと思います。

例えば特定のイベント戦闘において、敵の特定の攻撃だけは必ず主人公がターゲットになるようにしたい場合、その行動をするターンのみ主人公の狙われ率を上げておけば、敵の攻撃は必ず主人公に当たるようになります。

その他、狙われ率というと味方にのみ関係あるパラメータのように感じますが、敵にも狙われ率自体は存在しており、敵の回復魔法や補助スキルなど味方にかける技の対象を選択する際にも参照されます。特に指定されていなければ敵キャラの狙われ率は全て100%なので、普段は完全ランダムでターゲットが選ばれているように見えます。

例えば敵が回復魔法を使う際にHPが最も消耗している敵の狙われ率を上げてやったり、防御力アップの魔法を使う際に防御力がアップしていない敵の狙われ率を上げてやったりすることで、敵の行動をより賢いものにすることができると思います。

それ以外にもいろいろと応用は利くと思います。

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

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 乗降中はメニュー画面を開けなくする

2023-10-13 02:09:49

乗り物に乗り降りしている最中は、メニュー画面を開けないようにするプラグインを作成しました。

RPGツクールMV/MZ、どちらにも対応しています。

プレイヤーキャラクターが1人だけだったり、パーティーの隊列歩行がOFFの場合は問題ないのですが、隊列歩行がONの状態で船や飛行船などの乗り物に乗り降りした際、隊列メンバーがまだ乗り降りしている最中でも、メニュー画面が開けてしまいます。

メンバーがまだ完全に乗降しきっていないうちにメニュー画面を開いて、そのままテレポートなどの移動魔法を使って場所移動されると、予期せぬエラーが起きそうです。

ただでさえツクールは、乗り物と移動スキル/アイテムとの相性が悪いです。例えば船に乗っている時に移動スキルで場所移動すると、船に乗ったまま移動先に降り立ってしまうため、いったん暗転中に下船用のダミーマップに移動して船から降ろす、といった処理を噛ますなどの工夫を余儀なくされます。

このような処理がある中で、乗り物からの乗降が完全に終わっていないうちにメニュー画面を開いて移動されるのは、明らかにバグの温床となりそうです。

このほか、船に乗り込んだ直後にイベントを起こしたい時なども、イベント発生前に別マップに飛ばれてしまうといった不具合が発生します。

こうした不具合を防ぐために作成した、乗り物の乗降中はメニュー画面を開けなくするプラグインです。プラグインパラメータなどの設定はないので、プラグインを有効にするだけで反映されます。

隊列歩行と乗り物を使用している場合は、導入必須のプラグインだと思います。

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

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 特定の装備タイプをアイテム一覧に表示しない

2023-10-04 01:18:33

指定した装備タイプの装備品をアイテム一覧で非表示にするプラグインを作成しました。

RPGツクールMV/MZ、どちらにも対応しています。

普通のアイテムはアイテムタイプで「隠しアイテムA/B」を設定すれば、アイテムリストに表示されない、特殊な隠しアイテムを作成することができますが、同じことを防具でもできるようにしたプラグインです。

プラグインパラメータで指定した装備タイプの防具は、メニューコマンドの「アイテム」で「防具」の一覧には出てこないようになります。

装備タイプは複数指定が可能です。武器でも設定できますが、武器は1つの装備タイプしかないため意味がなく、基本的には防具に対して使用するイメージです。

公式のツクールWebフォーラムのスレッドで挙がった要望に対応したものです。

もともとの相談としては、覚えられるスキル数に制限を設けて、最大値以上にスキルを覚えた場合は、どれか忘れるスキルを選ぶようなシステムを導入したいというものでした。

しかし、専用のユーザーインターフェイスを作るのは簡単ではないため、比較的簡単に実装できる方法として、以下の装備を利用する方法を提案しました。

  1. 装備タイプに「スキル」を追加
  2. 装備タイプを「スキル」にした防具を作成し、特徴にスキル追加を設定
  3. 装備スロットを拡張できるプラグインを導入して、スキル装備を覚えられる数だけ増やす

▲装備タイプに「スキル」、特徴に「スキル追加」を設定した防具を作る

一度に覚えられるスキルの個数が4~5個程度であれば、スキルの習得・忘却を装備の着け外しで代用するこの方法が、専用のUIを作るより楽に実装できると思います。スキルの最大個数が10以上ある場合は、さすがに専用のメニューを用意した方がいいかと思います。

装備スロットを拡張するプラグインは、砂川赳さんの「装備スロットを自由に変更」プラグインをお勧めしました。このプラグインを使えば同じ装備部位で複数装備が可能になるので、これで覚えられる個数分だけスキル装備のスロットを用意して、覚えられるスキルの数を絞ることができます。

▲スキル追加用の防具が見えてしまう

これで基本的にはOKだと思いましたが、問題はメニューの「アイテム」で「防具」を選択した際に、このスキル付与用の防具が表示されてしまうことです。

表示されてもいいと割り切ってしまうのも一案ですが、特定の装備タイプをアイテム欄から隠すのはそれほど難しい処理ではなかったので、プラグインを作成した次第です。

▲スキル追加用の防具は非表示になった

プラグインパラメータで隠したい装備タイプの番号(上記例では「6」)を指定してやれば、その装備タイプの装備品はアイテム一覧には表示されなくなります。

もちろん「装備」のメニューでは問題なく表示されます。

スキルの入れ替えを防具で行う、という個別の要望に合わせて作成したプラグインですが、このシステムはそこそこ採用される機会も多そうだということと、他にも応用ができそうだと思ったので、一般向けに公開しました。

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

[ ゲームリリース情報 ] [ 天下御免!からくり屋敷 ] [ サイト情報 ] 『天下御免!からくり屋敷』久々のアップデート

2023-08-10 01:58:20

和風探索RPG『天下御免!からくり屋敷』をバージョン1.2.8にアップデートしました。

ダウンロードページからダウンロードをお願いします。

実に5年ぶりの更新ですね。新要素があるわけではなく、バグ修正やバランス調整が中心となります。

5年前の記事で、致命的な不具合がない限りは最後の更新だと宣言していましたが、致命的な不具合が見つかったので更新することになりました。

長年PRしてきた甲斐あって、みなみよつばさんによる『天下御免!からくり屋敷』の実況プレイがアップされています。

待望の実況プレイ動画なので、感動もひとしお。

ですが、実況動画を見ていたら、途中のイベントで「平賀源内」の名前がなぜか「兵具屋」になっているという謎のバグを発見……!

慌てて調べてみたら、兵具屋の女性店員での売却イベントの際に、名前の代入をミスって起きる不具合でした。他の売却イベントでは大丈夫だったので、ピンポイントに踏み抜かれたバグ!

このままだと終盤の良いところで「兵具屋」を連呼してワケの分からないことになってしまいます。これは間違いなく致命的……!

現状の『天下御免!からくり屋敷』のプロジェクトファイルは続編の歴史編を途中まで作ってしまっていたのですが、幸い歴史編の制作に取りかかる前のプロジェクトファイルは残してあったので、それに修正を加えることにしました。

これ以外にも、中ボスの牛頭馬頭の体力が本来の10分の1になっているというミスをはじめ、いくつか細かいバグはありました。装備品や方術の効果も歴史編の制作中に一部調整したりしていました。これらの修正点は都度メモってはいたので、それをもとに旧プロジェクトファイルを修正。

いくつか、メモには書いてないけど修正されていたようなところもあって、本当に修正しきれているのか怪しいところもありますが、まあこれでいいだろうw

本作『天下御免!からくり屋敷』。

主人公はオッサンで悪人顔ですが、ネタの詰まった台詞の数々や、史実を巧みにアレンジした設定や台詞、和風で豊富なアイテムや敵キャラ、そして時々流れる歴史解説でお勉強にもなるという、本当に楽しい作品です。ぜひ実況動画を視聴&実際にプレイしてみてください!