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 room footprint — the actual floor shape from the stage's minimap SVG (
lndmd/<stage>_minimap.svg, parsed by the sharedMinimapSvgreader), rotated by the cell's rotation and fitted into the cell window so the grid reads as real rooms, not uniform squares (player request). Rooms relative sizes stay true to their SVGs, so gates land on the edges their door markers occupy. A stage without an SVG (≈10 rooms, or a packless CI run) SHOULD fall back to the plain square. - 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, room footprints, doors/warps; sprite or procedural backdrop).scripts/3d/field/minimap_svg.gd— shared minimap-SVG parser (floor triangles, boundaries, gates, transform metadata) used by both the area map and the room minimap.scripts/3d/field/valley_field_controller.gd— mounts it in theMapOverlayCanvasLayer, feedssetup(cells, current, visited, label, area_folder)per cell load andset_gate_stateon gate changes, handles thearea_mapaction.project.godot— thearea_mapinput action;scripts/config/debug_config.gd—reveal_map.