最終ダメ

この前のダメ計算式は、最終ダメや両手持ちを含まないものだった。実は、最終ダメや両手持ちの効果にはバグがあるのではないかと思っている。

今まで少し試してみた感触だと

  • 最終ダメはプレイヤーに不利なバグ
  • 両手持ちはプレイヤーに有利なバグ

があるっぽい。今日は最終ダメの効果を確認してみる。

最終ダメ増+10%

名前の感じからして、最終ダメージ+10%の装備を付けると、それを付けていないときと比べてダメが1.1倍になるように思える。まずはこのことを実際に確かめてみる。

実験

訓練用の槌矛を装備した50モンクで太陽の聖堂の木を「最終ダメージなし」と「最終ダメージ10%」で叩いて比較してみる。その際、通常攻撃とアッパーと両方のダメを記録する。
こんな結果になる。

最終ダメ無し

通常攻撃 185 (472)
アッパー 492 (1256)

最終ダメ10%

通常攻撃 203 (520)
アッパー 541 (1381)

但し、カッコ内はクリダメ。

これは、確かにダメが1.1倍になったといってよい。 185*1.1=203.5、472*1.1=519.2、492=541.2、1256*1.1=1381.6となり、丸め誤差を考えると期待通りの結果。
通常攻撃のクリダメについては、472*1.1=519.2となっていてズレているように見える。けれど、472が例えば内部的には、472.8という値であったとすれば、472.8*1.1=520.08となりつじつまが合う。

このモンクは、最終ダメ+10%の装備を、腕と装身具の二つ持っているけれど、どちらを付けても全く同じダメだった。

最終ダメ増+10%2つ

問題は、最終ダメ+10%装備を2つ付けた場合。このとき、1+0.1+0.1=1.2で1.2倍か、1.1*1.1=1.21で1.21倍かのどちらかになりそうと期待できる。ところが、実際には

最終10%を2つ

通常攻撃 220 (562)
アッパー 586 (1494)

となり、1.2倍にならない。最終ダメ無しの時と比べると
220/185=1.189   (通常攻撃、非クリ)
562/472=1.19    (通常攻撃、クリ)
586/492=1.191   (アッパー、非クリ)
1494/1256=1.189  (アッパー、クリ)
となり、1.19倍となっている。つまり10%+10%=19%となってしまっている。

赤い袋

レイド報酬の赤い袋は最終ダメージ+20%のバフが付く。これがどうなるのかも確かめてみる。

最終ダメージ装備を外し、赤い袋バフを付けると

通常攻撃 222 (567)
アッパー 591 (1507)

となる。これは、最終ダメージ無しの最初の時と比べて、ちょうど20%増えていることが確認できる。
185*1.2=222、472*1.2=566.4、492*1.2=590.4、1256*1.2=1507.2となる。丸め誤差を考えると完全に期待通りの結果。

そして、僅かではあるけれど、最終ダメ+10%を2つ付けたときよりダメが増えている。
過去の日記で何度か書いているけれど、訓練用の槌矛は攻撃力に幅がなく、与ダメも一定。そのため、ダメ値に僅かでも違いがあれば、それは、二つの装備に違いがあると分かる。つまり

最終ダメ+10%を2つ付けても、最終ダメ+20%を一つつけた場合より劣る

ということが確認できる。この時点でバグと言ってよさそう。

赤い袋+最終ダメ+10%

さらに実験を続けてみる。赤い袋を使いながら、最終ダメ+10%を付けてみる。期待としては+30%になってほしいところだけれど

最終20%(赤い袋)+勇気

通常攻撃 237 (605)
アッパー 630 (1608)

という結果に。これは大体28%増。なので20%+10%=28%という結果に。

赤い袋+最終ダメ+10%を2つ

赤い袋を使いながら、最終ダメ+10%を2つつけてみる。

通常 250 (639)
アッパー 666 (1698)

という結果に。これは大体35.2%像。20%+10%+10%=35.2%。悲しい。

感想

こんな感じなので

  • 最終ダメ装備(or バフ)を1つ付けるだけなら期待通りの結果。 (ダメが1.1倍とか1.2倍になる)
  • 最終ダメ装備(or バフ)を2つ以上つけると期待より低い結果。 (1.2倍のはずなのに1.19倍しかない)

という結論になる。最終ダメージはユーザに不利なバグがあるっぽい。逆に、両手持ちはユーザに有利なバグがあるっぽい。こっちの検証はまた後日。

ダメ計算式に関する補足

昨日の日記の続き

昨日書いたダメ計算の手順について。

最終ダメ、両手持ち

昨日書いた計算手順は最終ダメや両手持ちを考慮していない。
最終ダメや両手持ちについては後日調べてみるつもり。

スカの通常攻撃

スカの通常攻撃ダメは、昨日の計算値の半分になるみたい。ただし、
スカは通常攻撃で2回叩くので結果的な火力としては同じ。

対人戦

昨日の計算式は対人戦では使えない。対人戦は対モンスター戦と結構違う式になっているみたい。対人戦については後日調べてみるつもり。

使われないステ

「攻撃力〇%上昇」というステによって、攻撃力が上がるので結果的にダメも上がる。けれど、ダメ計算の式で直接的に「攻撃力上昇」のステが使われるわけではない。同じように、「スキル攻撃力上昇」も式に直接は現れない。

防御係数

昨日の計算式では、最後に防御力係数Dが現れる。この値が分からないと具体的なダメの計算ができない。しかも、この値はレベルや敵の種類に依存しているようなので、調べるのは大変そう。訓練用の槌矛があるとこの値を1%程度の誤差で調べられる。
通常の武器だと、この値を調べようとしても5%程度の誤差が生じてしまう。

信憑性

昨日の計算法の信憑性はまだまだ低い。実は、もう既に昨日の式では計算が合わない例も出てきてしまっている。防御係数辺りの計算は修正が必要になる可能性が高い。

ダメ式 (暫定)

昨日の日記では、与ダメを決定する式について、実験結果からほぼ間違いないと思える事柄について書いた。

 今日は、もっと踏み込んで、必ずしも実験で確かめられていない事柄も含めて、ある程度の予想のもとに与ダメの値を決定する手順(暫定版)を書いてみる。

与ダメ値決定手順

攻撃力の決定

通常攻撃の場合、詳細情報の「(物理/魔法)攻撃力 〇〇~〇〇」とあれば、その間の数値がランダムに選ばれ、それに「通常(物理/魔法)攻撃力上昇」が加算される。

スキル攻撃の場合、スキル詳細の「(物理/魔法)攻撃力 〇〇~〇〇」とあれば、その間の数値がランダムに選ばれる。

A1 = (攻撃力)+(通常攻撃力上昇)                [通常攻撃時]

or

A1=(スキルの攻撃力)                                  [スキル攻撃時]

ダメ増

狩り技能分やかかと分のダメ増の全ての総和をとり、基礎値(A1)にかける。

A2=(1+(ダメ増)/100)*A1

クリ

クリ発生時は(1.5+(クリダメ増)/100)倍される。

A3=(1.5+(クリダメ増)/100)*A2                 [クリ]

or

A3=A2                                                        [非クリ]

防御力

敵及び自分のレベルに応じて防御係数Dが定まっている(詳しくは後述)。

このとき、

d=(1 - (防御力デバフ)/100) * D

(ダメ)=(1-d)*A3

 という式でダメが決定される。

防御係数

上の計算の最後に現れる防御係数Dは、自分から見た「敵の硬さ」のようなもので、0以上1未満の数。この値は、こちらのレベル、攻撃が物理か魔法か、敵の種類の3要素に依存する。これを調べないとそもそもダメを計算できない。

今まで調べたのは3つの敵。すべて50モンクが叩く場合で

太陽の聖堂の木:0.3477< D < 0.3489

カーラ危険のサテュ:0.4990 < D < 0.5007

湖畔の傭兵:0.5905< D < 0.5908

叩く人のレベルが変わるとこれらの値も変わるはず。

 

計算例

この方法で実際にダメ計算してみる。例えば、バフBS込みでアッパーの攻撃力が

1109~1156の50モンクがカーラ危険のサテュを叩く状況を考える。

Step1

A1=1109~1156

と思っていいけれど、内部的には1109~1156.999などとなっている可能性もあるので、少し余裕を見て

A1=1109~1157

と思っておく。

Step2

このモンクの狩り技能(幻想系)は20%ダメ増で、さらにかかとで20%分あがるとすると

A2=1.4*A1 =1552.6~1619.8

step3

このモンクのクリダメ増は224.3% (BS込)なのでクリ倍率は1.5+224.3/100=3.743倍

A3=3.743*A2=5811.3818~6062.9114

step4

50モンクがサテュを叩く場合D=0.5と思ってよい。ヘビブロなどの防御力デバフはつけないとすると

d=D=0.5

(ダメ)=(1-d)*A3=2905.6909~3031.4557

と計算できる。ダメ値は切り捨てた値で表示されるので結局2905~3031となる。

 

まとめると、「このモンクがバフBSかかとあり、ヘビブロなしグロなしでカーラのサテュにアッパーをした場合のクリダメは2905~3031」という結論が得られる。

検証

この計算が正しいか実際に検証してみる。上で指定した条件でサテュを叩きクリが出たときのみ、そのダメ値を記録する。チェインが発動すると面倒なのですべて外しておく。10回分のクリダメを記録すると。

2916
2981
3008
2929
2968
2945
2979
3028
2952
2994

という結果になった。上で計算した2905~3031という予想通りと言える。

長くなったので続きは後日。

与ダメ実験4

今までの実験で、モンスターを通常攻撃で叩いた時のダメについて以下のことが分かった。

  • ダメは (攻撃力)+(通常攻撃力上昇) に比例する
  • ダメは敵の防御力の1次関数である
  • クリダメは非クリ時のダメの(1.5+(クリダメ増)/100)倍になる

これらを総合すると、ダメは定数SとDによって次のように表されると言える。

非クリダメは
S*(1-(1-(防御力デバフ)/100)*D)*( (攻撃力)+(通常攻撃力上昇) )
クリダメは
(非クリダメ)*(1.5+(クリダメ増)/100)

ただし、この定数SとDは叩く人、叩く相手に依存する。

実験

この式が本当に正しいか実験で確かめてみたい。それとともに定数SとDも決定してみる。

叩く人:50モンク
通常攻撃力上昇:30.3
クリダメ増:130%
狩り技能(自然系ダメ増):5%

叩く相手:太陽の聖堂の木

モンクの攻撃力を変えながら、通常攻撃で木を叩く。
そして、ヘビブロありとヘビブロなしでダメを見る。

但し、ヘビブロはLv2なので防御力は-25%

結果

結果はこちら

攻撃力 ヘビブロなしダメ (クリダメ) ヘビブロありダメ (クリダメ)
130 109 (306) 123 (345)
156 127 (356) 143 (402)
182 145 (406) 163 (458)
208 162 (455) 183 (514)

分析

例えば、攻撃力130のとき、ヘビなしダメ109、ヘビありダメ123だけれど、これは

109=S*(1-D)*(130+30.3)   123=S*(1-0.75*D)*(130+30.3)

というようになるはず。端数分も考慮して、この式ですべての結果を説明できるように調節するとS=1.033、D=0.3385という結果が出る。実際この数値を代入してみると

攻撃力 ヘビブロなしダメ ヘビブロありダメ
130 109.53771885  (306.70561278) 123.5507641375   (345.942139585)
156 127.30428585   (356.45200038) 143.5901893875   (402.052530285)
182 145.07085285   (406.19838798) 163.6296146375   (458.162920985)
208 162.83741985   (455.94477558) 183.6690398875   (514.273311685)

となり、切り捨てたものは実測値に完全に一致する。
最初に挙げた式はかなり信ぴょう性が高いと言ってよさそう。

与ダメ実験3

これまでの実験から、対人戦でのダメは、一定値以下の範囲では、防御力の一次関数であることが分かった。対モンスター戦でも同様だと思うので確かめてみたい。
仲良しのフレさんに手伝ってもらい、敵の防御力を下げるデバフを打ってもらい実験してみた。

結論

人がモンスターを叩く場合でも、ダメは防御力の一次関数だと思ってよさそう。ただし、対人戦のようにダメが一定値になる防御力があるかどうかは不明。

実験

フォース、メルブレ、ヘビブロなどで敵の防御力を減らしダメの変化を見る。

叩く人:50モンク
攻撃力:156
通常攻撃力上昇:30.3
人間系ダメ増:15%

叩く相手:見捨てられた国境の傭兵

攻撃はすべて通常攻撃。

結果

結果はこちら

デバフ 敵の防御力 非クリダメ クリダメ
なし 0% 104 317
フォース -10% 113 345
メイルLv1 -15% 117 358
潜伏メイルLv1 -20% 122 372
フォース+メイルLv1 -25% 127 386
へびLv2 -25% 127 386
フォース+潜伏メイルLv1 -30% 131 401
ヘビLv3 -30% 131 401
フォース+ヘビLv2 -35% 136 415
フォース+ヘビLv3 -40% 141 429

グラフ

グラフがこちら
f:id:ochanikki:20170402010546p:plain
横軸が敵の防御力減、縦軸がダメ。紫が非クリダメ、緑がクリダメ。
直線状に並んでいることが見て取れる。

被ダメ実験13

完封防御

いままでの実験から、ダメが0になる防御力が存在するはずと推測できる。今回はそのことを実際に確かめる実験をしたい。ダメが0になる防御力は叩く人のレベルが下がるほど下がるので叩く人を40スカに変えて実験してみた。

結論

そして得られた意外な結論は

ある程度以上防御力を上げると、そこから先は防御力を上げても一切ダメが減らない

というもの。

実験

叩く人:40スカ
物理攻撃力: 184-186
通常攻撃力上昇: 19.2
クリダメ増:108%

叩かれる人:46パラ

スカでパラを通常攻撃でたたく。パラの防御力を変えながらダメを測定する。

訓練用の槌矛と訓練用の短剣

普段実験に使用しているのはオラクル初期装備の「訓練用の槌矛」。今回使用したのはローグ初期装備の「訓練用の短剣」。
訓練用の槌矛は、物理攻撃力に幅がなく、装備しても「攻撃力:〇〇」と表示される。そのため与ダメも一定値。
一方、訓練用の短剣は、物理攻撃力に幅があり、装備すると「攻撃力:〇〇~〇〇」と表示される。そして、与ダメにも幅が生じる。ただし、(186+19.2)/(184+19.2)=1.00984なので、内部的な与ダメの幅は1%未満のはず。

今回の実験では、与ダメは30以下の値なので、たいていの場合は丸め処理の結果一定値になる。そして、稀に1%の差で丸め処理の境界をまたいで、2パターンの与ダメが生じる。

実験結果

実験結果はこちら

防御力 非クリダメ クリダメ
0 13-14 29
90 13 28
180 12 27
270 12 25
360 11 24
450 10 23
630 9 20
720 8-9 19
810 8 17-18
901 7 16
991 7 15
1081 6 13-14
1171 5 12
1261 5 11
1351 4 9
1441 4 9
1531 4 9
1621 4 9
1921 4 9

例えば最初の防御力0での13-14というのは、内部的には 13.9-14.0とかのはず。 一方、防御力90での13というのは内部的には、(例えば) 13.3-13.4などとなっているはず。すべてのダメ値は約1%の幅を持っているけれど、丸め処理の境界をまたいだ時のみ2パターンのダメ値が生じ、それ以外では表面上一定の与ダメになる。そして、防御力1351以降は与ダメが変化していないことが見て取れる。

グラフ

この結果をグラフにするとこんな感じf:id:ochanikki:20170331233954p:plain
グラフは、横軸が防御力で縦軸がダメ値。紫の〇が非クリのダメで、緑がクリダメ。
左部分が直線状に並び、防御力が上がるほどダメが下がるのは今までの実験と同じ。そして、途中からダメ値の減少がパタリと止まることがはっきり確認できる。

分析

グラフの左側部分を延長すると、1770前後で「計算上は」ダメが0になるハズ。いままでの言い方をするなら、完封防御力は1770。しかし、実際にはその7割くらいの防御力に達すると、それ以上はダメが減らない。

4月1日

「え!うそ!?」と思った人もいるかもしれないけれど、エイプリルフールネタではないホントの話。

被ダメ実験12

昨日の日記で考えたことが正しいとすれば、ダメを0にする防御力が(理論上は)存在することになる。その完封防御力はレベルに依存しているかもしれない。

実験

そこで、レベルを変えたとき、完封防御力がどう変わるか実験してみる。
普段の被ダメ実験では、叩く人は50モンク、叩かれる人は46パラという組み合わせでやっている。今回は50プリさんと50レンジャーさんに協力してもらい、同じレベル同士で完封防御力がどうなるか実験してみた。

叩く人は50モンク、叩かれる人は50プリさんと50レンジャーさん。

攻撃力一定のまま、防御力を変化させる。実験結果がこちら

結果

50プリ

物理防御力 非クリダメ クリダメ
0 33 72
124 31 67
186 30 65
311 28 61
497 25 55
622 24 51
746 22 47
870 20 43

50レンジャー

物理防御力 非クリダメ クリダメ
0 35 76
137 33 71
207 32 69
345 30 64
552 26 57
690 24 52
828 22 48
966 20 43

グラフ

グラフを描いてみる。f:id:ochanikki:20170331000853p:plain
横軸が防御力で、縦軸がダメ。紫と緑の〇がレンジャーさんの通常ダメとクリダメ、水色と黄色の〇がプリさんの通常ダメとクリダメ。
直線状に並んでいるのは予想通り。そしてその直線を延長しダメが0になる防御力をグラフから読み取ると約2220とでた。
46パラを叩いた時より明らかに低い。そのため

完封防御力はレベルに依存する

と言えそう。おそらくは、両者のレベル差に依存すると思うので、叩く人のレベルを下げても完封防御力はさがりそう。