IDOLY PRIDE ゲームシステム解析
前書き
この記事は初心者向けのゲームシステム紹介ではなく、ある程度ゲームになじんでいる人向けの考察文です。
文章の中のデータの出所はほとんど逆コンパイルによるゲームマスターデータの復号化と通信トラフィック解析から得たもの。一部の計算式は逆コンパイルから得たものだがスコア計算に関する計算式は統計学分析から得た結論なので必ず正確ではない。
なお、データや計算式などゲーム考察に関する異論とディスカッションは大歓迎だが、マスターデータとトラフィック解析に関する質問とリクエストは悪用防止のため一切返答しかねます。
Please be aware that any questions or requests relate to decryption of master database and traffic will be ignored unconditionally.
1. キャラクター能力値
このチャプターはキャラクターの能力値、Da Vo Vi St に関する情報を紹介する。
1.1 マスター値
マスター値は、ユーザーの進行状態など外部の要因の影響を受けない全員一致のシステム上の設定値である。後ほどのユーザー値やデッキ値などは全部この値から派生されたものなので、自分はベース値とも呼んでいる。
この値の計算式は以下のとおり
例として、以下はデータの一部抜粋:
id | level | value | staminaValue |
---|---|---|---|
card-param-01 | 1 | 250 | 1000 |
card-param-01 | 10 | 1333 | 1022 |
card-param-01 | 100 | 31097 | 1649 |
id | level | value | staminaValue |
---|---|---|---|
card-param-02 | 1 | 238 | 950 |
card-param-02 | 10 | 1266 | 971 |
card-param-02 | 100 | 29542 | 1567 |
id | level | value | staminaValue |
---|---|---|---|
card-param-03 | 1 | 213 | 850 |
card-param-03 | 10 | 1133 | 869 |
card-param-03 | 100 | 26432 | 1402 |
上記のテーブルの中、value
或いは staminaValue
は上記の 。level
はキャラクターのレベルのこと。id
は該当するキャラクターの能力値の分類であり、現在の時点では 01~03 の3種類パターンがある。 だけを見れば、01 は全面的に 02 より優れていて、02 は全面的に 03 より優れている。
は、マスターデータの中に格納されたカードごとに設定されていた千分率である。ちなみに初期☆5のカードは全員グループ01に分類されていて、☆4は02、☆3は03になっている。
例えば☆5初期さくらの場合は
vocalRatioPermil | danceRatioPermil | visualRatioPermil |
---|---|---|
420 | 310 | 270 |
に設定されている。千分率だけど、この三つの値の総和は必ずしも 1000 ではない。つまり同じグループに分類されていても、カードの三つの能力値の総和は必ずしも同じではない。
スタミナの Permil は現在のところ全員およそ 1000 の近くに設定されている。
rarity | parameterBonusPermil |
---|---|
1 | 1000 |
2 | 1050 |
3 | 1100 |
4 | 1150 |
5 | 1200 |
6 | 1250 |
7 | 1300 |
8 | 1350 |
9 | 1400 |
rarity
はカードの現在のレアリティである。ご覧の通り☆を一つ上げればステータスは 5% 上がる。
例:☆9初期さくらの Vocal 値を例として、グループ01 Lv.180 の は 119850、 は上記の 420、☆9なので は 1400。この時のベース値は
である。
1.2 ユーザー値
ユーザー値は、マネージャーのみなさんが毎日でも開いてるゲームのアイドル詳細画面で表示された値である。間違われがちなんだがアイドル詳細画面の値はベース値ではない。この値自体に実は意味がないが一番確認されやすいので一応紹介する。
この値の計算式は以下のとおり
例:同じく☆9初期さくらの Vocal 値を例として、 は
#1.1
で得た 70471、自分が所持している全カードのボーカルエールボーナスは 9.5%、スタッフ育成はLv.42 の 8477、代入するとである。
アイドル詳細画面で確認してみると
計算結果と一致している。
1.3 デッキ値
デッキ値は、カードがユニット編成された時の値である。
この値の計算方法は #1.2
のユーザー値の計算方法とほぼ完全一致であるが、違いはデッキ値はアクセサリーやフォトの属性ボーナスも入っているところだけ。
計算式は以下のとおり
デッキ値はライブ中のベース値にもなっている。つまりライブ中カードのすべてのステータスはデッキ値を基準に変動する。
1.4 メンタルとテクニック
メンタルとテクニックはカードやレベル問わず全員一致で初期値は 100 である。ライブ外でこの二つの値を変えられるのは現在のところエール、スタッフ育成、アクセサリー、フォトのみになっている。計算の仕方は四つの値を加算すれば OK なのでわざわざ書かなくても問題ないかと思う(本音は書くのめんどい)。
2. スコア計算式
最初に説明する。アイプラのスコア計算はすべてサーバー側で行っているのでクライアント側のアセンブリをいくら解析してもライブスコアの計算式を見つからなかった。故に #2.2
~ #2.3
の計算式は全部機械学習と統計学分析と仮定と妄想による実戦データを最尤推定と回帰モデルを用いて導かれた結論である。あくまでも統計学分析の結論なので必ずしも正確ではない。もし異論がある場合は是非教えてください。異論は大歓迎です。
2.1 スコアボーナス
スコアの計算式を紹介する前に、先ずはスコアに影響する 5 種類のスコアボーナスを理解しなければならない。
2.1.1 Combo ボーナス
以下のとおり
はコンボ数をマスターデータの中にあるコンボボーナス表にマッピングした結果。comboCount | advantagePermil |
---|---|
10 | 1050 |
20 | 1100 |
30 | 1150 |
40 | 1200 |
50 | 1250 |
70 | 1300 |
100 | 1500 |
2.1.2 オーディエンスボーナス
オーディエンスボーナスは、来場ファン数に応じて得られるスコアボーナス。
このボーナスはユニット全体ではなく、来場したアイドル個人のファン数に応じてその個人に影響を与える(DDは現在認められていない)。来場ファン数とスコアボーナスのマッピング表はマスタデータの中に事前に定義されていて、以下は一部抜粋
audienceAmount | advantagePermil |
---|---|
10 | 1001 |
100 | 1010 |
1000 | 1100 |
10000 | 1500 |
50000 | 2000 |
そして肝心の来場ファン数の計算方法についてなんだが、ここにはゲームの中で言及されていない隠しパラメータが存在している。
解析から得た結論を言うと、ファンはライト層、ミドル層、ヘビー層の3種類に分かれている、三種の総和はアイドルの総ファン数となる。そしてライブの来場ファン数はキャラ1人につき、この三種の数とそれぞれの重みによって決められる。
さらに会場には座席が制限されているので実際の場合キャラ1人につきボーナスの計算に影響できるファン数は上限がある
は会場の座席数である。ここで得た来場ファン数を上記の表にマッピングして最終的にアイドル個人のオーディエンスボーナスの値を得られる。
2.1.3 エールボーナス
ユーザーが所持しているすべてのカードのエールの総和のこと。
ライブ詳細で簡単に確認できるので言うべきことは特にないと思う。
2.1.4 フォトボーナス
ユニット編成でカードに装備されていたフォトのスコアボーナスの総和のこと。
これも簡単に確認できるので全部加算すれば OK。
2.1.5 クリティカルボーナス
クリティカルボーナスの初期値は 50%。それをエール、フォト、クリティカル係数アップスキルと加算して最終の値を得られる。
2.2 ビートスコア
計算式を投げる
は整数 8 に近い変数である。この値はライブごとに最大 $\pm0.4$ くらい変動するが 8 として認識するのは特に問題はないと思われる。(多分この変動は何らかの規律性があると思われるのですが調べ不足のせいで今のところまだ解明していません) はアイドルの能力値とライブごとに設定されていた能力値の重みから計算できる。計算方法は はライブ中アイドルの Da Vo Vi のうち一つ。 はライブごとに設定されていた `beatDanceWeightPermil`、`beatVocalWeightPermil`、`beatVisualWeightPermil` のうち一つである。例:ライブ中アイドルのステータスは Da128760, Vo209540, Vi85853、そのライブに設定されたステータスの重みは Da250, Vo600, Vi150、 は
一言付け加えると、 の総和は必ずしも 1000 ではない、1500 や 2000 の場合もある。そういうライブをライブ詳細で確認する時は「ビートスコア 1.5 倍」などのヒントが見られる。
は、そのライブの総ビート数。A、SP はこちらに含まれていない。 は `#2.1.1` ~ `#2.1.5` の値。クリティカル発生しなかった場合 は 0。 はスコアアップ、ビートスコアアップなどのスキル効果値。 は範囲 で離散一様分布する乱数である、間隔は 0.001。 はフォトやエールなどのスコアへの固定値ボーナス。2.3 A、SP、P スキルスコア
A、SP、P のスキル計算式は同じ
はそのレーンの色に応じたライブ中アイドルの Da Vo Vi のうち一つの値。 は発動する A、SP、P スキルのスコア倍率。 はライブごとに設定された A、SP、P スコアの重み。普通は 1000 であるが 1500、2000、3000 の場合もある、そういう場合はライブ詳細画面で「Aスキルスコア 1.5 倍」などのヒントが確認できる。 は `#2.1.1` ~ `#2.1.5` の値。クリティカル発生しなかった場合 は 0。 はスコアアップ、A スコアアップなどのスキル効果値。 は範囲 で離散一様分布する乱数である、間隔は 0.001。 はフォトやエールなどのスコアへの固定値ボーナス。3. スキル
スキルに関する検証はすでにこちらのスプシ(Author: やるキ士)でほぼ検証済みなのでリンク先を参照してください。
補足すると、以下の表はマスタデータとトラフィックの解析から得られたスキル効果に関する情報です。が、value の部分は驚くにマスタデータの中に格納されていないのでその部分は LiveResult のトラフィックを解析して の形から得られた値です。ですがこのゲームの小数は千分位以下切り捨てされてしまうので割り切れない場合は段階数を変えて検証を繰り返さなければならない、そのあたりはなまじめんどいのでやってなかった。
でかいので折りたたんでおいた。
[Click Me] 詳細表
SkillEfficacyType | enum | value1 | value2 | maxGrade | 備考 |
---|---|---|---|---|---|
Unknown | 0 | ||||
ScoreGet | 1 | ||||
FixScoreGet | 2 | ||||
ScoreGetByMoreFanAmount | 3 | ||||
ScoreGetByLessFanAmount | 4 | ||||
ScoreGetByMoreFanEngage | 5 | ||||
ScoreGetByMoreStamina | 6 | ||||
ScoreGetByLessStamina | 7 | ||||
ScoreGetByMoreComboCount | 8 | ||||
ScoreGetByStrengthEffectCount | 9 | ||||
ScoreGetByTrigger | 10 | ||||
StaminaConsumptionReduction | 11 | 50 | 20 | ||
ComboContinuation | 12 | ||||
DanceUp | 13 | 50 | 20 | ||
VocalUp | 14 | 50 | 20 | ||
VisualUp | 15 | 50 | 20 | ||
ScoreUp | 16 | 25 | 20 | ||
BeatScoreUp | 17 | 100 | 20 | ||
ActiveSkillScoreUp | 18 | 50 | 20 | ||
CriticalRateUp | 19 | 50 | 20 | ||
CriticalBonusPermilUp | 20 | 50 | 20 | ||
AudienceAmountIncrease | 21 | 50 | 5.4くらい | 10 | 9段階48 |
StaminaRecovery | 22 | ||||
FixStaminaRecovery | 23 | ||||
WeaknessEffectRecovery | 24 | ||||
StrengthEffectCountIncrease | 25 | ||||
StrengthEffectValueIncrease | 26 | ||||
CoolTimeReduction | 27 | ||||
AudienceAmountReduction | 28 | 50 | 3.7くらい | 10 | 8段階29 |
SkillImpossible | 29 | ||||
DanceDown | 30 | 50 | 20 | ||
VocalDown | 31 | 50 | 20 | ||
VisualDown | 32 | 50 | 20 | ||
StaminaConsumptionIncrease | 33 | 50 | 20 | ||
SpecialSkillScoreUp | 34 | 30 | 20 | ||
TargetStaminaRecovery | 35 | ||||
ScoreGetByStatusEffectTypeGrade | 36 | ||||
SkillSuccessRateUp | 37 | 50 | 37.5 | 10 | |
TensionUp | 38 | 50 | 15 | 10 | |
ScoreGetBySkillActivationCount | 39 | ||||
WeaknessEffectPrevention | 40 | ||||
ComboScoreUp | 41 | 100 | 20 | ||
PassiveSkillScoreUp | 42 | 100 | 20 | ||
ScoreGetByMoreStaminaUse | 43 | ||||
WeaknessEffectInversion | 44 | ||||
StrengthEffectMigrationBeforeActiveSkill | 45 | ||||
StrengthEffectMigrationBeforeSpecialSkill | 46 | ||||
ScoreGetByDeckSupporter | 47 | ||||
ScoreGetByDeckBuffer | 48 | ||||
StaminaConsumption | 49 |
3.1 スキル発動順番
スキルの発動について、基本的に以下のフローチャートのように行われる。
flowchart LR
subgraph pre ["ユニット内"]
direction LR
preindex("〇〇前発動 P スキル")
preindex -. "メンタル順" .-> preindex
end
subgraph muin ["ユニット内"]
direction LR
after("無印 P スキル")
after -. "メンタル順" .-> after
end
subgraph photo ["ユニット内"]
direction LR
pab("フォトスキル")
pab -. "メンタル順" .-> pab
end
start["ビート開始"]
endd["ビート終了"]
beat{{"ビート & A & SP\n(スコア精算)"}}
endd["ビート終了"]
start --> pre --> beat --> muin --> photo --> endd
ただし
- ライブ開始最初の2ビートのみ、無印スキルはスコア精算の前に発動する。
- 同じキャラが持つ複数のパッシブスキルは同時に使える場合、それらのスキルのインデックスに沿って1ビートに一つのスキルのみ発動していく。
ちなみにライブ中全ての行為はオーダーが付いてる、そのオーダー順に従って全ての行為が順次に効果を発揮する。
4. ライブバトル
ライバに関する検証もこちらの素晴らしいスプシで完璧に検証されているのでリンク先を参照してください。補足することは何もないです。
5. その他
5.1 スキル発動成功率(メンタル)
メンタル要求:特大
この二文字を見ると胃が痛くなるのは自分だけじゃないはずだと信じている。
ライブスキル成功率は以下のように計算される
id | name | weightPermil |
---|---|---|
quest_pressure-0 | 小 | 1 |
quest_pressure-1 | 小 | 143 |
quest_pressure-2 | 普通 | 999 |
quest_pressure-3 | 中 | 1571 |
quest_pressure-4 | 大 | 1857 |
quest_pressure-5 | 特大 | 2500 |
5.2 フォトについて
フォトの品質は現在 200 まで用意されているがゲームの中では MAX 155 の制限がかかっている。
品質が同じの場合☆5のフォトは全面的に☆4のフォトより強い。平たく言うと☆4とそれ以下のフォトは全部ゴミ。
今のところ得た結論は以上。また何か思いついたらその時追加する。