このツールが表示するスコアとランクを、どのような式で出しているかを全て公開しています。数値の根拠を確認したい方向けの技術解説です。
スコアの算出には2つの方式があります。ひとつは、サブステータスを「推奨 / 優先 / 可 / 不要」の4区分に手動で分類し、区分ごとの固定倍率を掛ける方式です(以下、カテゴリ方式)。もうひとつは、キャラクターの基礎ステータス・モチーフ武器・ダメージタイプの内訳から、ダメージ式の偏微分に基づく連続値の重みをサブステータスごとに導き出す方式です(以下、運用バリアント方式)。
運用バリアント方式では、区分そのものを重みから逆算します。必要なデータが揃っているキャラクターにはこちらが使われ、揃っていないキャラクターは自動的にカテゴリ方式へフォールバックします。
「運用バリアント」とは、同じキャラクターでもパーティ編成によってメイン運用・サブ運用・サポート運用が変わり、それぞれ理想のセットやステータスが異なることを表したデータです。装備中のハーモニーセットから最も一致度の高い運用が自動で選ばれます。
前提とするダメージ式は次の通りです。
DMG ∝ MainStat_total × (1 + %DMG_typeX) × CritMult CritMult = 1 + critRate × critDmg
各サブステータスの最大ロール1本を追加したときの相対ダメージ増加率 ΔDMG/DMG を、そのサブステータスの重みとして採用します。倍率の絶対値そのものには意味がなく、後段で理論最大値との比を取るため、サブステータス間の相対比のみが効きます。
期待ダメージ倍率 1 + critRate × (critDmg − 1) を、クリティカル率とクリティカルダメージでそれぞれ偏微分します。クリティカル率が既に高いビルドではクリティカル率の重みが自動的に下がる、という挙動がここから生まれます。
cdBonus = baselineCritDmg - 1 // 非クリ超過分 critMult = 1 + baselineCritRate × cdBonus weight[critRate] = (cdBonus × maxRollFraction(critRate)) / critMult weight[critDmg] = (baselineCritRate × maxRollFraction(critDmg)) / critMult
既にビルドに積まれているであろう他の%系バフの合計を仮定し(0.45)、そこにキャラクター自身のバフとモチーフ武器の副ステータス(%攻撃力の場合)を加えたものを分母に取ります。%系はすでに積み上がっているほど1本あたりの価値が薄まるため、この希釈を明示的に扱います。
existingPctSum = 0.45 + selfAtkBuffPercent + weaponGivesScalingPct weight[atkPercent] = maxRollFraction(atkPercent) / (1 + existingPctSum) weight[atkFlat] = maxRollFraction(atkFlat) / (totalMainStat × (1 + existingPctSum)) // totalMainStat = キャラ基礎攻撃力(Lv90) + モチーフ武器基礎攻撃力(Lv90)
各攻撃種別がそのキャラクターのダメージ全体に占める割合を、重みに直接乗算します。重撃主体のキャラクターなら重撃ダメージ%の重みが大きくなります。
weight[basicAttackDmg] = maxRollFraction(basicAttackDmg) × typeShares.basic weight[heavyAttackDmg] = maxRollFraction(heavyAttackDmg) × typeShares.heavy weight[resonanceSkillDmg] = maxRollFraction(resonanceSkillDmg) × typeShares.skill weight[resonanceLibDmg] = maxRollFraction(resonanceLibDmg) × typeShares.lib
共鳴効率は「要求値に届くまでは高価値、届いた後はほぼ無価値」という閾値型のステータスであり、ダメージ式からの線形近似ができません。そのため運用ごとの要求共鳴効率に応じた静的な重みで代替しています(他の重み帯であるおおよそ 0.02〜0.10 に合わせてスケーリング)。
| 要求共鳴効率 | 重み |
|---|---|
| ≤ 1.05 | 0.02 |
| ≤ 1.30 | 0.05 |
| ≤ 1.60 | 0.08 |
| それ以上 | 0.11 |
武器またはキャラクターの基礎データが欠けている場合は、カテゴリ方式の採点へフォールバックします。
points = (sub.value / sub.maxValue) × weight[sub.key] // ロール実値の比率 × 重み
音骸のコストで決まるサブステータス枠数の分だけ、重みが上位のステータスを「基準ロール」で埋めた場合の合計を理論最大値とします。基準ロールは全ステータス共通で、8段階の値配列の 5/7 地点です。最大ロールではなく 5/7 を基準にしているのは、全枠が最高ロールという現実的にまず起きない状態を 100 点の基準にすると、スコアが実感と乖離するためです。
REFERENCE_ROLL_FRACTION = 5 / 7 referenceRatio(key) = values[round(5/7 × (values.length-1))] / values[values.length-1] topKeys = weights を降順ソートして上位 substatCount 個 theoreticalMax = Σ referenceRatio(k) × weight[k] (k ∈ topKeys) substatScore = (Σ points / theoreticalMax) × 100
その運用でのコスト別推奨メインステータスと比較して減点します。サブステータスが優秀でもメインステータスが噛み合っていない音骸は、実戦では使いにくいためです。
| 状態 | 補正 |
|---|---|
| 推奨メインステータス | 0 |
| 許容メインステータス | −10 |
| どちらでもない | −25 |
| 状態 | 補正 |
|---|---|
| 推奨セット | 0 |
| 許容セット | −5 |
| どちらでもない | −10 |
各サブステータスの重みを最大重みと比較してカテゴリ相当に分類し、「推奨」相当が何本あるかで加点します。良いサブステータスが複数噛み合った音骸を、単純な合計よりも高く評価するための補正です。
weightToCategory(weight, maxWeight):
rel = weight / maxWeight
rel >= 0.85 → 推奨
rel >= 0.50 → 優先
rel >= 0.15 → 可
else → 不要
COMBO_BONUS = { 3本: +3, 4本: +7, 5本: +12 }rawScore = round(substatScore + mainstatBonus + setBonus) + comboBonus score = clamp(rawScore, 0, 100)
スコアの絶対値をそのままランクに変換すると、体感とのズレが生じます。13種類から等確率で5枠を引く抽選では、推奨5種を高いロールで引き当てる確率が極めて低く(推奨5種すべてを引くだけで約 0.08%)、実際には十分良いドロップでも中位ランクに沈んでしまうためです。
そこで、キャラクターと運用バリアントごとに事前計算したドロップスコア分布のパーセンタイルを閾値として使っています。推奨メインステータスと推奨ハーモニーセットを固定し、サブステータス5枠を完全ランダムに抽選する試行を 50万回繰り返してスコア分布を作り、上位X%に対応するスコアを閾値にしています。
| ランク | 累積確率(上位) |
|---|---|
| GOD | 0.01% |
| S+ | 1% |
| S | 5% |
| A | 15% |
| B | 35% |
| C | 65% |
| D | それ未満 |
つまり S ランクは「そのキャラクター向けのドロップとして上位5%に入る音骸」という意味になります。閾値データが無いキャラクターや運用では、固定スコア閾値(S+ ≥ 90 / S ≥ 75 / A ≥ 58 / B ≥ 42 / C ≥ 25、それ未満は D)にフォールバックします。
採点方式は次の優先順位で選ばれます。
1. キャラクター未指定 → 汎用カテゴリ採点
2. 運用バリアントのデータあり → 装備セットから運用を推定して
運用バリアント方式で採点
(基礎データ不足なら 3. へ)
3. それ以外 → カテゴリ方式で採点運用の推定は、装備中のハーモニーセットから最も一致度の高いものを選びます。運用が1つしか無ければそれを、複数ある場合は装備セットが「推奨」または「許容」に含まれるものを探し、見つからなければ先頭の運用を既定とします。
| 項目 | カテゴリ方式 | 運用バリアント方式 |
|---|---|---|
| 重みの単位 | 4段階の固定倍率(2.0 / 1.6 / 0.8 / 0.1) | ダメージ式偏微分による連続値 |
| 分類の根拠 | キャラごとに手動でリストアップ | 基礎ステータス・モチーフ武器・ダメージ内訳から自動算出 |
| 理論最大値 | 固定倍率(≈1.84)× 基準ロール | 重み上位N個 × 基準ロール比率の合計 |
| ランク判定 | スコア絶対値の固定閾値 | キャラ・運用別のドロップ分布パーセンタイル |
| 対応範囲 | 全キャラクター | データが揃ったキャラクターのみ |
スコアの絶対値とランクの体感がズレる問題(たとえば50点台でもAランクになりうる)に対応するため、スコア表示の隣に「上位X%」をバッジで表示しています。あわせて、スコアごとの出現率をヒストグラムとして可視化しています(横軸がスコア、縦軸が出現率)。ランク帯を背景色で示し、自分のスコアが属する区間をハイライトします。グラフ上をホバーすると、任意の区間の出現率と上位%をその場で確認できます。
ヒストグラムの区間は、閾値の生成時にスコア 0〜100 を幅2で区切って集計した51要素の出現確率配列です。上位%は、別途保存している「上位% ↔ スコア」のサンプル列から対数線形補間で求めています。
キャラクターごとの推奨セット・メインステータス・サブステータス優先度は キャラクター別ビルドデータ のページで一覧できます。