エピソード4回記念企画「緑数字の計算式を導出してみたーーー!!」 / beatmania IIDX

結論

G=174.75×(1000-W)/(B×HS)=174.75×(1000-S-L)/(B×HS)

但し、
G: 緑数字
W: 白数字
B: BPM
HS: HI-SPEED
S: SUD+
L: LIFT


と言うことでまずは仮定をたてようか。

「はじき」だの「きはじ」だのやりませんでしたか?
あれですあれ。
距離=速さ×時間 (単位は今回は無視します)
樹の下の○ゲじいさんとかいう小学生ならではのあんまりな語呂合わせで覚えたのは内緒

距離はノーツが迫ってくるレーンの長さ

LIFTやSUD+の合計の白数字は最大値が999です。…が、最小値は0です。
したがってレーンの距離は0から999までの1000、
そこから白数字を引いた値が距離になります。
よって、
距離=1000-W=1000-(S+L)…①

時間は緑数字そのもの

これに関しては特にひねりはないです。
時間=G…②

速さはBPMとハイスピと"定数"の積

ソフラン曲を遊んでいると気付くと思うのですが、このゲームはBPMが上がるとノーツの落下速度が速く、下がると遅くなります。
また、ハイスピを2倍にすると落下速度も2倍に、1/2にすると落下速度も半減します。

では、速さ=B×HSなのか?というとそういうわけではありません。

試しに上記の仮定で距離、時間、速さの関係性を求めると、
G=(1000-W)/(B×HS)
となるわけですが、下の画像のG以外の数値を代入しても数値が合いません。
すなわち、何らかの定数が潜んでいるわけですね。

(1000-0)/(70×0.50)=28.57… (有効数字は今回無視)

ここではひとまず、
速さ=B×HS×定数…③
としておきましょう。

続いてお待ちかね、導出パーーート!

それでは早速、定数を推測していきましょう。
上記①~③を距離=速さ×時間 (時間=距離÷速さ) の関係に当てはめると、

G=(1000-W)/(B×HS×定数)…④
∴定数=(1000-W)/(B×HS×G)…⑤

となります。

条件設定は一番大事だよ。

今回は以下の楽曲のBPMから定数の予測を行いました。

・Glorious Days (40~82)
・DropZ-Line- (50~200)
・華麗なる大犬円舞曲 (60~142)
・PROMISE FOR LIFE (70)

選定理由としては、
「BPMの最低値が2×5×○となり、緑数字の表示がキリ良くなるのではないか?」
と思ったからです。
(ちなみに緑数字の表示の最大値は9999なので恋愛=精度×認識力などは扱っていません。)

また、HSは0.50 (FHSで0.50表記になってからさらに一回白鍵を押したため、おそらくぴったり"0.5"?、分母に代入されるため、緑数字が2倍になり誤差が減ると思われる)、SUD+とLIFTはなしという条件で計算を行っています。

・BPM40 (Glorisous Days) の場合、⑤より
定数=1000/(40×0.5×8737)=100/17474

・BPM50 (DropZ-Line-) の場合、⑤より
定数=1000/(50×0.5×6990)=100/17475

・BPM60 (華麗なる大犬円舞曲) の場合、⑤より
定数=1000/(60×0.5×5825)=100/17475

・BPM70 (PROMISE FOR LIFE) の場合、⑤より
定数=1000/(70×0.5×4993)=100/17475.5

…というわけで、ややふり幅があるものの、"100/17475" という値に落ち着きそうです。

Results…

この数字を④の式に代入すると、本記事の冒頭で紹介した
G=174.75×(1000-W)/(B×HS)=174.75×(1000-S-L)/(B×HS)
ということになるわけです。

そうそう、この式100%正確じゃないです!

ここまで色々やってきたわけですし、自分はこの式を用いてソフラン対策を行っているわけですが。

実際にFHSを設定してみると緑数字が1前後ずれることがあります。
また、いつもは正確に設定できているのに、たまに希望の緑数字にならないこともあります。

これはおそらく、白数字やBPMの関係で内部緑数字の小数点以下のキリが悪い状況がままあり、ゲーム画面には四捨五入されて表示されるためではないかと予想しています (毎回解説動画で予防線を張っているのはそのためです…)。下の動画で任意の地点での左辺を実際に電卓で計算してみると、右辺の値±1ぐらいになっています。

今回は以上です。
ご覧いただきありがとうございました。

よければエピソード1~3もどうぞ。


いいなと思ったら応援しよう!