Appearance
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 Difference | Range Mod | Damage Mod | LOS Rule |
|---|---|---|---|
| +3 or higher | +2 | +30% | Ignores LOS blockers ≤ attacker height |
| +2 | +1 | +20% | Normal LOS |
| +1 | +1 | +10% | Normal LOS |
| 0 | 0 | 0% | 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?