【開発中アプリ紹介】弾律 -Danritsu-:HeatmapDrawerによる進行確率の可視化

App

現在開発中のアプリ「弾律 -Danritsu-」では、弾の流れや強化をプレイヤーが戦略的に構築していくというコアシステムにおいて、**分岐方向の確率を視覚化する仕組み(Heatmap)**が重要な役割を担っています。

この記事では、その中核機能である HeatmapDrawer を活用したUI演出について、実装コードとともに解説します。


なぜ進行方向の確率を見せるのか?

タイルによっては弾が複数方向に分岐する可能性があり、それぞれの分岐は内部的に確率で制御されています。 この確率分布を視覚的にプレイヤーへ示すことで、以下のようなメリットが生まれます:

  • プレイヤーが「どの方向に進みやすいか」を瞬時に判断できる
  • ルート構築の直感性が上がり、テンポ感が向上
  • 操作しなくても“戦略の手触り”が伝わるUIになる

実装:HeatmapDrawer の中核ロジック

以下は実際の HeatmapDrawer.cs における色算出処理の抜粋です。

private Color CalculateHeatmapColor(PhaseWeight weight, PhaseType phase)
{
    int total = weight.up + weight.down + weight.straight;
    if (total == 0) return new Color(0.2f, 0.2f, 0.2f, 0.2f);

    float upRatio = weight.up / (float)total;
    float downRatio = weight.down / (float)total;
    float straightRatio = weight.straight / (float)total;

    Color upColor = new Color(1f, 0.2f, 0.2f);      // 赤:上方向
    Color downColor = new Color(0.2f, 0.5f, 1f);     // 青:下方向
    Color straightColor = Color.white;              // 白:直進

    // 混色処理
    Color mixUpDown = Color.Lerp(upColor, downColor, downRatio / (upRatio + downRatio + 0.001f));
    Color blended = Color.Lerp(mixUpDown, straightColor, straightRatio);

    return Color.Lerp(new Color(0.2f, 0.2f, 0.2f), blended, 0.7f);
}

→ 各マスにおける方向選択の確率を色でブレンド表示し、進行予測に深みを与えます。


色の意味とプレイヤーへの伝わり方

  • 🔴 赤みが強い=上方向に進む確率が高い
  • 🔵 青みが強い=下方向に進む確率が高い
  • ⚪ 白に近い=直進の確率が高い
  • グレー寄り=分岐未定 or 無効タイル

このように、確率の“傾き”を色彩で感じ取れる設計にしているため、情報量が多くても視認的な理解がしやすくなっています。


今後の拡張予定

  • 分岐確率の履歴を残し、戦略の振り返りが可能に
  • フェーズごとに色ブレンドを変えてよりコントラストのある表現へ

HeatmapDrawerは“確率で動くロジック”を“感覚的に可視化する”架け橋です。UIによって見えないはずの裏側が伝わることで、プレイ感や戦術性が大きく変わっていきます。

コメント

タイトルとURLをコピーしました