開発日誌

すべての記事

[ その他の雑記 ] 回答されやすい質問の仕方指南

2023-12-05 00:00:10

本記事は「ツクールアドベントカレンダー Advent Calendar 2023」12月5日分の投稿記事です。

はじめに

RPGツクールシリーズにはユーザー間でノウハウの質問や相談を行えるサイトがいくつかあり、公式の「ツクールWebフォーラム」や非公式の「ツクマテ」が代表的なサイトです。

公式のツクールフォーラムは私も登録していて、そこそこの頻度で書き込んでいます。ツクマテの方は登録はしていないのですが、そこに挙がっている質問は参考として読んでいたりします。

私は基本的に質問に対する回答者の立場となることがほとんどですが、挙がっている質問を見ていると、回答する気の失せるような質問も散見されます。

しかし多くの場合は、悪意を持って回答者を困らせてやろうとしているわけではなく、どういう風に質問したらいいか分からない、何が分からないのか自分でも分かっていない、という状態なのだと思われます。

そこで今回は、どういう風に質問したらいいか、どういう質問をしたら回答がされやすいかを、回答者側の観点を交えて解説したいと思います。

けっこう長文になりますが、お付き合いください。

なお最初に断っておきますが、以下はあくまで個人の意見です。

回答するにも時間がかかる

まず最初に質問者に分かってほしいのは、回答するにはそれなりに時間がかかるということです。

質問者の意図を理解して、実装方法を考えて、多くの場合は実際に自分で試しに組んでみて、エラーが起きないか、想定外のことはないかなど検証もしてから、質問者のレベルに応じて理解しやすいように文章を工夫しつつ回答を作成します。

簡単なものでも30分~1時間くらいかかります。難しいものだともっとかかりますし、1回で解決せず2回3回とやり取りが続くことも珍しくありません。

それだけ回答するのも大変な作業ですが、特に回答することによって報酬が発生するわけでもありません。

それなのになぜわざわざ回答するのかというと、より多くの作品を完成に導いてツクール界隈を盛り上げたいとか、ツクール界隈で技術力のある人として認知されたいとか、ついでに自作品の宣伝をしたいとか、高尚な思いから下賤な気持ちまで、様々な思いがあります。

忘れないでもらいたいのは、回答者は

  • 無報酬にもかかわらず
  • それなりの時間を割いて回答している

という点です。

それだけに、徒労になるようなやり取りは避けたいものです。

やりたいことを具体的に書こう

徒労を避けるために、回答者から質問者にいちばんお願いしたいことは、やりたいことを具体的に書いてほしいということです。

どういうことか、もう少し具体的に説明します。

作りたいものをストレートに書こう

例えば「属性有効度が0%の相手にも属性攻撃が当たるようにしたい」という質問があったとします。

この質問だけを見ると、「属性有効度を0%にしなければいいのでは?」としか思えません。

おそらくそういうことではないのだろうと推測はできますが、詳細が分からないので回答のしようがありません。

もっとストレートに「最初は炎耐性があるが、特定のアイテムを使うとバリアが剥がれて、炎攻撃が通るようにしたい」と書いてくれれば、「戦闘開始時にバトルイベントで炎属性0%のステートを付与して、アイテムの使用効果でそのステートを解除すればよい」と答えられます。

そうではなく「普通の炎攻撃は当たらないが、特定の炎スキルだけは当たるようにしたい」ということであれば、「炎属性を通常と特定スキル用の2つに分けて、普通の敵は2つとも同じ有効度を設定、耐性のある敵だけ炎(通常)は0%にして炎(特定スキル用)を100%にする」といった解決策が考えられます。

このように同じ「属性有効度が0%の相手にも属性攻撃が当たるようにしたい」という質問でも、実際に実現したい内容によって全く違う解決策となります。

具体性のない質問だと、何をやりたいのか要領を得ない質問になりがちで、結果として以下のような事態を招きます。

  • 詳細が分からないのでそもそも回答がもらえない
  • 回答者が具体的な仕様を推測することになり、質問者にとって的外れな回答が返ってくる
  • 回答者が複数の仕様を検討するという労力を強いられる

どんなスキルを作ろうとしているのか、どんな演出をしようとしているのか、具体的な活用イメージがあれば、それに沿って解決策を考えることができます。

量の観点は重要

前述の、属性バリアを剥がす話が、特定のボス戦だけの話であればいいのですが、通常の雑魚敵でもそういう敵がたくさんいる、しかも敵によって対象の属性も様々、という話であれば、全ての敵グループのバトルイベントで戦闘開始時に属性0%のステートを仕込むのは現実的ではなく、プラグインの導入を検討した方がいいかもしれません。

また属性を通常と特定スキル用の2つに分けるケースも、対象となる属性がいくつもあって、敵キャラも何百体いて、全部に設定するのが大変という話であれば、やはりプラグインを検討した方がいいかもしれません。

このように、特定のケースだけで必要になるのか、普遍的に必要なのかによって、デフォルトの機能を駆使すればできるのか、プラグインに頼った方がいいのかは異なります。

頑張ってプラグインを作ったのに、実は必要になるのは1回だけで、少し工夫すればデフォルトの機能だけで行けたというのでは、徒労になってしまいます。

逆に、せっかくいろいろ検証してデフォルトの機能だけで実現する方法を説明したのに、「その方法は知ってるがたくさんあって大変なのでプラグインをお願いしたかった」と質問者から言われたら、回答者としては「それならそうと初めから言ってほしい」という気持ちになります。

このように、量の観点は思わぬ誤解を招くものです。

基本的にケースが限定されていればいるほど、想定すべきことが減るので、作りやすくなります。

  • 特定のシーンだけで必要なのか、多くのケースで必要なのか
  • 対象は1つだけなのか、2~3個なのか、たくさんあるのか
  • 対象は敵だけなのか、味方だけなのか、両方なのか
  • ボス敵だけなのか、特定のアクターだけなのか、不特定多数なのか

といった情報を入れると、回答者側も考えやすくなってありがたいです。

丸投げの質問はやめよう

回答者に敬遠される質問の代表は、自分では大して何も考えずに、質問を丸投げされることです。

▲『天下御免!からくり屋敷』の合成画面

「アイテム合成システムの作り方を教えてください」とだけ質問されても、「アイテム合成」でイメージされるシステムの詳細な仕様は千差万別です。

合成施設があるのかメニューから合成できるのか、合成アイテムの設定方法は、合成画面のレイアウトは……など、少し考えても様々な要件が存在します。

そういうものを全てスルーして、ただ「アイテム合成システムの作り方を教えてください」とだけ書かれると、「この人は自分で何も考えてないんだな」という印象になります。真面目に作る気がなさそうだと考えて、こちらもスルーします。

まずは自分で検索しよう

まずは質問以前に、自分で検索などしてトライしましょう。

少し検索すればすぐに答えが見つかるようなことを質問されると、回答者としては

  • 右も左も分からない初心者、かつ自分で少しは考えようという気持ちがなさそう
  • そんな人には一から十まで懇切丁寧に書く必要があって大変
  • 今後も少し詰まるたびに質問しまくるのだろうか
  • そんな調子ではまずゲームなど完成しそうにない
  • だとすると自分が手取り足取り教えたところで徒労に終わる可能性が高い

と考えて、スルーしたくなります。

前述のアイテム合成システムであれば、Googleで「ツクール アイテム合成」などと検索すれば、いくつかプラグインや解説ページがヒットします。

それ以外でも、「ツクール」とスペース(空白)に続けて求めるシステムの名称を入れれば、たいてい解説ページやプラグインページが1つ2つヒットします。

それをもとに、「試してみたけどうまくいかなかった」「設定方法がよく分からなかった」「この動作が希望と違うので変更したい」などと質問すべきです。

もしそれっぽいページが見つからなかった場合は、「○○というキーワードで検索してみましたが見つかりませんでした」などと書くといいでしょう。

自分で試したことは書こう

実装するにあたって、既に自分で試してみたことがあれば、ちゃんと書くようにしましょう。

「ここまで既にできているのであれば、後はこれだけ教えれば済む」という方が、ゼロから回答するよりも、回答する側としては楽です。

また「実装方法としては何通りか考えられるが、この方法を試しているのなら、それを改良したこの実装方法を教えよう」というケースもあります。

「この方法を試してみたが、こういう理由でダメだった」というのが書かれていれば、同じ轍を踏まずに済みます。

全く手がかりがなく、どこから考えればいいか分からない、ということであれば、その通りに「どこから考えればいいか分からなかった」と書きましょう。

少なくとも丸投げでないことは分かりますので、どこから考え始めればいいか、どういう方針で実装すればいいか、アドバイスできると思います。

何がどううまくいっていないのかを書こう

よく「プラグインを試してみましたがうまくいきませんでした」とだけ書かれていて、何のプラグインを使ったのかも分からなければ、どううまくいっていないのかも分からないことがあります。

一口に「うまくいかなかった」と言われても、何も変化がなかったのか、エラーが出たのか、動くけれど意図した動きと違うのかによって、対処法は異なります。

  • 何というプラグインを
  • どのように設定して
  • このようになったが
  • 意図しているのはこういう動きである

というポイントを押さえて書いてもらえると、回答しやすくなります。

特に「変になった」とだけ書かれていて、どういう状態が正常なのか分からないことがよくあります。求めている状態は何なのかを、できるだけ言葉にして記述するか、言語化が難しければ絵に描いて画像を添付するなど、工夫してみましょう。

また場合によっては、単純な設定ミスや入力間違いでうまく動いていないだけかもしれません。イベント内容やプラグインの設定画面のスクリーンショットがあると、より確かな回答ができると思います。

プラグインのエラーの場合

エラー系の質問では、原因がプラグインの設定間違いや不具合、プラグイン同士の競合にある場合がほとんどです。

  • そのプラグインをOFFにした状態では正常に動作するのか
  • 他のプラグインをOFFにしたら正常に動作するのか

といった検証は質問者自身で行ってもらう必要があります。

そもそも何のプラグインをどう使っているかは質問者にしか分からないので、回答者側では検証のしようがありません。

他のプラグインを1つずつOFFにしていって、このプラグインがOFFの場合はうまくいくという時は、そのプラグインとの競合が原因として考えられます。

1つ1つプラグインのON/OFFを切り替えて試すのは、導入しているプラグインの数が多いと大変ですが、全く関係のないプラグイン同士が競合することは考えにくい(皆無ではない)ので、戦闘中における不具合なら戦闘システムに関わるプラグイン、メニュー画面における不具合ならメニューUIに関わるプラグインといった風に、関連するプラグインから優先的に調べていけば、比較的簡単に原因を特定することが可能です。

たまに、明らかに特定のプラグインに起因するエラーなのに、何のプラグインかが明記されていない質問がありますが、論外です。

必要な情報は全て書こう

前提として、回答者は質問者のことを知りません。

  • 全くの初心者なのか、ある程度慣れた人なのか
  • どのような制作環境なのか
  • どんなプラグインを導入しているか
  • どのようなゲームを作っているのか

といったことは基本的に分からないので、必要であれば書くようにしましょう。

自分の技術レベルは伝えよう

質問者の技術レベルは、回答者にとって気になるところです。

そのレベルによって、どこまで丁寧に説明しなければならないか、どのくらいは知識として持っている前提で説明してよいかが分かるからです。

せっかく回答したのに質問者にとって難しすぎて全然活用されなかったり、イチから丁寧に説明したのにそれは質問者にとって分かりきったことだったりしたら、せっかく割いた時間が無駄になってしまいます。

質問者の技術レベルが不明だと、自分の回答が徒労に終わる可能性もあるため、回答を避ける傾向にあります。

「ツクールを触って1週間です」「チュートリアルはひととおりやってみました」「他人のプラグインの一部修正はできるレベルです」「ツクールは初めてですが仕事でJavascriptは触ったことがあります」など、自分のレベル感を示す一文が前置きとして入っていると、回答者側はありがたいです。

ツクールのバージョンは明記しよう

けっこう忘れられがちですが、RPGツクールMZなのか、MVなのか、はたまた違うバージョンなのか、ということです。

公式フォーラムやツクマテは、MZ、MV、その他バージョンで分かれているので、それで十分と思われがちですが、特に公式フォーラムは新着情報のところから見ることも多く、注意しないとMZかMVかを見落としてしまいます。

MZ/MVは共通して動作することも多いですが、UI関係やアニメーション系は相違点も多く、MZのつもりで対応したら実はMVだったとか、その逆とか、せっかくの回答が無駄になったら徒労感も大きいです。

なるべく質問本文に、ツクールのバージョンは明記するようにしましょう。

回答をもらったら感謝と報告

最低限の礼儀として、回答をもらったらお礼はしましょう。

すぐに回答内容を試せるようなら、試した結果を報告するとともにお礼をしましょう。すぐに試せない時は、いったんお礼だけ述べて、後で試してみる旨を書くようにしましょう。

一般のビジネスマナーと同様、なるべく回答をもらってから24時間以内には、何らかの反応を返すのが望ましいです。

回答者は、回答しっぱなしではなく、

  • この内容で質問者が理解できたかどうか
  • この回答が質問の意図と合っているかどうか
  • この回答に沿って試してうまくいったかどうか

を非常に気にしています。

せっかく時間をかけて質問に答えたのに、何も反応が返ってこないでは、回答者としてはとても虚しい気持ちになります。

回答がもらえているのに、お礼どころか何の反応も返していない質問者は、二度と回答してもらえることはないでしょう。

自己解決した場合も解法を書こう

質問して回答を待っている間に、自分でやり方を思いついたとか、他の方法を試したらうまくいって、自己解決したということもあります。

そのような時によく、「自己解決しました」とだけ報告して終了されていることがありますが、非常にもったいないと思います。

自分が行き詰まって質問した内容ならば、他の人も同じように行き詰まっているかもしれません。そんな時に、どのようにやってみてうまくいったのかが書かれていれば、その人の助けになります。自分が回答者になれるチャンスなのです。

自己解決した場合でも、どう解決できたのかを書くようにしましょう。

まとめ

まとめると、以下のような質問には回答が付きにくいです。

  • 具体性に乏しく要領を得ない質問
  • 自分で試してみた形跡のない質問
  • ただうまくいかなかった、エラーが出たとだけ書かれて詳細がない質問
  • 過去に回答をもらっても何も反応していない質問者

逆に以下のようなことを意識して質問してもらえると、回答者側としても回答しやすくなります。

  • 自分の技術レベルやツクールのバージョンを記載
  • まずは自分で検索・試行・検証してみる
  • 作りたいものをストレートにかつ詳しく書く
  • 特定のケースの話なのか不特定多数の話なのか
  • 求める状態と現在の状態を書く
  • 回答をもらったら感謝と結果の報告

あまりこういう口うるさいことは言わないようにしているのですが、なかなかこの手のことは教えてくれる機会もないですし、今回はアドベントカレンダーということで、敢えて書いてみました。

質問者の方にとっては、質問の際にどういう情報を書けばいいのか、分かるように解説したつもりです。

回答者の方にとっても、詳しい内容をヒアリングする際の参考資料になるのではないかと思います。

健全なフォーラム運営がなされて、ツクール界隈の健全なる発展に、少しでも協力できれば幸いです。

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

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 戦闘画面のキャンセルボタンの位置を調整する

2023-11-18 00:00:49

戦闘画面におけるキャンセル(戻る)ボタンを非表示にしたり、ボタンの位置を調整したりすることのできるプラグインを作成しました。

キャンセルボタン自体がRPGツクールMZから登場したものなので、MZ専用のプラグインとなります。

RPGツクールMZでは、オプションの「タッチUI」をONにすると、画面上にメニューボタンやキャンセルボタンが表示され、キーボードやゲームパッド(コントローラー)以外の、マウス操作やタッチ操作でも快適なプレイができるユーザーインターフェイスが標準機能として搭載されました。

しかしながら、デフォルトの戦闘画面におけるキャンセルボタンは、一見すると中途半端な位置に配置されています。

▲右上の中途半端な位置にあるキャンセルボタン

これは一見すると違和感のある配置ですが、スキルやアイテムの選択中はヘルプウィンドウが上部に表示されるため、そのヘルプウィンドウのすぐ右下に配置されているのです。なので、そこまでおかしなレイアウトというわけではありません。

▲スキルやアイテムのヘルプウィンドウのすぐ右下にある

ただ、小型~中型程度の敵キャラならば問題ありませんが、大型の敵キャラを画面端まで出現させているような場合、このキャンセルボタンが敵キャラのグラフィックに被ってしまって、少々見映えが悪くなります。

▲大型の敵キャラだとボタンが被ってしまう

そこで、戦闘画面におけるキャンセルボタンを、指定した位置に表示したり、非表示にしたりできるプラグインを公開しました。

もとは公式のツクールWebフォーラムのスレッドで上がっていた要望に応えたものに、機能追加したプラグインです。

キャンセルボタンの位置は「ボタンを非表示」「コマンドの直上」「ボタン位置を指定」の3種類から選べます。

デフォルトは「コマンドの直上」で、これを選んだ場合、キャンセルボタンはアクターコマンドのすぐ上に表示されます。

▲「コマンドの直上」ではアクターコマンドのすぐ上に表示

この場合でも、小型の敵など画像によっては、敵キャラのグラフィックにキャンセルボタンが被ってしまいます。

ただ、被るといっても基本的に足下なのと、アクターコマンドのすぐ右上という配置なので、そこまで違和感はないのではないでしょうか。

▲小型の敵だとボタンが被ってしまうが、そこまで違和感はない

このほか、表示方法を「ボタンを非表示」にした場合は、キャンセルボタンが表示されなくなります。

ボタンが非表示になっても、マウスの右クリックや2本指タップでキャンセルの操作自体は可能です。ただ、右クリックはともかく、2本指タップは知らないとかなり難しく(MV時代からこの操作は評判が悪かった)、キャンセルボタンを隠す場合は、キャンセル自体が必要ない戦闘システム(自動戦闘メインなど)の時に限ることをお勧めします。

▲「ボタンを非表示」ではキャンセルボタンが表示されない

また、「ボタン位置を指定」にした場合は、ボタン左上のXY座標を指定して、任意の位置にキャンセルボタンを置くことができます。

座標は固定値で指定するため、一つの作品内で条件によって位置を変えたり、といったことはできません。

▲「ボタン位置を指定」でキャンセルボタンを自由に配置。邪魔w

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

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] ダメージが0なら追加効果も発動しない

2023-11-10 02:13:28

物理タイプのスキルでHPダメージが0だった場合は、スキルの追加効果も乗らないようにするプラグインを作成しました。

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

例えば毒の追加効果がある通常攻撃の場合、ツクールのデフォルトシステムでは、相手の防御力が高くて通常攻撃が通らなくても、毒の追加効果が発生します。

しかしこれは何となく直感に反しています。ダメージが0だった場合は、毒などの追加効果も付与されないでいてほしい気がします。

というわけで、スキルの命中タイプが「物理攻撃」で、かつダメージのタイプがHPに作用する(HPダメージ、HP回復、HP吸収)スキルの場合、ダメージが0であったら使用効果が付かないようにするプラグインを作成しました。

注意点としては、命中タイプが「物理攻撃」で、かつダメージのタイプがHP系のスキル全てに適用される点と、全ての使用効果に適用される点です。

スキル個別に、あるいは使用効果個別に、ダメージが0の場合に発動させるか否かを設定する機能はありません。

毒の効果は乗らないでほしいが、追加のコモンイベントは発動してほしいとか、毒攻撃や麻痺攻撃はダメージが0なら追加効果が発動しないでほしいが、足払いはダメージが0でもスタンしてほしい、とかいった個別の設定には対応していませんので、ご注意ください。

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

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

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が最も消耗している敵の狙われ率を上げてやったり、防御力アップの魔法を使う際に防御力がアップしていない敵の狙われ率を上げてやったりすることで、敵の行動をより賢いものにすることができると思います。

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

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