成功判定の扱い
挑戦応戦設定について
ところどころ、「挑戦応戦設定」と呼ばれる設定が求められます。これは、何かについて行動を成功させる判定を行う際に使用する能力値と、成功の範囲を定義づけるためのものです。罠の発見、攻撃の命中、ブレスへの抵抗、アイテムの鑑定等々、すべての判定項目は同じルールに則って判定が行われます。
用語
- ◆ 挑戦(回避)能力値
- 判定を成功させようとする能力値のことです。値が高ければ高いほど成功率が高くなります。挑戦能力値が、「応戦能力値(難易度)+判定範囲」の値に達しているとき、成功率は最高率となります。カッコにして「回避」と書いたのは、挑戦能力値が「回避する挑戦」に用いられることもあるからです
- ◆ 応戦(回避)能力値、もしくは難易度
- 行為を妨害しようとする値のことです。値が高ければ高いほど成功率が低くなり、挑戦能力値が応戦能力値(難易度)を下回っているとき、成功率はゼロとなります。攻撃や回復アクションの判定については「対象者の応戦能力値」が用いられ、罠外しなど、キャラクタではない対象物を相手に判定を行う場合、「難易度」が使用されます。難易度は、たとえば罠であれば罠の設定画面で設定を行います
- ◆ 判定範囲
- 応戦能力値もしくは難易度を最低値として、プラスいくつまでを成功率変化の範囲とするかを取り決めた値のことです。Desigeonは能力値の範囲を制作者が自由に決められるため、値の範囲が0〜18であるのか、100000という値が大きいのか小さいのか、その基準をシステムは判断できません。判定範囲は、最低成功率〜最高成功率の範囲を、応戦能力値からの相対値で決めます
考え方
以下、説明文では挑戦能力値のことを「挑戦値」、応戦能力値のことを、以下「難易度」と置き換えます。また、最高成功率を「最高率」、最低成功率を「最低率」にします。
挑戦応戦判定の仕組みは、以下の考えに基づいて設計されています。
- どれほどの達人でも失敗することがある(挑戦値がどんなに高くても成功率100%になるとは限らない)
- 挑戦しようとしている事柄に対して、挑戦者が難易度のレベルに達していなければ、一切成功させない(挑戦値が難易度未満であれば、成功率はゼロとなる)
- 判定の範囲は、なるべく広範囲の数値状況に対応していなければならない。例えば、能力値がマイナス100万のときに成功率15%、プラス3億のときに80%となる仕組みであっても、実現できるようにしたかった
負の方向に成長していく能力値の実現に対しては、マイナス表記の設定を可能にしてあるため、計算上はプラス方向だけを考慮しています。
画面
画面にはいろいろな値を設定できるようになっていますが、命中判定で重要な項目は、挑戦能力値・応戦能力値・判定範囲・最低成功率・最高成功率の5つです。
成功率算出の方法
5つの要素から成功率を算出する式を以下に示します。
成功率=(挑戦値−難易度)÷判定範囲×(最高率−最低率)+最低率
この式には、条件があります。
- 成功率は「挑戦値>(難易度+判定範囲)」のとき、最高率になる
- 成功率は「挑戦値<難易度」のとき、ゼロになる
上記が、あらゆる成功率の公式(法則)ということになります。
結果
この項目は、現在のところあまり重要ではありません。判定結果についてです。
「結果値」の算出
挑戦応戦判定が行われると、結果が出ます。Desigeonでは、挑戦の結果について、一回の判定ごとにマイナス100〜プラス100未満の「結果値」(小数含む)を算出します。結果値については、以下の決まりがあります。
- 「結果値>0」であれば成功(命中成功。挑戦側の勝ち)
- 「結果値≦0」であれば失敗(回避成功。防御側の勝ち)
- 結果値は、大きければ大きいほど「素晴らしい成功」とみなされる
- 結果値は、小さければ小さいほど「みじめな失敗」とみなされる
- 「挑戦値<難易度」のときの判定(成功率ゼロのとき)では、結果値は−100となる(内部的には SKILLFAIL と呼んでいて、トレースログに出力されます)
結果値は、成功率が高いときの成功ほど高くなる傾向があります。また、成功率が低いときの失敗ほど低くなる傾向があります。成功率が低いときに成功しても、「ギリギリの成功」とみなされる値しか算出されません。成功率が高いときに失敗すると、「惜しい失敗」であることが多いです。
結果値=成功率−乱数値(0以上100未満、小数有り)
乱数変化の範囲は100しかありませんから、条件が同じであれば何度挑戦を繰り返しても結果値は100の範囲でしか変化しません。結果値99を出したければ、成功率が99%より大きくなければ出ないことになります。
結果に即したメッセージを設定する
結果値に対するメッセージを表示する機能があります。設定方法は以下の通りです。
挑戦応戦設定画面の右下に、値とテキストの組み合わせを設定する場所が設けられています。ここに、結果値に対するしきい値(「Nより大きい場合」という条件値)とメッセージを列挙していくだけです。以下に例を示します。
設定値 | メッセージ |
50 | 結果値が50より大きい場合のメッセージ。会心の成功!! |
0 | 結果値が0より大きい場合のメッセージ。普通の成功! |
-50 | 結果値が-50より大きい場合のメッセージ。普通の失敗… |
-90 | 結果値が-90より大きい場合のメッセージ。ひどい失敗…… |
上記以外 | 上記以外の場合のメッセージ。結果値-100〜-90。もうダメ…… |
条件判定は、上から行われていきます。編集ツール側では、値が設定されると、画面から抜けるときに値の大きい順に並べ替えを行います。
挑戦応戦判定による成長
成功判定が行われると、その結果に応じてキャラクタに経験値を与える機能があります。サンプルゲームではまったく採用していませんが、機能は実装されています。
考え方
以下の考えに基づいて設計されています。
- “使った”能力値を成長させていくゲームを作れるようにする(→レベルや職業に依存しないキャラクタ作りが可能となる)
- 難しい挑戦を行った場合ほど、多くの経験値を与える(ただしゲームの設計によっては、長期的に見るとハイリスクハイリターンになるとは限りません)
現在のルール
現在は、以下のルールが採用されています。
- 判定に成功したら、挑戦者に経験値を与える
- 判定に失敗したら、応戦者に経験値を与える(難易度が対象であれば、当然これはありません)
与える経験値は、以下の2種類を設定できます。
- レベル能力値に与える
- 使用した能力値に与える(挑戦者であれば挑戦能力値、応戦者であれば応戦能力値)
さらに、与えられる経験値は、成功率によって最高経験値〜最低経験値の値の間で変化します。また、条件によっては一切貰えません。
- 成功率が最高率のとき、最低経験値となる。成功率が下がるにつれて、貰える経験値が上昇していく
- 成功率が最低率のとき、最高経験値となる
- 「挑戦値<難易度」のとき(成功率ゼロのとき)、経験値を貰えない(応戦側からすると絶対成功になるわけで、ノーリスクであると判断されます)
経験値を貰い受けた能力値に成長設定がなされていると、その場で成長判定が行われて、累積経験値が一定量に達していれば、その場で値が成長します。レベルアップが発生すれば、ボーナス値が増えます。
与える経験値の算出方法
以下の式で表されます。
経験値=(最高経験値−最低経験値)×{1−(成功率−最低率)÷(最高率−最低率)}+最低経験値
検討事項
- 現在、判定に失敗した側は一切経験値を貰えません。そのうち、何パーセントかの経験値が貰える設定が可能になるよう、機能強化するかもしれませんが今のところは未定です
- 挑戦値が難易度を下回った場合に成功率をゼロにするべきか、実は悩みました。同じ条件のときに成功率を最低率とする案も考えられたからです。将来的には、難易度を下回った場合に最低率で判定するオプションも付けたいところです
- 現在の仕様では、成功率が能力値の値に「比例」する設定しか行えません。能力値が上昇すると、後半急激に率が上昇する仕組み、もしくは序盤の上昇が激しく終盤はほとんど上がらない仕組みも考えられます
熊恭太郎