Area Map
The key words MUST, MUST NOT, SHOULD, and MAY are used as in RFC 2119.
The area map is a centered overlay showing the current section's cell grid — PSZ's zoomed-out map (PSZ splits local/area maps because its rooms are generated lego-block style; the local room minimap in the top-right is a separate element and unaffected). It replaces both the old debug map overlay and the top-right grid minimap.
Presentation
- Centered on screen at 50% of the viewport height, width from the map sprite's aspect ratio, at ~70% opacity — a quick-reference overlay, not a modal (gameplay input stays live).
- Drawn over the PSZ map-grid sprite (
assets/ui/hud/map_grid.png, 5×5 cell windows: 107 px cells at139 + col·120,219 + row·120in the 1024-wide sheet). Until the sprite ships in the pack, a procedural plate with identical geometry stands in.
Toggle
- The
area_mapaction toggles it: R2 (right trigger, joypad axis 5) or M. R2 was the free shoulder input (L1 = dodge, R1 = palette swap, L2 = camera lock). - Visibility persists across cell transitions within a field (existing
map_overlay_visibletransition data); it defaults to hidden on field entry.
Fog of war
- A cell MUST render only once the player has visited it (
_visited_cells); unexplored cells stay dark windows — the map fills in as the player explores. - A revealed cell draws its doors per state: green = open, red = locked (key gates, enemy locks, pending objectives — the same gate-state feed the room minimap uses).
- The start cell carries the return-warp marker (cyan ring — the warp back to the city); the section's exit edge (
warp_edge) carries the area-warp marker (blue, locked-red while objectives are pending) to the next grid. - The current cell is highlighted (bright green).
Debug reveal
DebugConfig.reveal_map ("Reveal Map (debug)" in the start-menu options) shows the full grid regardless of visited state, so testers can see where to go in a given layout. Default OFF.
Implemented by
scripts/3d/field/area_map_overlay.gd— the overlay Control (layout, fog of war, doors/warps; sprite or procedural backdrop).scripts/3d/field/valley_field_controller.gd— mounts it in theMapOverlayCanvasLayer, feedssetup(cells, current, visited, label)per cell load andset_gate_stateon gate changes, handles thearea_mapaction.project.godot— thearea_mapinput action;scripts/config/debug_config.gd—reveal_map.