人間になりたい類人猿

人間以前の技術屋ブログ

デレステのアタポンイベント計算機を作った

TL;DR

デレステもなんやかんやリリース日から始め、約2年半の月日が経って正直イベントも担当かよほど絵が刺さらないと上位報酬まで走らない程度にモチベは下がっている。
どのmasterでも死ななくなって周回が作業化し、段々と面倒くさくなってきている。
だからこそ、「あと何回プレイすれば目標ポイントに到達するのか」があるといいなぁと。
という訳で作ってみた。
https://y-osaru.github.io/atapon/atapon_calc.html

※ペライチのhtmlというロックな作り。
※一応、アタポン計算機はいくつかあるけれど、何か自分で作った方が入力内容とか決められるし良いなって。
他の人も作りたくなった用に自分が使った計算式を共有する。
(間違ってたら教えて下さい。でも強い言葉で言われると泣きます。)

0.まず前提

この計算機で最低限求める物は

  • 通常楽曲のプレイ回数
  • イベント楽曲のプレイ回数
  • 総ポイント数
  • 総アイテム数

とする。
また、スタミナ19/スコアS前提にして、PLvは気にしない。

1.計算式

先ずはダダダッと変数定義
目標ポイント数:P_{goal}
通常楽曲1回のポイント数:P_{normal}
通常楽曲1回のアイテム数:I_{normal}
イベント楽曲1回のポイント数:P_{event}
イベント楽曲1回の消費アイテム数:I_{event}
現在のポイント数:P_{now}
現在のアイテム数:I_{now}
1回のログインボーナス:L
残り日数:D
通常楽曲プレイ回数:C_{normal}
イベント楽曲プレイ回数:C_{event}
総ポイント数:P_{total}
総アイテム数:I_{total}
余りアイテム数:I_{rest}

次にP_{goal}を求める式をうにうに考えると以下の様になる。
 P_{goal} = P_{normal} \times C_{normal} + P_{event} \times C_{event} + P_{now}

C_{normal}C_{event}の関係は以下の通りなので
C_{event} = \frac{I_{normal} \times C_{normal} + L \times D + I_{now}}{I_{event}}

これをP_{goal}の式に当てはめると
P_{goal} = P_{normal} \times C_{normal} + P_{event} \times (\frac{I_{normal} \times C_{normal} + L \times D + I_{now}}{I_{event}}) + P_{now}

これをC_{normal}について解くと、以下のようになる。結構美しい感じの式。

C_{normal} = \frac{I_{event} \times (P_{goal} - P_{now}) - P_{event} \times (L \times D + I_{now})}{P_{normal} \times I_{event} + P_{event} \times C_{normal}}

これが求まれば、先程のC_{event}の式に当てはめれば良い。

P_{total}I_{rest}
P_{total} = P_{normal} \times C_{normal} + P_{event} \times C_{event} + P_{now}
I_{total} = I_{normal} \times C_{normal} + L \times D + I_{now}
I_{rest} = I_{total} - I_{event} \times C_{event}

になる。これで計算式は出来た。

2.実は……

さっきの計算式で完璧。実装すればOK……ではない。
実際はC_{normal}C_{event}は少数になるので、整数にすると\lfloor C_{normal} \rfloor\lfloor C_{event}\rfloorになる。
この値で計算すると、当然P_{goal}P_{total}が超えられない事がある。

その為、計算機では以下の様な形で調整を行う事にした。

もしP_{goal} > P_{total}ならば、P_{goal} \leq P_{total}になるまで以下を繰り返す
I_{rest} < 150
→ 通常楽曲1回プレイ
150 \leq I_{rest} < 300
→ イベント楽曲等倍1回プレイ
300 \leq I_{rest} < 600
→ イベント楽曲2倍1回プレイ
600 \leq I_{rest}
→ イベント楽曲4倍1回プレイ

3.プログラムに……

コードはここに。
github.com


以上。