1 regions points of interest and exploration discovery
forgejo-actions edited this page 2026-07-15 12:43:13 +00:00

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.