Df.の計算式について考えてみる

えー掲示板で皆さんを迷わせているこのDf.の計算式。
計算式導入に必要となりそうな元データを載っけてみました。
いろいろいじり廻した結果、計算式ができました。

・防御力

防御力 Df.
 関係能力値 Con. Agl. Lv.

・この数値に武器/体防具/盾/装飾品のDf.が加わります。
・最大は999です。
・エンシェントアーマーなど自分の能力値による補正を含めると999を超えます。
・デモンシリーズの補正では超えないようです。
・魔法やアイテムなどによる増強は999で止まります。

関係能力値が与える影響(他の能力値を固定して1ずつ変化させました。)

Con.の影響 Agl.の影響 Lv.の影響
C:11 A:13 L:1 Df.1
C:12 A:13 L:1 Df.2

C:24 A:13 L:1 Df.2
C:25 A:13 L:1 Df.3

C:37 A:13 L:1 Df.3
C:38 A:13 L:1 Df.4
C:9 A:16 L:1 Df.1
C:9 A:17 L:1 Df.2

C:9 A:32 L:1 Df.2
C:9 A:33 L:1 Df.3

C:9 A:48 L:1 Df.3
C:9 A:49 L:1 Df.4
C:408 A:311 L:302 Df.126
C:408 A:311 L:303 Df.127

C:408 A:311 L:306 Df.127
C:408 A:311 L:307 Df.128

C:408 A:311 L:310 Df.128
C:408 A:311 L:311 Df.129
Con.+13 で Df.+1 Agl.+16 で Df.+1 Lv.+4 で Df.+1

ということで、Df.の計算には 「Con./13」「Agl./16」「Lv./4」が影響しそうです。
ただ、Con.に関しては後の調査で「Con./12」を試行し、
さらに後の調査で「Con./12.8」が確定します。

Con.とAgl.の相互影響 (全てLv1で。Con.とAgl.を連続的に変化させたものです。)

\Con
Agl.\
09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
13|
14|
15|
16|
17|
18|
19|
20|
21|
22|
23|
24|
25|
26|
27|
28|
29|
1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2
1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 3 3
1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3
2 2 2 2 2 2 2 2 2 2 2 2 3 3 3
2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3
2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3
2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3
2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3
2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3
2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3
2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3
2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3
2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3
2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3
2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3
2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3
2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3

・・・ということで。Con.とAgl.は連動してますね。おかげで計算式は面倒なことになりそう。

こうやって並べると、Agl.を固定すると(横に見ると)、
2が12個しか並ばないところが出てきますね。
だからといって「Con.+13 で Df.+1」が崩れるわけでもないですが。

Agl.を固定して考えると・・・
Agl.=16 で Df.=(Con.+16)/13 小数点以下の端数は切り捨て
Agl.=32 で Df.=(Con.+29)/13 小数点以下の端数は切り捨て
こんな式を考えてみました。

この下式から上式を引くと Df.=(Con.+13)/13 が残ります。
Agl.16の違いに相当するのはこの+13の部分ですね。これがAgl.補正項になります。
この13を一般化してやりましょう。
Agl.が16増えると13増えるのですから
13×Agl./16 (小数点以下の端数は切り捨て) となりますかね。

Agl.0を想定して書き直すと
 Df.=(Con.+3)/13 小数点以下の端数は切り捨て
一般化したAgl.を組み込みます。
 Df.={Con.+3+(13×Agl./16)}/13
                  割り算の度に小数点以下の端数は切り捨て

さて、ここで+3が出てきましたが、これがレベル1に対する補正と考えていいのかも。
上の表で、黄色の数字で2と書いたところが
「レベル0の時に1と2の境界になる」と踏んでいる場所です。
Con.とAgl.の関係から、ここで切り替わらないと道理に合わないだろうと言うところです。
ちょうどここから「左に3つ2があります」ね、これによく対応しているように思えますね。
レベルがひとつ上がるとDf.が1上昇するので、
Con.ベースで考えると、13個並んだ2を、4レベルで3の左端へ移動する訳ですから
この3という数字、13/4の3.25のなれの果てだと思われます。
ってことで、この+3のところは 13×Lv./4 なりますかね。(小数点以下端数切り捨て)

これを代入すると・・・
Df.={Con.+(13×Lv./4)+(13×Agl./16)}/13 
                          (割り算の度に小数点以下の端数は切り捨て)
となりました。気持ち悪い形・・・・。

13で割ってやると、初期値を代入した際に0になってしまいます。ので、割ってはだめ、と。
でも、どうも境界付近でうまく適合しません。どうしたものでしょうねぇ。

・・・ひょっとしてとんでもない思い違いをしていたかもしれません・・・
冒頭の
>こうやって並べると、Agl.を固定すると(横に見ると)、
>2が12個しか並ばないところが出てきますね。
>だからといって「Con.+13 で Df.+1」が崩れるわけでもないですが。

崩れるかも(爆)

一度気になってしまった物は仕方がないので、Con.を12ベースでやってみようと。
2が12個並んでいるところはAgl.14,19,24,29・・・
14と24で上と同じようにやってみましょう

Agl.=14 で Df.=(Con.+12)/12 小数点以下の端数は切り捨て
Agl.=24 で Df.=(Con.+20)/12 小数点以下の端数は切り捨て

下から上を引くことで
Agl.=10 で Df.=(Con.+8)/12 が残りますね。
Agl.10に相当するのがこの+8ですから・・・8×Agl./10
ただ、Agl.は16でDf.+1なので困るんですよねぇ。
仮に、Agl.に16を入れてやると・・・8×16/10=12.8
・・・あれ、ちゃんとDf.に+1できるじゃん(爆)
ってことは?これはこれでいいのか・・・

さて、問題はレベル補正です。計算式を同じように書くと・・・
 Df.={Con.+レベル補正+(8×Agl./10)}/12

この計算式によると、レベル1の状態ではレベル補正は0.8
4倍して12になって欲しいのですが、遠く及びません・・・
レベルを2以上の時で試してみるしかないのでしょうかね。

ということで、レベル4についてやってみました。色で数字をわけています。
数字は実測ですが、[−]は実測ではなく予測です。
\Con
Agl.\
09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
13|
14|
15|
16|
17|
18|
19|
20|
21|
22|
23|
24|
25|
26|
27|
28|
29|
− − − − − − 2 3 3 − − − − − − − −
− − − − − 2 3 − − − − − − − − − −
− − − − 2 3 − − − − − − − − − − −
− − − 3 − − − − − − − − − − − 3
− − 2 3 − − − − − − − − − − − 3
− 2 2 3 − − − − − − − − − − − 4 −
− 2 3 − − − − − − − − − − − 3 − −
3 − 3 − − − − − − − − − 3 4 − −
3 − − − − − − − − − − − 3 4 − − −
− − − − − − − − − − − 3 4 − − − −
− − − − − − − − − − − 4 − − − − −
− − − − − − − − − − 3 − − − − − −
− − − − − − − − − 3 4 − − 4 − − −
− − − − − − − − 3 4 − − − − − − −
− − − − − − − 3 4 − − − − − − − −
− − − − − − − 4 − − − − − − − − −
− − − − − − 3 − − − − − − − − − −

パターンはレベル1とほぼ同じですが、若干ずれています。
このずれがレベル補正に相当するものですね。
さて。
ここで、Con.12でDf.+1,Agl.16でDf.+1,Lv.4でDf.+1なら
黄色の2でDf.3となって欲しかったのですがね・・・
やっぱりCon.は13ということですかね?
また、各項目ごとの割り算で切り捨て、切り上げ、四捨五入などをしていれば
この表のように逐次値は変化することはないはずですね。
また。
[Con.12,Agl.16,Lv.4]でDf.2 [Con.13,Agl.16,Lv.4]でDf.3ということは
Con.13でDf.+1,Agl.16でDf.+1,Lv.4でDf.+1を考えると
計算式はこれらの項目を絡めた後で切り捨てにしていると考えられます。

さて、Lv.4でDf.+1を確定させるために、Lv.8でも表を作りました。
カンダタ様の協力をいただいております。
\Con
Agl.\
09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
13|
14|
15|
16|
17|
18|
19|
20|
21|
22|
23|
24|
25|
26|
27|
28|
29|
3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4
3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4
3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4
3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4
3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4
3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 5
3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5
4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5
4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5
4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5
4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5
4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5
4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5
4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5
4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5
4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5
4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5

これを見る限り、レベル4の結果に+1したものと全く同じになっています。
ということで。Lv.4でDf.+1は確定してよし、と。

まとめて計算した後で切り捨て、ということを考えると・・・

(13×Agl.+16×Con.+ 52×Lv.)/208

この式が出てきます。でも、結局値のずれは変わりません。
Con.でちょっと引っかかるところがあるので、Con.が12.5を扱ってみます。
こちらで行くと

(25×Agl.+32×Con.+100×Lv.)/400

ずいぶん気持ちが良くなりましたが、こちらで計算すると
ずれは逆方向でさらに大きくなってしまいました。
どうも、Con.は12.5〜13の間になってしまっているようです。

なにはともあれ、これにより、仮想的ながらLv.0の状態がたたき出せますね。
ついでなので、Con.0 Agl.0 も想定してそこから伸ばしてみました。

Lv.0でのCon.Agl.によるDf.の相関

右方向にはCon.縦方向にはAgl.をそれぞれ取り、パターンから仮定したLv.0の状態。
■:Df.0模様が変わるにつれてDf.+1です。

0−−−−5−−−−10−12 13−15−−−−20−−−−25 26−−−30−−−−35−−38 3940−−−−45−−−−5051 52−−55−−−−60−−−64
0




5




10




15
■■■■■■■■■■■■■
■■■■■■■■■■■■□
■■■■■■■■■■■■□
■■■■■■■■■■■□□
■■■■■■■■■■□□□
■■■■■■■■■□□□□
■■■■■■■■□□□□□
■■■■■■■■□□□□□
■■■■■■■□□□□□□
■■■■■■□□□□□□□
■■■■■□□□□□□□□
■■■■□□□□□□□□□
■■■■□□□□□□□□□
■■■□□□□□□□□□□
■■□□□□□□□□□□□
■□□□□□□□□□□□□
□□□□□□□□□□□□□
□□□□□□□□□□□□▲
□□□□□□□□□□□▲▲
□□□□□□□□□□□▲▲
□□□□□□□□□□▲▲▲
□□□□□□□□□▲▲▲▲
□□□□□□□□▲▲▲▲▲
□□□□□□□▲▲▲▲▲▲
□□□□□□□▲▲▲▲▲▲
□□□□□□▲▲▲▲▲▲▲
□□□□□▲▲▲▲▲▲▲▲
□□□□▲▲▲▲▲▲▲▲▲
□□□▲▲▲▲▲▲▲▲▲▲
□□□▲▲▲▲▲▲▲▲▲▲
□□▲▲▲▲▲▲▲▲▲▲▲
□▲▲▲▲▲▲▲▲▲▲▲▲
▲▲▲▲▲▲▲▲▲▲▲▲▲
▲▲▲▲▲▲▲▲▲▲▲▲△
▲▲▲▲▲▲▲▲▲▲▲△△
▲▲▲▲▲▲▲▲▲▲△△△
▲▲▲▲▲▲▲▲▲▲△△△
▲▲▲▲▲▲▲▲▲△△△△
▲▲▲▲▲▲▲▲△△△△△
▲▲▲▲▲▲▲△△△△△△
▲▲▲▲▲▲△△△△△△△
▲▲▲▲▲▲△△△△△△△
▲▲▲▲▲△△△△△△△△
▲▲▲▲△△△△△△△△△
▲▲▲△△△△△△△△△△
▲▲△△△△△△△△△△△
▲▲△△△△△△△△△△△
▲△△△△△△△△△△△△
△△△△△△△△△△△△△
△△△△△△△△△△△△●
△△△△△△△△△△△●●
△△△△△△△△△△●●●
△△△△△△△△△●●●●
△△△△△△△△△●●●●
△△△△△△△△●●●●●
△△△△△△△●●●●●●
△△△△△△●●●●●●●
△△△△△●●●●●●●●
△△△△△●●●●●●●●
△△△△●●●●●●●●●
△△△●●●●●●●●●●
△△●●●●●●●●●●●
△●●●●●●●●●●●●
△●●●●●●●●●●●●
●●●●●●●●●●●●○
●●●●●●●●●●●●○
●●●●●●●●●●●○○
●●●●●●●●●●○○○
●●●●●●●●●○○○○
●●●●●●●●○○○○○
●●●●●●●●○○○○○
●●●●●●●○○○○○○
●●●●●●○○○○○○○
●●●●●○○○○○○○○
●●●●○○○○○○○○○
●●●●○○○○○○○○○
●●●○○○○○○○○○○
●●○○○○○○○○○○○
●○○○○○○○○○○○○
○○○○○○○○○○○○○
16



20




25




30
31
□□□□□□□□□□□□□
□□□□□□□□□□□□▲
□□□□□□□□□□□□▲
□□□□□□□□□□□▲▲
□□□□□□□□□□▲▲▲
□□□□□□□□□▲▲▲▲
□□□□□□□□▲▲▲▲▲
□□□□□□□□▲▲▲▲▲
□□□□□□□▲▲▲▲▲▲
□□□□□□▲▲▲▲▲▲▲
□□□□□▲▲▲▲▲▲▲▲
□□□□▲▲▲▲▲▲▲▲▲
□□□□▲▲▲▲▲▲▲▲▲
□□□▲▲▲▲▲▲▲▲▲▲
□□▲▲▲▲▲▲▲▲▲▲▲
□▲▲▲▲▲▲▲▲▲▲▲▲
▲▲▲▲▲▲▲▲▲▲▲▲▲
▲▲▲▲▲▲▲▲▲▲▲▲△
▲▲▲▲▲▲▲▲▲▲▲△△
▲▲▲▲▲▲▲▲▲▲▲△△
▲▲▲▲▲▲▲▲▲▲△△△
▲▲▲▲▲▲▲▲▲△△△△
▲▲▲▲▲▲▲▲△△△△△
▲▲▲▲▲▲▲△△△△△△
▲▲▲▲▲▲▲△△△△△△
▲▲▲▲▲▲△△△△△△△
▲▲▲▲▲△△△△△△△△
▲▲▲▲△△△△△△△△△
▲▲▲△△△△△△△△△△
▲▲▲△△△△△△△△△△
▲▲△△△△△△△△△△△
▲△△△△△△△△△△△△
△△△△△△△△△△△△△
△△△△△△△△△△△△●
△△△△△△△△△△△●●
△△△△△△△△△△●●●
△△△△△△△△△△●●●
△△△△△△△△△●●●●
△△△△△△△△●●●●●
△△△△△△△●●●●●●
△△△△△△●●●●●●●
△△△△△△●●●●●●●
△△△△△●●●●●●●●
△△△△●●●●●●●●●
△△△●●●●●●●●●●
△△●●●●●●●●●●●
△△●●●●●●●●●●●
△●●●●●●●●●●●●
●●●●●●●●●●●●●
●●●●●●●●●●●●○
●●●●●●●●●●●○○
●●●●●●●●●●○○○
●●●●●●●●●○○○○
●●●●●●●●●○○○○
●●●●●●●●○○○○○
●●●●●●●○○○○○○
●●●●●●○○○○○○○
●●●●●○○○○○○○○
●●●●●○○○○○○○○
●●●●○○○○○○○○○
●●●○○○○○○○○○○
●●○○○○○○○○○○○
●○○○○○○○○○○○○
●○○○○○○○○○○○○
○○○○○○○○○○○○◆
○○○○○○○○○○○○◆
○○○○○○○○○○○◆◆
○○○○○○○○○○◆◆◆
○○○○○○○○○◆◆◆◆
○○○○○○○○◆◆◆◆◆
○○○○○○○○◆◆◆◆◆
○○○○○○○◆◆◆◆◆◆
○○○○○○◆◆◆◆◆◆◆
○○○○○◆◆◆◆◆◆◆◆
○○○○◆◆◆◆◆◆◆◆◆
○○○○◆◆◆◆◆◆◆◆◆
○○○◆◆◆◆◆◆◆◆◆◆
○○◆◆◆◆◆◆◆◆◆◆◆
○◆◆◆◆◆◆◆◆◆◆◆◆
◆◆◆◆◆◆◆◆◆◆◆◆◆

これを見て気が付くことは、上と下は全く同じパターンと言うこと、それから・・・
Con.は一見13でDf.+1しているように見えますが、
どうやらCon.64でDf.+5のようです。
Con.64−76を想定してやると、Con.0−12と全く同じパターンになります。

64/5=12.8・・・先ほど12.5−13の間、といったことに良く合致しますね。

これで計算式がたたき出せそうです。

Con.+64でDf.+5
Agl.+16でDf.+1
Lv.+4でDf.+1

これをふまえた上で、それぞれを足し合わせた後で切り捨てにするということで。

(5×Con./64)+(Agl./16)+(Lv./4)

分母を払いましょう。

(5×Con.+4×Agl.+16×Lv.)/64  (端数切り捨て)

綺麗です。すばらしく綺麗です。検算もPerfect!

では、これにてDf.計算式算出は終了ですね。