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
- Modify MapMaker2 to generate larger initial maps
- Add VisibilityMask to MapData to track revealed/hidden areas
- Update rendering to only show revealed areas
- Replace expansion logic with exploration revelation logic
Phase 2: Enhanced Features
- Add exploration boundaries visualization
- Implement smooth fog of war transitions
- Add exploration-based gameplay elements (rewards for discovering new areas)
- Optimize performance for large maps
Phase 3: Advanced Systems
- Dynamic loading/unloading of distant map sections
- Procedural detail enhancement for newly revealed areas
- 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
- Keep current expansion system as fallback
- Add exploration mode as optional feature
- Test with medium-sized pre-generated maps
- Gradually increase map size and add optimizations
- 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.