
こんにちはじょじと申します。
総力戦、楽しんでいらっしゃいますでしょうか。
じょじも目標の920万を超えることができ大変満足です。
今回は総力戦のスコア詳細について見ていきます。
スコアの項目について
下記12個の項目の合計となります。
①バトル勝利
②TIMEボーナス
③HPボーナス
④MAXラッシュ
⑤MAXダメージ
⑦オーバーキル
⑧挑戦回数
⑨最大ユニゾン参加数
⑩ランブル勝利数
⑪BREAK回数
⑫行動回数
各項目の計算式
ここから、各項目のスコアについて見ていきます。
※PhaseI、Round1にて計算したスコアです。PhaseやRoundの違いによって差が出てくるかもしれないことに留意してください。
①バトル勝利
1,000,000
②TIMEボーナス
1,000,000/TIME
※00:20以下は50000で固定
min(1,000,000/TIME,50000)としたほうが良いかもしれません。
③HPボーナス
HP/5(小数点切り上げ)
④MAXラッシュ
ラッシュ数×500
最大50000(100ラッシュ)
こちらもmin(Rush*500,50000)としたほうが良いかも。
⑤MAXダメージ
わかりません
⑥ロケットスタート
PERFECT:10000
GOOD:6000
OK:2000
⑦オーバーキル
わかりません(MAXダメージと同じ計算式÷2っぽい)
⑧挑戦回数
500,000(1回)
回数で変わるっぽいですが、1凸以外考慮することも少ないのでまあいいかなと…
⑨最大ユニゾン参加数
ユニゾン参加者数×25000
⑩ランブル勝利数
勝利回数×5000
最大50000
こちらもmin(回数*5000,50000)としたほうが良いかも。
⑪BREAK回数
BREAK回数*500000
2回バリアを張られるのがCHALLENGEのRound3のみ。
⑫行動回数
1,000,000/行動回数
MAXダメージの計算式について
MAXダメージについては色々と試行錯誤して模索していたものの解明することができませんでした。
後を継いでくれる人のためにどのようにアプローチしたかだけメモしておきます。
まず前回のスターチャレンジの際のTOTALダメージの計算式がダメージxに対し
ax^0.1 + 3000
であったため、今回も
f(x) = ax^b+c
の形で表せないかでまず考えました。
色々とツールを使って考えた結果b=0.08のあたりの動きに近そうと思い、その場合のa,cの値を考えたときにcが負の数となりそうなことが分かりました。
この場合xが0に近い場合にポイントがマイナスとなってしまうため、a=cとなるのではないかと考察しました。(この場合、x=1で0となり、x=0の場合のみ0とすればいい感じになりそうと思ったため)
が、よくわかりませんでした!!!!!
ここでTwitterにてスコアが3倍されるごとに50000ポイントくらい増えているとの助言をいただきます。
つまり対数関数を用いている可能性の示唆です。
例えばスコアが3倍で50000ポイント増える計算式を作るなら
50000log3(x)+c
みたいな形で表せます。
しかし対数関数は単純に
g(x) = alogb(x)+c
としても3つの変数を動かさなければなりませんし、指数関数と違ってx=1の時のふるまいを仮定して考えるのも難しいです。(この辺の理由は割愛)
と、いうことでここで諦めました。
でもよく考えればa,b,cに関する3変数関数なのでf(x),g(x)に3点実際の値を与えれば解けるんじゃね?
でも今日は疲れたのでまた考えます。
おまけですが、指数関数でb=0.08で考えたときは大体これが正解に近い形でした。
f(x) = 116900x^0.08 - 155200
誤差5000いないくらいには収まっていますが、微妙に実用的じゃないです。
あとは賢い人に任せました。
P.S ダメージに対するスコアのデータを持っている方、提供してくれると大変助かります。