思い付きおきば

ぼちぼちやってきます(多分)

プレイ前にハイスコアが知りたい!(プロセカ)

真皆伝を取ってから約半年、ALL PERFECT曲数も倍以上まで増えたものの、新規FCはなかなか増えずマンネリになっている今日この頃です。

さて、プロセカには1日1回挑戦できるチャレンジライブがあります。キャラクターを1人選んでそのキャラだけで編成を組んで曲をプレイすると、獲得スコアに応じてキャラクターランクやイベントpt、無償クリスタルをもらうことができます。特に、ハイスコア1,000,000に到達するとまあまあの量のクリスタルをもらえます。

今回はこのチャレンジライブについてです。どのキャラでやれば一番高いスコアが出るか、100万点を出せるのはどのキャラなのかは意外と見当がつきません。キャラごとに総当たりするにも1周1ヶ月かかるので非現実的です。

ところで、理論上は使う編成とやる曲・譜面が決まってれば事前にスコアは計算できるはずです。そこで、編成と譜面からスコアを計算できるシミュレータを自作して検証してみました。

f:id:seven_ev:20220220183029p:plain
Q: この編成でどこまでハイスコアを伸ばせるのでしょうか?

プロセカのスコアの仕様について

プロセカのスコア計算の仕様はプロジェクトセカイ攻略wiki - リズムゲームの仕様に詳しく書いてあります。

トータルスコア = 小数以下を含めた1ノーツあたりのスコアの合計と活躍ボーナススコアとの合計の整数部分 (小数点以下切り捨て)

1ノーツのスコア = 総合力 × 4 × 難易度定数 × ノーツ係数 × 判定係数 × コンボ係数 × スキル効果 × フィーバー係数÷ 換算ノーツ数

それぞれの定数・係数についての説明はWikiに譲ります。各係数は以下のように計算できます。

  • 活躍ボーナススコア: チャレンジライブでは発動しないので0
  • 総合力: パーティから決まる
  • 難易度定数: 譜面から決まる
  • ノーツ係数: ノーツの種類及びクリティカルかどうかから決まる
  • 判定係数: ALL PERFECT前提として1
  • コンボ係数: フルコン前提とすれば決まる
  • スキル効果: パーティと譜面のスキル発動タイミング、ノーツが来る時間から決まる
  • フィーバー係数: チャレンジライブなので1
  • 換算ノーツ数: 譜面に含まれるノーツから決まる

要素が多くてややこしいですが、まとめると以下の6つがあれば事前にスコアの計算ができることがわかります。

  1. 編成の総合力
  2. 編成のリーダースキルとメンバースキル
  3. 譜面のレベル
  4. 譜面のスキル発動タイミング
  5. 譜面中の各ノーツの種類
  6. 譜面中の各ノーツの流れてくるタイミング

シミュレータを作る

計算のロジックとそれに必要なものがわかったので、データを用意し計算を実装します。

データを用意する

先に挙げたスコア計算に必要なもののうち、一番用意が大変なのは譜面データ(譜面中の各ノーツの種類と流れてくるタイミング)です。スコアを知りたいだけなのでノーツの幅やスライドで文字を作っている部分などは無視できるのですが、それでも譜面サイトや譜面動画とにらめっこしながら1ノーツずつ開始からの正確な秒数とノートの種類を打ち込んで作っていくのはあまりに大変です。

そこで、BMSの譜面定義で使われているbmsonの仕様を参考にして「4分音符基準で何拍目か」を元にノートの位置と種類を書き込んでいき、最後に譜面のBPMを元に開始からの秒数に直す手法で譜面データの定義を行いました。例えば、BPM150の曲の開始から3小節目の2拍目( = 10拍目)にあるノートは開始から4.0秒後に流れてくるといった具合です。

打ち込んだ譜面データが合っているかどうかは、同じスキルのキャラを5人揃えて画面収録をしながら譜面を実際にプレイし、録画を元に道中のコンボ数があっているかを作ったデータと照らし合わせて確認しました。(自力FCが厳しいものはYoutubeで動画を漁って調べました)

計算させる

譜面データができてしまえば後は比較的簡単です。以下の手順で計算させるようプログラムを組みます。

  1. スキルの発動順を決める
  2. 譜面中のノートを流れてくる順に並べる
  3. ノートのスコアを計算する
  4. 合計スコアに計算したノートのスコアを足す、コンボを1増やす
  5. ノートがなくなるまで3に戻る
  6. ALL PERFECT! 合計スコアが分かる

結果が合っているかどうかは先ほど録画したプレイ動画と比べて確かめました。

検証してみる

データを用意したのは効率曲(短い、ないしスコアが出やすい)とされがちな以下の5譜面です。

  • 独りんぼエンヴィー(MASTER)
  • ジャックポットサッドガール(MASTER)
  • ビバハピ (MASTER)
  • サンドリヨン 10th Anniversary(MASTER)
  • ヒバナ - Reloaded - (MASTER)

効率が一番良いのは?

以下では基本的に総合力を200000とします。自分の編成の場合を知りたい場合は表中のスコアに総合力の比率を掛けてください。(例: 総合力220000 -> 1.1倍)

全部☆4の場合

総合力200000、全員が☆4のスコアスキル(5秒間+100%)持ちとしたときのスコアは以下のようになりました。

スコア 対トップ比
独りんぼエンヴィー 1275066 98.87%
ジャックポットサッドガール 1274224 99.16%
ビバハピ 1285077 100.0%
サンドリヨン 10th Anniversary 1280973 99.68%
ヒバナ - Reloaded - 1257057 97.82%

全員が同じスキル持ちなら、ビバハピが一番効率がいいようです。

編成に☆3や☆2が入っている場合

そもそもですが、同キャラで5枚スコア持ち☆4は実装されていない場合があり、仮にされていたとしても揃えるのはかなり厳しいです。そこで、☆3や☆2を編成に混ぜた場合を検証します。

総合力は先ほどと同じ200000とし、メンバーのスキル構成を以下のようにしました。

  1. 5秒間+100% (☆4スコアSlv1、リーダー)
  2. 5秒間+80% (☆4回復/判定Slv1 or ☆3スコアSlv5)
  3. 5秒間+60%(☆3スコアSlv1)
  4. 5秒間+50%(☆2スコアSlv5)
  5. 5秒間+40%(☆3回復/判定Slv1)

各曲について計算したところ、結果は以下のようになりました。

期待値 上振れ (スキル発動順) 下振れ (スキル発動順)
独りんぼエンヴィー 1171903 1176722(③⑤④①②) 1155666(③①②⑤④)
ジャックポットサッドガール 1181548 1184669(③⑤④②①) 1166934(③①②④⑤)
ビバハピ 1182268 1185373(⑤②④③①) 1179315(①④②③⑤)
サンドリヨン 10th Anniversary 1182571 1193547(④③⑤②①) 1171583(②③①④⑤)
ヒバナ - Reloaded - 1174760 1182565(②⑤③④①) 1166547(④①③②⑤)

サンドリヨンで上振れを引くのが一番スコアが出るようです。

上振れと下振れの発動順を見ると①⇄⑤、②⇄④が入れ替わっていることから、高いスコア上昇スキルの恩恵を受けやすいスキル発動箇所とそうでない箇所があることも読み取れます。

100万点取って石回収したい!総合力いくついる?

5枚編成の場合(キャラランク22~)

スキル構成を以下とします。先ほどの☆3と☆2入りのものと一緒です。

  1. 5秒間+100% (☆4スコアSlv1、リーダー)
  2. 5秒間+80% (☆4回復/判定Slv1 or ☆3スコアSlv5)
  3. 5秒間+60%(☆3スコアSlv1)
  4. 5秒間+50%(☆2スコアSlv5)
  5. 5秒間+40%(☆3回復/判定Slv1)

この時、100万点到達に必要な総合力は

  • サンドリヨンの上振れ: 167568
  • エンヴィーの下振れ: 173060

となります。☆4を持っていてエリアアイテムなどのLv上げをしていれば、100万点到達はかなり余裕と思われます。余談ですが、スキルが全員5秒間+30%(☆2スコアSlv1相当)の場合でも総合力が196902あれば独りんぼエンヴィーALL PERFECTでギリギリ100万を超えます。

まとめると、☆4を持っているなら総合力17万程度から、持っていなくても19万ほどあれば100万点に到達することがわかります。

4枚編成の場合(キャラランク18~)

4枚編成の場合、曲中の6回のスキル発動のうちの5回目が発動しません。そのため、5枚編成の時とはスコア効率のいい曲が変わる可能性があります。

スキル構成を以下とします。

  1. 5秒間+100% (☆4スコアSlv1、リーダー)
  2. 5秒間+80% (☆4回復/判定Slv1 or ☆3スコアSlv5)
  3. 5秒間+60%(☆3スコアSlv1)
  4. 5秒間+40%(☆3回復/判定Slv1)

それぞれについて必要な総合力を計算したところ、結果は以下のようになりました。

最低ライン(上振れ100万) 確実ライン(下振れ100万)
独りんぼエンヴィー 174424 175778
ジャックポットサッドガール 173276 174027
ビバハピ 173857 174362
サンドリヨン 10th Anniversary 173403 175978
ヒバナ - Reloaded - 174271 175808

一番100万点に乗せやすいのはジャックポッドサッドガールと、5人編成の場合とは違った結果となりました。

それ以前に、「4人で総合力175000は可能か?」という問題があります。例に挙げた2人☆4と2人☆3の場合ではカードストーリー後半を全部読んでいてエリアアイテムレベルを相当上げてないと到達は難しそうです。参考ですが、4人☆4(スキル内訳: 5秒+110% / +100% / +100% / +80%)でも165000程度は必要です。

まとめると、4人でも100万点到達は不可能ではないが、最低2枚は☆4が要りそう。よほど沢山☆4を持っているキャラ以外は素直にキャラランク22まで上げないと厳しい、ということがわかりました。

実際に使ってみた

冒頭の編成でスコアを計算させたところ、こんな結果が得られました。

  • エンヴィー以外ならいくら下振れしてもALL PERFECTなら点数が伸びる
  • 平均が一番出るのはビバハピで1482000±2000点、上振れはサンドリヨンで1489715点

ビバハピをやってみたところ、実際に1万点ちょっとハイスコアが伸びました。

f:id:seven_ev:20220220183217p:plain
そもそもALL PERFECTがきつい

終わりに

「いちいちプレイしなくてもスコア分かるはずなのになー」と思ってシミュレータを作ってみましたが、正直想像より大変でした。特に、譜面をデータに起こすにあたって、ゲーム中のスライドのコンボの増え方を理解するのに少し時間がかかりました。また、ある程度手抜きはできても結局自分で譜面を打ち込まなければいけないところは骨が折れました。あわよくばMASTERの全164譜面(2022/02/20) + EXPERTのいくつかを作りたいところですが、1譜面用意するのに現状3時間弱かかるので諦めました。動画から譜面データを起こせるようになればいいのですが、まだまだ技術力不足で見通しが立っていません。

意外な発見もありました。5秒間持続するスキル発動からちょうど5秒後にあるノートは、早めに押せばスキル効果が乗るものの、遅めに押すとPERFECTでもスキル効果が乗らずスコアをこぼす、ということが理論上はあり得ます。これは理論上だけで、そうなるケースはそう多くないだろうと思っていたのですが、実際にありました。(エンヴィーMASTER、歌い出しの「いたらは 知らん顔で」の同時押し)

そして、このシミュレータを作るのに熱中してしまい、チャレンジライブの消化を1回忘れました。本末転倒でしたね。