現在開発中のアプリ「弾律 -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にまたがる構築フェーズ
コメント