精度向上

内部的な攻撃力と切り捨て

キャラの攻撃力は、内部的には端数を含んでいる。そして、詳細情報の攻撃力欄に表示される値は、内部的な攻撃力を切り捨てた値になっている。例えば、内部的な攻撃力が85.1でも85.4でも85.99でも攻撃力は85と表示されてしまう。逆に言うと、攻撃力が85と表示されていても、実際の攻撃力aは85<=a<86を満たす値という事しかわからない。 そのため、ゲーム内で使われている値や、行われている計算を推測する際にどうしても誤差が生じてしまう。

切り捨てを逆手に取る

モンクは筋力 +3のとき、基礎倍率cは1.16129 <= c < 1.16216と見積もれている。そして、昨日は c=1.162なのではないかと推測した。もっと確信を持ってc=1.162と言えるだけの証拠を揃えたい。

そこで今日は、上に書いた「切り捨て」を逆手にとって、精度の高い推定を行ってみる。標語的に言えば

切り捨ての境界に近い値を作る

という事。こんな風に考える:

装備無しでは基礎攻撃力が71で、これに指輪を装備して攻撃力+rしたとき表示される攻撃力は (71+r)*c となるはず。さらに攻撃力増のバフをb%つけたとすると、攻撃力は(71+r)*c*(1+b/100)となるはず。

そこで、c=1.162と仮定し

[Case1] r=2, b=45としてみると
(71+2)*1.162*1.45=122.9977

[Case2] r=6, b=-5としてみると
(71+6)*1.162*0.95=85.0003

となる。どちらも整数にとても近い値になっている所がポイント。もし、c=1.162という推測が正しいとすると、攻撃力はCase1では122、Case2では85と表示されるはず。ところが、cの値が1.162からわずかでもズレていて、cが1.162より少し大きければ、Case1で123と表示されるだろうし、逆に、cが1.162より少し小さければ、Case2で84と表示されてしまうはず。

なので、攻撃力がCase1で122、Case2で85と表示されれば、相当高い精度でc=1.162だと言ってよいはず。

境界実験

ここまでの話をまとめると、こんな実験をすればいいことが分かる。

[Test1] 攻撃力+2の指輪をつけ、攻撃力+45%のバフを付ける(例えば、ヒドゥンアームズ15%+バトソン30%)。
これで、攻撃力の表示が122となっていれば成功。

[Test2] 攻撃力+3の指輪を2つ付け、衰弱(攻撃力-75%)を付けたうえで、攻撃力+70%のバフを付ける。
(例えば、バトソン30%、モンクレイズ20%、ヒドゥンアームズ15%、攻撃型パぺ5%)
これで、攻撃力の表示が85となっていれば成功。

結果

結果は期待通り[Test1]では122、[Test2]では85となった。

同様の実験を筋力+1、+2でも行ってみる。

筋力 +1 の場合

昨日の予想だと、c=1.078だった。

r=8, b=55として
(71+8)*1.078*1.55=132.0011 実測値は 132

r=4 b=135として
(71+4)*1.078*2.35=189.9975 実測値は 189

筋力 +2 の場合

昨日の予想では、c=1.12

r=1.5 b=150
(71+1.5)*1.12*2.5=203.0000 実測値 203

r=0, b=110
71*1.12*2.1=166.9920 実測値 166

分析

どれも高い精度で、予想通りの結果となった。

なので基礎倍率は

筋力+1 筋力+2 筋力+3
7.8% 12% 16.2%

と言ってよさそう。そして、筋力+1につき、 4.2%増えるという予想もたつ。モンク以外の職でこれが変わるのかどうかはまだ分からない。