記事一覧仕様解説2026年10月11日
2026-10-11 ALM4GEST
ポップンクラスの算出方法
ここでは、KONAMIの非公式スコア管理ツール「ALM4GEST」におけるpop’n music High Cheers!! のポップンクラスの計算方法を説明します。
この計算式は公式が提供しているものではなく、アプリにデータ登録いただいた方のデータを活用させていただき推定したものになります。
当初の計算式はXで拝見した計算式を流用していましたが、一部不整合があったため、実験を繰り返して精度の高いロジックを特定したものです。
元の計算式がなければとても辿り着けないロジックではありますので、有志の方に感謝を申し上げるとともに、もしも今後ポップンクラスを管理するツール等を作られる方は、是非活用いただければと思います(当然ですが、この記事の内容は無断で転記・流用いただいて問題ありません)。
01
従来の計算式と改善後の計算式
- 1各楽曲基礎値 (x)従来通りLv ×(3750 × Lv + {加点} + スコア − 50000)。スコアが50000未満の譜面は0
- 2{加点}の内訳これまで(ver. 1.2.20261012より前)EASY 6,200ASSIST 9,300CLEAR 12,400FULLCOMBO 17,400PERFECT 21,400新しい式EASY 6,250ASSIST 10,000CLEAR 12,500FULLCOMBO 17,500PERFECT 21,250すべて1250の倍数
- 3基礎点からポップンクラスへ変換(b)これまで(ver. 1.2.20261012より前)x ÷ 3,880,000満点の譜面 3.3363(60枠で200.18)新しい式b = 200 × x ÷ 12,937,500満点の譜面 200(理論値に正規化)
- 4ポップンクラスの端数処理これまで(ver. 1.2.20261012より前)なし新しい式b を小数第2位までで切り捨て
- 5合計ポップンクラスの計算これまで(ver. 1.2.20261012より前)60枠の値の合計新しい式60枠の b の平均
- 6合計の端数処理これまで(ver. 1.2.20261012より前)小数第3位までで切り捨て、小数第2位へ四捨五入新しい式小数第2位までで切り捨て
- 7公式値との整合率公式の値が分かっている156人これまで(ver. 1.2.20261012より前)38.5%(60人/156人)新しい式78.2%(122人/156人)
- ポップンクラスの理論値(Lv50・100000・PERFECTを60曲)を200と仮定しています。
- 各楽曲で200を最大としたポップンクラスを算出し、最後に合計を60曲で割る方法が最も整合しました。
- 数式で表すと以下の通りです。
- ただし
- 小数第2位までで切り捨て
- 新曲の上位20譜面と旧曲の上位40譜面の b の合計
以上が、計算式の概要です。
以降、具体例と補足情報を2章で記載し、3章以降でこの数式に至った検証過程を示します。
02
新しい式の具体例と補足情報
1譜面の値の具体例
1章で説明した数式で各曲のポップンクラス(b)を計算すると以下のようになります。
Lv50・100000・PERFECT1譜面の値 約3.3333
Lv45・95000・FULLCOMBO1譜面の値 約2.6810
Lv40・90000・CLEAR1譜面の値 約2.0868
Lv40・50000・CLEAR1譜面の値 約1.6747
Lv40・50000・FAILED1譜面の値 約1.5458
Lv40・49999・どの評価でも1譜面の値 0
- 例えば、同じスコアやメダルではLv40とLv41とで、bは約5.5上がります(スコア90000・CLEARで125.21 → 130.72)。これは、Lv40でスコアを約8900点上げるのとほぼ同じです。
- Lv40でCLEARからFULLCOMBOになると、加点の差5000がレベル倍され、bは約3.1上がります(125.21 → 128.30)。
ポップンクラスの算出の補足情報(以下の考え方は十分な検証が出来ていないため、誤りがあれば修正します)
-
レベルの判定には、最後に遊んだ日のレベルを使います。
-
公式の値は遊んだ時点のレベルで計算され、次に遊ぶまで計算し直されないと考えています
-
難易度が改訂された譜面は、最後に遊んだ日が改訂日より前なら改訂前のレベルを使います。
-
今作の記録にはクリア回数・FULL COMBO回数・PERFECT回数があり、メダルがありません。
-
そのため、EASYやASSISTは歴代メダル等から次の順で判定し、最初に当てはまった評価を採用しています。
-
ここが一番誤差を生む可能性がある部分ですが、現状解決しようがないので本アプリでは以下を採用しています。
- 1PERFECT回数が1以上はいPERFECTいいえ
- 2FULL COMBO回数が1以上はいFULLCOMBOいいえ
- 3クリア回数が1以上はい歴代メダルがEASY・ASSIST・CLEARならその評価、それ以外はCLEARいいえ
- 4回数がすべて0で、歴代メダルがEASY、かつ前バージョンでも遊んでいるはいFAILEDいいえ
- 5回数がすべて0で、歴代メダルがEASYまたはASSISTはい歴代メダルと同じ評価いいえ
- 6上のどれにも当てはまらないFAILED
公式の「クリア回数」はイージーとアシストのクリアを数えず、回数が0でも今作でイージーやアシストを取っている場合があるので、歴代メダルを引き継いでいます(これが全員を合わせられないロジックで、合う人数が多い方にしています)。
03
従来のバージョン(1.2.20261012より前)で発生していたズレ
156人について、公式の値と第1章で紹介した計算式で算出した値との差分は以下の通りです。
言い訳ですが、この式の精度が高く、私のポップンクラスは一致してしまっていたので気付かずにリリースしてしまいました。
また、微妙な誤差であったため、端数処理だと思いこんでしまい、意味のない調整を繰り返していました。
これまで
公式 − 計算
これまで一致 60人▲ 25人▼ 1人
縦:公式 − 計算(0.01単位)横:公式のポップンクラス
- 0.01〜0.02 のずれが62人(39.7%)いて、高い側と低い側の両方に散らばっています。
- 記録の取りこぼしならアプリの値は低い側にしか外れないので、定数がズレていると考えられます
- もっとも、初期は端数処理だと思い込んでおり、ムダな調整を繰り返していました
- また、既存と全く異なるロジックを検討するのではなく、まずは既存の数式の定数をいじるところから始めることにしました
- これで合わないとそもそも数式が異なるか、全く違う部分でズレが出ているか、ということになります。
- なお、誤差で説明できない0.03以上のずれは34人(21.8%)で、ほとんどが公式のほうが高い状態です。
- こちらは第2章で記載した誤差と、楽曲の取得漏れが考えられます。
- 後者の穴は塞いでいきますが、前者は構造的な欠陥になっています。
04
最小二乗法で近似を行い、真の係数を特定する
式を1次式に直す
特定したい定数は、加点5種、レベル係数α(これまでの3750)、除数D(これまでの3,880,000)の7つです。
プレーヤー1人のポップンクラスは。以下の式(1)で表現できます
- ただし
- 60譜面の合計
- 各譜面のスコア
- クリア評価kの加点
- クリア評価がkの譜面のLvの合計
未知数をθの7つに置き直すと、一人のポップンクラスはθの1次式になります。
- ただし
- プレーヤー i の記録から定まる係数(ΣLv(s−50000), ΣLv², L_EASY, …, L_PERFECT)
差の2乗の合計を最小にする
公式の値は小数第2位までで切り捨てて表示されるので、真値を公式の値に0.005を足したyᵢを目標にします。
プレーヤーの数は未知数の7個より多いので、全員の式を同時に満たすθはなく、差の2乗の合計が最小になるθを探します。
下に凸の二次式なので、これをθで微分して0になる7行7列の連立方程式(正規方程式)の解θを求めます。
- 60譜面は定数によって入れ替わるので、求めた定数で枠を選び直して解き直します。
- なお、計算対象には、ズレが±0.05以内の130人を使っています(ノイズを減らすため)。
結果
これまで最小二乗法
加点 EASY6,250 の近く
加点 CLEAR12,500 の近く
加点 FULLCOMBO17,500 の近く
加点 PERFECT21,250 の近く
レベル係数 α3,750 の近く
- これを眺めていると「加点とレベル係数は1250の倍数になっている」という仮説が出てきます(なんで1250の倍数なのかは分かりませんが、共通点がありそうです)
- なお、ASSISTは元から10000であり、1250の倍数だったので一旦据え置きにします
- また、以下の通り最小二乗法で求めた定数で満点の譜面(Lv50・100000・PERFECT)で60枠を埋めると、ポップンクラスはほぼ理論値の200になることも、この定数の妥当性を説明しています
- こちらも、ポップンクラスの理論値は200になるのでは?という仮説を持ち、以降この2つの仮説を検証します
これまで最小二乗法
満点の譜面
満点の譜面の値 × 60| 縦の線=理論値 200
2つの仮説を検証する
| FAILED | EASY | ASSIST | CLEAR | FULLCOMBO | PERFECT | レベル係数 α | 除数 D | |
|---|---|---|---|---|---|---|---|---|
| 定数 | 0 | 6,250 | 10,000 | 12,500 | 17,500 | 21,250 | 3,750 | 3,881,250 |
- 仮説1に従って定数を上記の通り設定し、そこから5刻みで±500、αは0.1刻みで±10、Dは100刻みで±7,500動かし、ポップンクラスが一致する人数を以下の通りプロットしました。
- どれも、今回設定した1,250の倍数の値でポップンクラスが説明できていそうなことが分かります。
加点 EASY6,250:122人
5,7506,750
加点 CLEAR12,500:122人
12,00013,000
加点 FULLCOMBO17,500:122人
17,00018,000
加点 PERFECT21,250:122人
20,75021,750
レベル係数 α3,750:122人
3,7403,760
除数 D3,881,250:122人
3,873,7503,888,750
縦:一致した人数横:動かした定数の値
- なお、Dに関しては、この値を使って満点の譜面を計算すると確かにポップンクラスの理論値が200点になります。
- 満点の譜面Lv50・スコア100,000PERFECT
- xを計算
- 基礎値 x12,937,50050 ×(3750 × 50 + 21250 + 50000)
- ÷ 3,881,250 × 60
- ポップンクラスの理論値200
05
最後に、改めてズレの改善を確認する(まとめ)
これまで
最小二乗法
新しい式
公式 − 計算
これまで一致 60人▲ 25人▼ 1人
最小二乗法一致 115人▲ 26人
新しい式一致 122人▲ 26人
縦:公式 − 計算(0.01単位)横:公式のポップンクラス
- 0.01〜0.02 のずれは62人から4人に減りました
- 大きなズレがあるプレイヤーは、2章で説明した通りやはり残ってしまいます
なお、公式のほうが高い33人について、その人の一番高い譜面と同じ値の譜面が枠に足りないと仮定し、差を埋めるのに何譜面要るかを数えると以下のようになります
人数
足りない譜面の数
つまり、28人は1譜面の取りこぼしで説明できる幅に収まります。
結果として冒頭に示した修正を行うことが妥当だと判断するに至りました。