EXPLORATION_SYSTEM_DESIGN.md 3.5 KB

Exploration-Based Map System Design

Current Problem

  • Map expansion creates sharp terrain transitions
  • Generated terrain lacks natural flow and large-scale features
  • Complex copying/blending algorithms still produce artificial-looking results

Proposed Solution: Pre-Generated Exploration Map

Core Concept

Generate a much larger map (e.g., 500x500 or 1000x1000) but only reveal portions as the player explores. This shifts from "map expansion" to "map exploration."

Key Components

1. Large Map Generation

  • Generate the full map at startup using existing MapMaker2 systems
  • Natural terrain generation with proper large-scale features
  • Full settlement networks, road systems, geographical features
  • All terrain flows naturally since it's generated as one piece

2. Exploration System

  • Visible Area: Currently revealed portion of the map (starts small, e.g., 100x100)
  • Fog of War: Unrevealed areas are hidden but exist in memory
  • Exploration Radius: Distance from edge that triggers new area revelation
  • Revelation Chunks: Reveal in meaningful chunks (e.g., 50x50 areas)

3. Performance Optimization

  • Culling: Only render/process visible areas + small buffer
  • Level of Detail: Distant revealed areas use simplified processing
  • Memory Management: Unload far-off areas from active memory while keeping exploration state

Implementation Strategy

Phase 1: Basic Exploration System

  1. Modify MapMaker2 to generate larger initial maps
  2. Add VisibilityMask to MapData to track revealed/hidden areas
  3. Update rendering to only show revealed areas
  4. Replace expansion logic with exploration revelation logic

Phase 2: Enhanced Features

  1. Add exploration boundaries visualization
  2. Implement smooth fog of war transitions
  3. Add exploration-based gameplay elements (rewards for discovering new areas)
  4. Optimize performance for large maps

Phase 3: Advanced Systems

  1. Dynamic loading/unloading of distant map sections
  2. Procedural detail enhancement for newly revealed areas
  3. Player-driven exploration mechanics (scouts, watchtowers, etc.)

Technical Benefits

  • Natural Terrain: No more artificial boundaries or copying algorithms
  • Rich Features: Large forests, mountain ranges, river systems flow naturally
  • Simpler Code: Revelation is much simpler than generation
  • Better Performance: One-time generation vs continuous expansion processing
  • Scalability: Can support very large world exploration

Gameplay Benefits

  • Discovery Feel: Players genuinely explore unknown territories
  • Natural Geography: Terrain feels like a real world rather than procedural chunks
  • Strategic Planning: Players can see natural boundaries and plan expansion accordingly
  • Exploration Rewards: New areas can contain unique features, resources, settlements

Memory Considerations

  • Large Map Storage: ~500x500 map = 250,000 tiles vs current ~100x100 = 10,000 tiles
  • Selective Loading: Only keep active areas in full detail
  • Exploration State: Lightweight boolean mask for revealed areas
  • Streaming: Can implement map section streaming for very large worlds

Migration Path

  1. Keep current expansion system as fallback
  2. Add exploration mode as optional feature
  3. Test with medium-sized pre-generated maps
  4. Gradually increase map size and add optimizations
  5. Eventually replace expansion system entirely

This approach would solve the terrain quality issues by generating everything naturally in one pass, while providing a much more immersive exploration experience.