ボムラッシュ大好きなイカのためのスペシャル増加量アップとスペシャル減少量ダウンの効率的な積み方
(追記)計算してくれるツールを作りました。
理屈はどうでもいいよって人はこちらをどうぞ。
atolog.hatenablog.com
はじめに
スペシャル増加量アップとスペシャル減少量ダウンのギアをガン積みする前提で、どの割合で積むのが一番効率がいいかを調べてみました。
ボムラッシュ限定ではなく、スペシャルが重要な武器でも役立つかもしれません。
誰が相手でも絶対に死なない自信のある強者はスペシャル減少量ダウンは要らないのでスペシャル増加量アップを積んでください。
誰が相手でも確実にインクの海に沈む自信のあるイカは頑張って生きてください。
スペシャル増加量アップ
スペシャルゲージの増加量がアップします。
計算式
x = [メイン] * 10 + [サブ] * 3
として
X = ((0.99 * x) - (0.09 * x)^2) / 100 [必要ポイント] = [デフォルト必要ポイント] / (1 + X)
スペシャル減少量ダウン
プレイヤーがやられた時の スペシャルゲージの減少量が 少なくなります。
計算式は
x = [メイン] * 10 + [サブ] * 3 [減少率] = 0.5 - ((0.99 * x) - (0.09 * x)^2) / 60
と推測される。
メイン3サブ9の場合この減少率はマイナスになるが、0として計算される。
ゲージMAX時に死亡した際に再チャージに必要な塗りポイントは
[デフォルト必要ポイント] * [減少率]
調べ方
上記を元に、ある程度スペシャルが溜まった状態で死亡した後、次にスペシャルが使用可能になるまでに必要な塗りポイントが少ないギア構成を探します。
この時、必要な塗りポイントは
P = スぺ増を加味したスペシャル発動までに必要なポイント
D = スぺ減を加味したスペシャル減少率
N = 死亡直前に溜まっていたスペシャルゲージの割合
X = 死亡後、スペシャルが使用可能になるまでに必要なポイント
とおくと、
で計算できるので、前述の式と合わせてNを0から1まで0.01刻みで変化させたときに必要な塗りポイントの平均が最も小さいものを、効率のいいギア構成であるとして求めることにします。
プログラム
rubyで適当にイカのようなプログラムを書きます。
# デフォルトのスペシャルゲージ最大値 DEF_MAX_SP_GAUGE = 180 #ボムラッシュ # スペシャルゲージ最大値を計算 def calc_sp_gauge(dsg, scu) dsg / (1 + ((0.99 * scu) - (0.09 * scu) ** 2) / 100) end # スペシャルゲージ減少量を計算 def calc_save_rate(sps) [0, 0.5 - ((0.99 * sps) - (0.09 * sps) ** 2) / 60].max end # 死亡した後スペシャル再使用までに必要なポイントを計算 def calc_point(dsg, scu, sps, n) csg = calc_sp_gauge dsg, scu csr = calc_save_rate sps csg - csg * n * (1 - csr) end # 死亡した後スペシャル再使用までに必要なポイントの平均を計算 def calc_average_point(dsg, scu, sps) arr = [] (0..100).each do |i| arr << calc_point(dsg, scu, sps, i*0.01) end ave = arr.inject(:+) / arr.size dev = Math.sqrt arr.map{|a|(a-ave)**2}.inject(:+)/arr.size [ave, dev] end # 指定した数のギアをスぺ増、スぺ減に使用した際に一番効率がいい組み合わせを返す(57表記) def get_best_combination(gear_num) resscu = 0 ressps = 0 resave = 999 resdev = 999 (0..gear_num).each do |scu| sps = gear_num - scu spave, spdev = calc_average_point DEF_MAX_SP_GAUGE, scu, sps if spave < resave resscu = scu ressps = sps resave = spave resdev = spdev end #puts "#{scu},#{sps},#{spave},#{spdev}" end [resscu, ressps, resave, resdev] end x = get_best_combination ARGV[0].to_i puts "スぺ増:#{x[0]}, スぺ減:#{x[1]}, 平均必要ポイント:#{x[2]}, 標準偏差:#{x[3]}"
結果
スぺ増:19, スぺ減:38, 平均必要ポイント:82.93899430387997, 標準偏差:42.20804533423444
スペ増、スぺ減のみで固める前提ですが、最も効率がいいギア構成が計算できました。
ちなみに構成を変えて計算した結果を全てグラフに出力するとこんな感じになります。*1
スぺ増を増やすと必要ポイントの平均値は増えますが、バラつきは少なくなるようです。
もう少し実用的な構成の場合
流石に全てのギアをスペシャル関連に割り振るのは実用性的な意味でもウニ的な意味でも厳しいので、他にも使うギアの数を変えて何パターンか計算した結果を載せておきます。
参考にしてください。*2
ギアの数 | 構成 |
9 | スぺ増:0, スぺ減:9, 平均必要ポイント:122.6 |
19 | スぺ増:2, スぺ減:17, 平均必要ポイント:111.1 |
29 | スぺ増:6, スぺ減:23, 平均必要ポイント:101.5 |
38 | スぺ増:9, スぺ減:29, 平均必要ポイント:94.4 |
最後に
以上、計算とか考察とかはかなり適当なので「ここおかしいよ!」というところがあったら教えてください。