SEの随筆

技術系とは全然関係ないことも書きます。

糧食と指揮官レベルによる経験値ボーナス増加をわかりやすい図で表すよ!

最近アズールレーンというゲームをやっている。
その中でも気になったのは糧食というシステムだ。
簡単に説明すると、
 

  • 燃料というリソースを消費して糧食を購入できる
  • 購入した糧食使用することで、設定したキャラに経験値が入る
  • 経験値には快適度と指揮官レベルに応じてボーナスがかかる

 ということだそうな。

そこで私は気になってしまったのです…。
「これ、どのくらい燃料効率がいいの?快適度と指揮官レベルどっちを気にしたほうが効率いいの?」

ということで検証開始。
検証過程に興味がない人は下の方まで飛ばしてください。
まず糧食に関する効果と購入にかかる燃料を整理。

f:id:tokky-se:20180210150351p:plain
ちなみに今回は王家グルメとフルコースは考慮しない。(燃料で買えないから)

続いて対象となる艦の数と総経験値を確認。

f:id:tokky-se:20180210150601p:plain
どっちも自分で検証した結果ですが、同じ結果がwikiに乗ってました。

また、日本版wikiより、
>>基礎経験値(毎時)=指揮官レベル×12+240と見られている
引用:寮舎 - アズールレーン(アズレン)攻略 Wiki


更に、経験値ボーナスは
>>経験ボーナス(%):快適度÷(快適度+100)*100 (中国版Wikiより)
引用:寮舎 - アズールレーン(アズレン)攻略 Wiki
となるようだ。

つまり、指揮官レベルをX、快適度をYとすると、
(X*12+240)*(Y/(Y+100)*100)という式で表されることになる。
…なるほど?

しかしこのままでは平面のグラフに表せないのでイメージがわかない。
そうだ!Python使おう!(短絡的思考)

ということで簡単にコードを書いてみた。
この記事を見ている人が気にするかどうかはわからないですが、Pythonは3.6.2を使用しました。

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 100, 1)
y = np.arange(0, 500, 1)
X, Y = np.meshgrid(x, y)
Z = (X*12+240)*(1+ 0.01 * (Y/(Y+100)*100))*5*0.64/38.4
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_wireframe(X,Y,Z)
plt.show()


上記を実行すると、こんなグラフが出力される。

f:id:tokky-se:20180210152144p:plain


手前の部分が原点で、右奥が指揮官レベル、左奥が快適度で、高さが燃料効率(燃料1あたりに得られる経験値量)を示します。
これでもよくわかんねーよ!という人はPythonをインストールして上記のコードを実行してみてください。マウスでグリグリ3Dのオブジェクトとして自由に動かせるのでかなりイメージ湧きます。

ちなみにコード中に出てくる変数Zの式を詳しく解説しておくと、

(X*12+240)*(1+ 0.01 * (Y/(Y+100)*100))*5*0.64/38.4
→基礎経験値 * 経験値ボーナス * 5隻 * 0.64(5隻設定時の経験値倍率) / 38.4(1時間あたりに消費される燃料)
です。全部の艦の合計経験値を消費燃料で割ってますので、単位としてはexp/oilでしょうか。(間違っていたらゴメンナサイ…)

出撃はMVP補正や旗艦補正、艦数の減少時におけるMVP補正の影響が大きくなるなどの補正を考えるのが面倒なのでがあるので比較対象として10時間委託を考えてみましょう。
10時間委託は燃料1200を消費し、6隻*18000EXPが手に入る委託です。

つまり経験値効率としては 6*18000/1200=90exp/oilとなります。
一旦、3Dの図を置いておいて、ざっくり指揮官レベルを60で固定として計算してみます。
糧食の経験値ボーナスが0の時を考えると…
基礎経験値が60*12+240=960
1200燃料では糧食は120000買えます。
5隻で120000を消費し切るのは、120000/3840=31.25(h)
基礎経験値と隻数の経験値ボーナスを勘案すると、1隻あたりもらえる経験値は960*31.25*0.64=19200
全体の経験値は19200*5=96000
燃料効率を求めると、96000/1200=80
この時点でほとんど委託と10しか差がありません。
グラフを書いて快適度が上がるとどうなるか見てみましょう。

コードは以下のようになります。

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 500, 1)
y = (60*12+240)*(1+ 0.01 * (x/(x+100)*100))*5*0.64/38.4
plt.plot(x,y)
plt.show()

グラフは下記のとおりになります。
f:id:tokky-se:20180210154415p:plain

右軸は快適度で、縦軸はexp/oilです。
手計算した80からグラフが始まっているのでなんとなくあってそうです。
90なんて軽々と超えていますね。しかも海軍カレーというバフをまだ残しています。
フリーザ並みの余力の残し方です。
最も、1200燃料というのは5隻で消費したとしても31時間15分かかるので、
委託にもメリットはあります。(副産物も美味しいですし)

まとめ

糧食は長時間委託よりも経験値効率がいいのでガンガン使おう!


以上です。ありがとうございました。