ビートセイバーの内部をのぞいていると、ボツ仕様なのか将来実装予定なのかはわかりませんが、現在のビートセイバーでは使われていない、謎のコードを見つけることがあります。そういったものの中で、今回は「フィーバーモード」をご紹介します。
ビートセイバーのスコアを処理するコンポーネントの中で下記のような記述が見つかります。
When this amount of cuts is made without any mistake, fever mode will start.
int _feverModeRequiredCombo = 100000;
説明を日本語に訳すと「ミスなしにこの数をカットしたら、フィーバーモードがスタート」となります。数値は適当な100000に設定されていますし、実際のところ、フィーバーモードに入るためのコードが書かれていないので、仮に100000コンボに達しても、フィーバーモードが発動することはありません。
それではフィーバーモードとは一体何なのでしょうか?
コードを追って調べてみると、以下のようなことがわかります。
- ミスなく一定数のノーツカットを行うとフィーバーモードに入る
- フィーバーモード中は、スコア倍率が2倍になる
- そこから一定時間経過でフィーバーモードは終了する
ビートセイバーでは、コンボが増えるたびにスコア倍率が最大8倍まで増えるようになっていますが (プレイ中、画面右に出てくる〇で囲まれた x8 といった表示が現在の倍率です) 、フィーバーモード中はこれがさらに倍になる、という仕様のようです。
ずっとコンボを続けていると、
- 一定カット数でフィーバーモードに入る
- 時間経過でフィーバーモード終了
- また一定カット数でフィーバーモードに入る
という流れを繰り返す形になると思います。
このフィーバーモードのコードは、かなり昔のビートセイバーから存在するものの、未だに採用される兆しはないため、おそらくボツ仕様なのだと思います。
実際のところ、このフィーバーモードが存在すると、スコアの精度計算が複雑になってしまいます。ビートセイバーでは、現在のスコア ÷ 最大スコア理論値で、精度のパーセントが出るようになっていますが、ここにフィーバーモードが入ってくると、最大スコアの算出は面倒なことなります。
曲中に何回フィーバーモードに入ることができるのか、フィーバーモードに入っている間に流れるノーツはいくつなのか。これもただ出現するノーツの数だけではなく、フィーバーモード中にセイバーで切れる範囲のノーツ数を数えないと正確な理論値は出せません。
下手すると、途中でわざと1ミスして、ノーツ密度の高いところでフィーバーモードに入るようにしたほうがフルコンボよりもスコアが高くなる、なんてこともあり得ます。この理論最大スコアを計算するのは、あまり考えたくない処理です。
前述の通り、コードの断片は存在するものの、実際にフィーバーモードを動作させるには不十分なため、現在のビートセイバーそのままでフィーバーモードが発動することはありません。
ここにすこし手を加えて、フィーバーモードを動くようにしてみました。画面下の体力バーの上に設置したのがフィーバーモードゲージ。フィーバーモード中は色が変わるようにしています。とりあえずお試しで、フィーバーモードに入るために必要なコンボ数を10に、フィーバー時間は10秒にしました。
…もっと豪華な演出が入らないと、あまりおもしろくはないですね。地味にフィーバー中は入るスコアが倍になっています。
試してみたい方のために、このmodを置いておきます。要 BSML & BS_Utils。ソロモードのみで動作。スコア記録、送信は無効化しています。
(2021/12/28現在、BS_Utilsの不具合?で、スコア送信無効時に曲が終わらず終了できなくなる場合があるようです。これを回避するために自前のスコア送信無効化処理を入れてもいいのですが…、無駄にコードが増えますし、一発ネタのmodなのでそのままにしておきます。BS_Utilsもたぶんすぐに直るでしょう)
FeverMode-0.0.1-bs1.19.0-local