# Player Behavior Heatmaps

Phase 72.5.2.2 adds `@v2/player-behavior-heatmaps`, the operational heatmap
surface for anonymized player positional telemetry. The policy is
`v2-player-behavior-heatmaps-v1`.

`buildV2PlayerBehaviorHeatmapsSurface` composes
`@galatea/analytics/heatmap-engine` for 2D movement and dwell grids, then adds
V2 overlays for where players die and linger. It also emits 3D voxel density
maps so arenas with vertical routes can be inspected by height slice.

The service consumes `movement`, `death`, and `linger` samples with
`playerIdHash` identifiers. Output surfaces expose grid cells, intensities,
death counts, linger time, and voxel aggregates; they do not expose raw player
IDs or raw trajectory points.

## Operator Surface

Rendered UI should prioritize the actual heatmap workspace: mode tabs for
Movement, Deaths, and Linger, a compact map selector, a time-window control, and
the 2D grid as the primary view. The 3D voxel view should be a separate mode or
side-by-side inspector, not a decorative preview.

The first screen should make the selected arena and heatmap mode obvious without
marketing copy. Use dense labels, stable grid sizing, and clear intensity
legends so operators can compare hot cells quickly.

## Verification

Targeted verification:

```bash
pnpm --filter @v2/player-behavior-heatmaps run typecheck
pnpm --filter @v2/player-behavior-heatmaps run test
python V2/ue/Tools/check-v2-player-behavior-heatmaps.py
python -m json.tool V2/ue/Build/Telemetry/v2-player-behavior-heatmaps.json
```
