【開発中アプリ紹介】弾律 -Danritsu-:Build/Battleのフェーズ分離と3次元グリッド構想

App

現在開発中のアプリ「弾律 -Danritsu-」では、戦略性と予測性を両立するために、BuildフェーズとBattleフェーズを分離し、さらにタイル毎に(x, y, phase)の3次元的な構造で挙動を制御する仕組みを採用しています。

この記事では、この3次元的な設計思想がどのように設計され、弾道にどのような影響を与えるのかを紹介します。


なぜフェーズを分けるのか?

弾律には以下の2つの局面が存在します:

フェーズ目的主要オブジェクト
Build弾道ルートを構築、確率調整ギア (GearMover)、資源回収、建築
Battle弾を流して敵と戦う弾 (BulletMover)、バフ適用、被ダメ制御

それぞれに異なる処理と判断ロジックが必要であり、UIや可視化すべき情報も異なるため、ゲームの状態管理においても分離して実装しています。


各タイルに対して(x, y, phase)単位で確率を持つ

タイルは、フェーズごとに進行方向の確率を別々に管理しています。

PuzzleTile.cs 抜粋

public PhaseWeight buildPhaseWeight = new PhaseWeight { up = 5, down = 5, straight = 5 };
public PhaseWeight battlePhaseWeight = new PhaseWeight { up = 5, down = 5, straight = 5 };

public Direction GetNextDirection()
{
    PhaseWeight weight = (gridManager.currentPhase == PhaseType.Build) ? buildPhaseWeight : battlePhaseWeight;
    return GetWeightedDirection(weight);
}

→ プレイヤーはBuildフェーズでルートを設計し、その設計がBattleフェーズに反映される流れになります。


GridManagerによるフェーズ管理

フェーズは GridManager.cs の中で一元管理され、タイルの挙動や可視化処理の切り替えに使われています。

public PhaseType currentPhase = PhaseType.Build;
public void TogglePhase()
{
    currentPhase = currentPhase == PhaseType.Build ? PhaseType.Battle : PhaseType.Build;
    Debug.Log($"[GridManager] Phase changed to: {currentPhase}");
}

→ Tabキーなどの入力でフェーズが切り替わり、可視化レイヤーや弾の挙動が変化します。
 (現在はテスト的にフェーズをいつでも切り替えられるようにしています)


リソース構築と確率設計をつなぐUI

タイルの方向確率は TileWeightEditorPanel を使ってプレイヤーが直接編集できるようになっています。

また、建物配置(ResourceBoost等)もBuildフェーズ中にのみ行えるよう制御し、構築戦略と確率設計の両方にリソースを配分させる構造にしています。


この3次元構想のメリット

  • 各フェーズに最適化されたUIや演出が可能
  • 確率調整がプレイヤーの明確な“戦略”として現れる
  • ゲームのメリハリと没入感が向上

特に「Buildフェーズで地味に調整していた要素が、Battleで一気に爆発する」感覚がゲームの気持ちよさにつながっています。


今後の拡張構想

  • Phase別に色分けされたルート表示機能
  • 複数Waveにまたがる構築フェーズ

コメント

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