跳慮跋考

興味も思考も行先不明

原神における攻撃力%の最適な振り方

会心率と会心ダメージボーナス(ゲーム内表記の「会心ダメージ」)の比率は1:2というのはよく知られているが、攻撃力との配分については「バランスよく」と言われるものの具体的な情報が見当たらなかったので、wikiの式を元にダメージ期待値を最大化する配分を計算した。

(2021/01/31 公式コミュニティの記事 F = a(1+xy)(1+z+b/a)の形で基礎攻撃力を括りだせば会心:会心率:攻撃=1:2:1.5をそのまま適用したりできるという話を見たが、確かにそうした方が簡単そうだ。)

(2021/11/27 よくアクセスされているようなので胡桃の様なステータス変換やベネットの様な固定値バフも含めた一般的な配分の話を書いた。)

要するに

  • 会心率50%、会心ダメージボーナス100%にできるまでは、会心率25%で残りを攻撃力%に振った方がよい
  • それ以降はおおよそ基礎攻撃力の1/10の%くらい攻撃力%に振るとよい(会心の1:2は前提として)

例えば基礎攻撃力800で会心率70%の場合、73%の攻撃力%が理想的(グラフや一番下の表を参照)。☆5砂で46.6%を得るとしても26%をサブ効果(または武器効果)で補う必要がある

f:id:quinoh:20201228034154p:plain
会心率に対する最適な攻撃力%

定義

  •  x : 会心率(初期値5%)
  •  y : 会心ダメージボーナス(初期値50%)
  •  z : 武器や聖遺物による攻撃力の割合上昇
  •  a : キャラと武器による基礎ATK
  •  b : 聖遺物による固定値ATK増加
  •  F(x,y,z) : ダメージ期待値の x,y,zが関わる部分
  •  C(x,y,z) :  x,y,zの育成コスト

以上の変数・定数によって非会心ダメージは (a(1+z)+b)に比例し(天賦、敵防御、敵耐性は武器・聖遺物のステ振りと独立であり、また杯は基本的に属性ダメージバフへ振った方が良いので考えない)、会心ダメージはこれが (1+y)(a(1+z)+b)となるから、ダメージ期待値は

 F(x,y,z) = (1-x)(a(1+z)+b) + x(1+y)(a(1+z)+b)

 \hspace{40pt} = (1+xy)(a(1+z)+b)

に比例する。

育成コスト

聖遺物のメイン効果は会心 xが最大31.1%に対して、会心ダメージボーナス yは最大62.2%、攻撃力 zは最大46.6%となっている。 つまり同じ育成コストに対して x:y:z = 1:2:1.5の割合で上昇し、この割合はサブ効果でも同様になっている。

逆に y 1会心ダメージボーナスの100%)当たりの育成コストを 1とすると、 xのコストは 2 zのコストは \frac{2}{1.5} = \frac{4}{3}となる。

この会心ダメージボーナスに換算した育成コストを C(x,y,z)とすると、

 C(x,y,z) = 2(x-0.05) + (y-0.5) + \frac{4}{3} z

 \hspace{40pt} = 2x + y + \frac{4}{3} z - 0.6

となる。0.05と0.5はキャラが初めから持っている会心率と会心ダメージボーナスなので、コストに含めない。

計算の都合上 C' = C+0.6 = 2x + y + \frac{4}{3} zを定義しておく。

会心率と会心ダメージボーナス

まず zを無視して考える。

この時 C = 2x + y - 0.6から y = C-2x+0.6 = C'-2xで、

 F = (1+xy)(a+(1+z)+b)

 1+xyのみ考えればよい。

 1+xy = 1 + x(C'-2x)

 \hspace{30pt} = -2x^{2} + C'x + 1

 \hspace{30pt} = -2(x - \frac{C'}{4})^{2} + \frac{C'^2}{8} + 1

これは xについて上に凸の二次関数なので、 x = \frac{C'}{4}で最大となり y = C' - 2x = \frac{C'}{2}

つまり x:y = \frac{C'}{4} : \frac{C'}{2} = 1:2の時ダメージ期待値が最大となる。

攻撃力と会心

 zも考慮する。

会心については常に理想比 x:y = 1:2にするとすると、 y=2xであり C'=4x+\frac{4}{3} z から z = \frac{3}{4} (C' - 4x)となる。 y = 2x \ge 0.50より x \ge 0.25である必要がある(会心率を25%までは上げるものとする)。

 Fについて zを削除し xについて整理すると

 F = (1+xy)(a(1+z)+b)

 \hspace{10pt} = (1+x\cdot 2x)\left(a\left(1+\frac{3}{4} (C' - 4x)\right)+b\right)

 \hspace{10pt} = (1+2x^{2})\left(-3ax+\frac{3}{4} aC'+a+b\right)

 \hspace{10pt} = 2x^{2} \left(-3ax+\frac{3}{4} aC'+a+b\right) -3ax+\frac{3}{4} aC'+a+b

 \hspace{10pt} = -6ax^{3} + 2 \left( \frac{3}{4} aC'+a+b \right) x^{2} -3ax+\frac{3}{4} aC'+a+b

極大値を取る会心

 xについて最大値を求めたい。まず微分すると

 \frac{dF}{dx} = -18ax^{2} + 4 \left( \frac{3}{4} aC'+a+b \right) x -3a

 \hspace{15pt} = -18ax^{2} + ( 3aC'+4a+4b ) x -3a

 \frac{dF}{dx} = 0なる xが存在する為には ( 3aC'+4a+4b )^{2} - 4 (-18a) (-3a) \ge 0が必要十分となる(判別式)。

 ( 3aC'+4a+4b )^{2} - 4 (-18a) (-3a) \ge 0

 ( 3aC'+4a+4b )^{2} \ge 3 \cdot 4 \cdot 18 a^{2}

 |3aC'+4a+4b| \ge 6 \sqrt{6} |a|

 a,b,C'全て正なので

 3aC'+4a+4b \ge 6 \sqrt{6} a

 C' \ge 2 \sqrt{6} - \frac{4}{3} \left( 1 + \frac{b}{a} \right)

特に C' > 2 \sqrt{6} - \frac{4}{3} \left( 1 + \frac{b}{a} \right) であれば F極値を持つ。その具体的な xを求めると

 \frac{dF}{dx} = 0

 -18ax^{2} + ( 3aC'+4a+4b ) x -3a = 0

 x = \frac{1}{-2 \cdot 18a} \left( -( 3aC'+4a+4b ) \pm \sqrt{ ( 3aC'+4a+4b )^{2} - 3 \cdot 4 \cdot 18 a^{2} } \right)

 \hspace{10pt} = \frac{1}{12} C' + \frac{1}{9} \left( 1+\frac{b}{a} \right) \pm \sqrt{ \frac{ ( 3aC'+4a+4b )^{2} - 3 \cdot 4 \cdot 18 a^{2} }{ 2^{2} \cdot 18^{2} a^{2} } }

 \hspace{10pt} = \frac{1}{12} C' + \frac{1}{9} \left( 1+\frac{b}{a} \right) \pm \sqrt{ \left( \frac{1}{12} C' + \frac{1}{9} \left( 1+\frac{b}{a} \right) \right)^{2} - \frac{ 1 }{ 6 } }

ここで k = \frac{1}{12} C' + \frac{1}{9} \left( 1+\frac{b}{a} \right) とすると、

 x = k \pm \sqrt{ k^{2} - \frac{ 1 }{ 6 } }

 \frac{dF}{dx} は上に凸なので、 Fは複号が +の場合に極大となる。この x x_Mとする。

 x_M = k + \sqrt{ k^{2} - \frac{ 1 }{ 6 } }

最大値となる条件

 x \ge 0.25なので F(x=x_M) > F(x=0.25)であれば x_M Fが最大となる。(そうでなければ25%以上会心率を上げる必要がない。)

まず k Fを書き直すと

 F = -6ax^{3} + 18akx^{2} - 3ax + 9ak

なので

 F(x=x_M) > F(x=0.25)

 -6ax_M^{3} + 18akx_M^{2} - 3ax_M + 9ak > -6a \cdot \frac{1}{4^{3}} + 18ak \cdot \frac{1}{4^{2}} - 3a \cdot \frac{1}{4} + 9ak

 -6ax_M^{3} + 18akx_M^{2} - 3ax_M > - \frac{6}{4^{3}} a + \frac{18}{4^{2}} ak - \frac{3}{4} a

 x_M^{3} - 3kx_M^{2} + \frac{1}{2} x_M - \frac{1}{4^{3}} + \frac{3}{4^{2}} k - \frac{1}{8} \lt 0

 x_M^{3} - 3kx_M^{2} + \frac{1}{2} x_M + \frac{3}{16} k - \frac{9}{64} \lt 0

 x_M = \frac{1}{4}ならば F(x=x_M) = F(x=0.25)だから、これは左辺の零点であって左辺は x_M - \frac{1}{4} で割り切れる(因数定理)。

 \left( x_M - \frac{1}{4} \right) \left( x_M^{2} + \left( -3k + \frac{1}{4} \right) x_M - \frac{3}{4} k + \frac{9}{16} \right) \lt 0

特に x_M - \frac{1}{4} \ge 0 より

 x_M^{2} + \left( -3k + \frac{1}{4} \right) x_M - \frac{3}{4} k + \frac{9}{16} \lt 0

ここで x_M = k + \sqrt{ k^{2} - \frac{ 1 }{ 6 } } を思い出すと

 \left( k + \sqrt{ k^{2} - \frac{ 1 }{ 6 } } \right)^{2} + \left( -3k + \frac{1}{4} \right) \left( k + \sqrt{ k^{2} - \frac{ 1 }{ 6 } } \right) - \frac{3}{4} k + \frac{9}{16} \lt 0

 k^{2} + 2 k \sqrt{ k^{2} - \frac{ 1 }{ 6 } } + k^{2} - \frac{ 1 }{ 6 } -3k \left( k + \sqrt{ k^{2} - \frac{ 1 }{ 6 } } \right) + \frac{1}{4} \left( k + \sqrt{ k^{2} - \frac{ 1 }{ 6 } } \right) - \frac{3}{4} k + \frac{9}{16} \lt 0

 2k^{2} + 2 k \sqrt{ k^{2} - \frac{ 1 }{ 6 } } - \frac{ 1 }{ 6 } -3k^{2} - 3k \sqrt{ k^{2} - \frac{ 1 }{ 6 } } + \frac{1}{4} k + \frac{1}{4} \sqrt{ k^{2} - \frac{ 1 }{ 6 } } - \frac{3}{4} k + \frac{9}{16} \lt 0

 -k^{2} - \frac{1}{2} k + \left( -k + \frac{1}{4} \right) \sqrt{ k^{2} - \frac{ 1 }{ 6 } } - \frac{ 1 }{ 6 } + \frac{9}{16} \lt 0

 k^{2} + \frac{1}{2} k - \frac{ 19 }{ 48 } > \left( -k + \frac{1}{4} \right) \sqrt{ k^{2} - \frac{ 1 }{ 6 } } *1

符号の場合分けが面倒なのでWolframAlphaに任せると

 k > \frac{5}{12}

となる。この時

 x_M > \frac{5}{12} + \sqrt{ \left( \frac{5}{12} \right)^{2} - \frac{1}{6} } = \frac{5}{12} + \sqrt{ \frac{25 - 24}{12^{2}} } = \frac{5+1}{12} = \frac{1}{2}

つまり会心率50%超の場合に限り、25%だけ振って(理想比で最低限)後を攻撃力の割合上昇に全振りするよりもダメージ期待値が高くなる

(更に言えば数字を見ていると、使える育成コストが低い場合完全に攻撃力%全振りの方が強そうだ。)

対応する攻撃力%

 x=x_Mの時の z z_Mとすると

 z_M = \frac{3}{4} (C' - 4x_M) = \frac{3}{4} C' - 3 x_M

 k = \frac{1}{12} C' + \frac{1}{9} \left( 1+\frac{b}{a} \right) であったから C' = 12k - \frac{4}{3} \left( 1+\frac{b}{a} \right) より

 z_M = 9 k - \left( 1+\frac{b}{a} \right) - 3 x_M

ここで x_M = k + \sqrt{ k^{2} - \frac{ 1 }{ 6 } } であったから

 (x_M - k)^{2} = k^{2} - \frac{1}{6}

 x_M^{2} - 2x_M k + k^{2} = k^{2} - \frac{1}{6}

 2x_M k = x_M^{2} + \frac{1}{6}

 k = \frac{x_M}{2} + \frac{1}{12 x_M}

これを代入して

 z_M = \frac{9}{2} x_M + \frac{3}{4 x_M} - \left( 1+\frac{b}{a} \right) - 3 x_M

 \hspace{15pt} = \frac{3}{2} x_M + \frac{3}{4 x_M} - \left( 1+\frac{b}{a} \right)

計算例

以下の値で考える。

  • 基礎攻撃力 a=700(例えばLv80モナにLv80流浪楽章を装備すると702となる)
  • 固定値攻撃力増加 b=311(羽のメイン効果のみ考慮)
会心 攻撃力% 表示攻撃力
50.0% 80.6% 1575
60.0% 70.6% 1505
70.0% 67.7% 1485
80.0% 69.3% 1496
90.0% 73.9% 1528
100.0% 80.6% 1575

もう少し基礎攻撃力の高い場合。

  • 基礎攻撃力 a=800(例えばLv80ディルックにLv80古華や旧貴族を装備すると793となる)
  • 固定値攻撃力増加 b=311
会心 攻撃力% 表示攻撃力
50.0% 86.1% 1800
60.0% 76.1% 1720
70.0% 73.3% 1697
80.0% 74.9% 1710
90.0% 79.5% 1747
100.0% 86.1% 1800

総じて、基礎攻撃力の1/10前後の%だけ攻撃力%に振ると効率が良いようだ。また会心率70%以降で徐々に攻撃力%が上昇するのは「バランスよく」という言葉を裏付けている。

逆にこの程度の基礎攻撃力であれば、表示攻撃力を2000以上にするのは振り過ぎでもっと会心に振るべきだと言える。

*1:2021/01/06 ここの式がかなり間違っていたのを修正。WolframAlphaへの入力は合っていたので結果には影響しない。