Architecture¶
Runtime layers¶
| Layer | Main types |
|---|---|
| Grid | TacticalGrid, TacticalCell, GridPathfinder, GridLineTrace |
| Map data | TacticalMapData, TacticalMapPalette, TacticalCellOverride |
| Units | TacticalUnit, UnitDefinition, AbilityLoadout |
| Combat | CombatResolver, CoverResolver, LineOfFireService, OverwatchSystem |
| Abilities | AbilityController, definitions, effects, and effect executor |
| Turn | TurnManager |
| Vision | GridVisibilitySystem, FogOfWarPresenter |
| AI | AlienTurnController, AlienSpawnSettings |
| Presentation | HUD, world HUD, feedback, range and cone visualizers |
| Animation | Profile, controller, actions, and event relay |
Data-first extension¶
Prefer creating ScriptableObject assets for content variation. Write new runtime code when behavior changes, not when only values change.
Game-specific systems¶
Objectives, campaign progression, inventory, save games, dialogue, and mission generation are intentionally outside the core combat engine. Integrate them by subscribing to turn, unit, ability, and death events.