Regions, Points of Interest, and Exploration Discovery
What This System Is
The exploration system turns scenes and travel routes into a discoverable world map. Production content lives in assets/gameplay/world_exploration_catalog.json; pure authority logic lives in the shared world-domain crate.
How Authors Use It
Regions
Regions form a validated hierarchy such as continent → region → subregion. Each region defines map bounds, danger rating, initial reveal state, summary, and tags. Validation rejects duplicate IDs, missing parents, hierarchy cycles, child bounds outside their parent, and invalid danger values. Overlapping sibling bounds are reported as authoring warnings.
Points of interest
Points of interest identify settlements, landmarks, dungeons, services, resources, encounters, puzzles, and secrets. Each POI owns both a world-map position and a scene-space discovery anchor. Optional links connect the POI to a travel node, NPC, encounter, world event, or scene phase.
Map visibility supports:
hidden_until_discovered, which omits the POI entirely;rumored, which shows an unresolved hint;always, which shows a known but undiscovered destination.
Rules And Invariants
Reveal rules
Discovery observations are typed as scene entry, radius entry, interaction, travel arrival, quest progression, or world-event activity. Rules can combine these observations with the shared gameplay-condition language, time-of-day windows, weather, active world events, and active scene phases.
evaluate_observation returns every blocker instead of a single boolean, making the same result useful to runtime authority, editor previews, tests, and designer diagnostics.
Authority and persistence
WorldExplorationLedger stores discovered POIs, revealed regions, claimed discovery rewards, applied request IDs, and revision. The ledger lives in the existing character gameplay-state JSON beside travel state and the player codex ledger.
Discovery is planned against an expected revision and applied with clone-then-commit semantics. A successful first discovery atomically:
- records the POI and its region ancestry;
- adds a location codex discovery;
- reveals the linked travel waypoint;
- claims the authored reward exactly once;
- records the request ID for retry safety.
Repeated observation updates the last-seen timestamp without paying the reward again. Replaying the same request is a no-op.
Discovery rewards use the shared reward contract, including experience, inventory, currency, reputation, unlocks, quest flags, and runtime events. Economy and progression owners consume the resulting reward plan through their existing transactional boundaries.
Map and route projection
The player-facing MapFastTravel projection combines quest markers, travel nodes, routes, revealed region bounds, and visible POIs. Each POI exposes its discovery state and linked waypoint. nearest_known_travel_node selects a direct discovered waypoint first, then the closest discovered map node.
Editor workflow
Open Scene → Detailed Scene Tools → Scene Lighting → Regions & Exploration. The panel shows:
- a compact map canvas with region rectangles and visibility-colored POIs;
- POIs targeting the current scene;
- discovery observation, conditions, time, weather, event, and phase gates;
- scene/map coordinates and linked content;
- baseline blockers at the shared world-time preview instant;
- authored experience, inventory, and unlock rewards.
Server startup validates every referenced scene, travel node, NPC, encounter, event, phase, item, and currency. The authoring dependency graph records the same edges so renames and content-health checks can identify affected exploration content.
Validation And Debugging
Use the editor workflow and server startup validation to find invalid region bounds, missing POI targets, unknown rewards, and broken travel links. If a POI appears on the map but cannot route, inspect its linked waypoint and nearest known travel node.
Examples
A rumored cave POI can appear before discovery, reveal its parent region when the player enters the discovery radius, grant a codex location entry once, and unlock its linked waypoint for future route guidance.