Skip to content

Grid System Architecture

Status: RESOLVED — July 19, 2026


Coordinate System

Grid Dimensions

  • 8 columns (x) × 12 rows (y) — portrait orientation
  • Height layers (z): −1 (pit), 0 (ground), +1 (platform), +2 (elevated), +3 (tower/peak)

Data Model

  • 2D array Tile[8][12] with height as a tile property.
  • One unit per (x, y) coordinate — no stacking at different heights on the same tile.
  • Height determines advantage, not occupancy.
Grid
├── Tile[x][y]
│   ├── height: int (-1..+3)
│   ├── terrainType: enum (Grass, Water, Lava, Void, etc.)
│   ├── occupant: Unit | null
│   ├── hazard: HazardData | null
│   ├── cover: CoverData | null
│   └── preparedEffect: RitualData | null
├── Units[]: List<Unit>
└── activeEffects[]: List<GridEffect>

Rendering

  • Custom mesh grid — not Unity Tilemap. Full control over height extrusion and isometric projection.
  • Height projection: shadow offset on ground plane for depth readability.
  • Z-ordering: paint back to front, bottom to top, then height ascending.
  • Characters: 2D sprites on billboarded quads in 3D space.

Pathfinding

  • A with height cost* — climbing +1 height costs +1 movement. Descending is free (may trigger fall damage).
  • Movement abilities (Flight, Shadowstep) bypass height cost via ability flags, not pathfinding modifications.

Line of Sight

  • Bresenham raycasting on grid data (not Unity physics). Deterministic, fast, testable.
  • Cover tiles block LOS if between attacker and target at same or higher height.
  • Height advantage +3: ignores LOS blockers at or below attacker height.

Height Mechanics

Height DifferenceRange ModDamage ModLOS Rule
+3 or higher+2+30%Ignores LOS blockers ≤ attacker height
+2+1+20%Normal LOS
+1+1+10%Normal LOS
000%Normal LOS
−1−1−10%Normal LOS
−2 or lower−1−20%Normal LOS

Open Questions

  • [x] Isometric camera angle: 30° or 45°? 45°. Standard isometric. Better depth visibility for 2.5D hybrid.
  • [ ] Grid mesh generation: runtime (allowing dynamic terrain changes) or pre-baked per map?
  • [ ] Height visualization: color-coded ledges, shadow projection, or both?

Markdown is the canonical GDD source.