# Map System

## Vue d'ensemble

Le système de carte de Warfactory utilise une architecture hybride combinant une **carte globale réelle éditable** avec des **cartes locales générées** pour optimiser performance et gameplay.

## Architecture Multi-Niveaux

### Zoom Discret - 2 Niveaux
**Large Map (Carte Globale)** :
- **Carte monde** : Scope planétaire complet
- **V1 développement** : Carte faite à la main pour tests
- **Éditable** : Modifications possibles selon besoins gameplay
- **Navigation longue distance** : Node-based system
- **Scope** : Pays, régions, logistique macro

**Zoom Local (Tiles de Jeu)** :
- **Taille tiles** : 1m x 1m (précision Factorio)
- **Chunks locaux** : 64x64 tiles (64m x 64m) [proposition]
- **Cartes générées** : Créées à la demande par serveur
- **Style Factorio** : Placement précis usines, bras, tapis roulants
- **Persistent** : Gardées en mémoire une fois générées
- **Scope** : Construction détaillée, combat local

## Système de Navigation

### Navigation Longue Distance
**Transport Terrestre** :
- **Node routier** : Réseau routier principal
- **Node rail** : Infrastructure ferroviaire
- **Node maritime** : Ports et voies navigables

**Transport Aérien** :
- **Point A to Point B** : Navigation directe sans contraintes nodes
- **Pas de réseau** : Vol libre dans espace aérien

### Chunks Imbriqués
**Optimisation logarithmique** :
- **Hiérarchie chunks** : Structure imbriquée pour performance
- **Navigation intelligente** : Pathfinding optimisé
- **Streaming efficace** : Chargement sélectif selon zoom

## Gameplay et Construction

### Échelles de Construction
**Niveau Local (Style Factorio)** :
- **Bras (inserter)** : Taille = taille joueur
- **Usines joueur** : 2x2, 3x3, 4x4, parfois plus grandes
- **Usines IA/personnel** : 40x30, 10x10, 15x30 (grandes installations)
- **Infrastructure** : Tapis roulants, réseaux électriques

**Niveau Global** :
- **Placement macro** : Positionnement bases, régions industrielles
- **Infrastructure** : Routes, rails, ports
- **Effets cascade** : Modifications locales → impact global

## Combat et Intégration

### Combat Local sur Vraie Map
**Principe** :
- **Pas d'instances** : Combat sur cartes locales réelles
- **Continuité** : Même terrain que construction
- **Persistance** : Dégâts restent après combat

**Intégration Logistique** :
- **Routes visualisées** : Infrastructure visible sur map
- **Supply lines** : Convois suivent réseau routier/rail
- **Vulnérabilités** : Infrastructure attaquable

## Streaming et Performance

### Système de Chargement
**Client-Side** :
- **Streaming intelligent** : Charge zone selon zoom/position
- **Unload automatique** : Libère mémoire zones non-visitées
- **Performance optimale** : Affiche uniquement écran visible

**Multi-joueur** :
- **Synchronisation serveur** : Redistribue changements aux joueurs en zone
- **Pas de conflit** : Système chunk résout collisions

### Transitions de Vue
**Zoom automatique** :
- **Seuil automatique** : Switch auto global→local selon niveau zoom
- **Boutons directs** : "Zoom on player" pour accès rapide
- **Transition fluide** : Passage seamless entre niveaux

**Isolation joueurs** :
- **Pas de notifications** : Connexion/déconnexion autres joueurs invisible
- **Pas de chat** : Communication uniquement via système messages (futur)
- **Isolation totale** : 10 joueurs sur pays différents peuvent s'ignorer complètement

### Optimisation Visuelle
**Rendu Local** :
- **Joueur voit** : Sa tile + tiles adjacentes
- **Caméras optionnelles** : Accès distant aux usines du joueur
- **Performance** : Ultra-simple, affichage écran uniquement

## Fog of War et Reconnaissance

### Système de Mémoire
**FOW par Chunks** :
- **Full Black** : Zones jamais visitées
- **Mémoire persistante** : Client garde info zones explorées
- **Granularité** : Par chunk, pas de micro-FOW

### Intel Gathering Progressif
**Qualité reconnaissance** :
- **Satellite bas** : "Bâtiments ukrainiens en Ukraine"
- **Satellite high-end** : "Usines tanks Company X spécifique"
- **Progression détail** : Bâtiment → Usine → Usine armement → Usine armement Company X

### Persistance Intelligence
**Mémoire par Actor** :
- **Sauvegarde info** : État/Company garde intel collecté
- **Expiration possible** : Info peut devenir obsolète
- **Partage conditionnel** : Selon alliances/accords

## Map Éditable et Modifications

### Carte Globale Réelle
**Base authentique** :
- **Géographie réelle** : Ukraine, Europe, monde selon scope
- **Modifiable** : Adaptations pour gameplay/équilibrage
- **Infrastructure réelle** : Routes, villes, ports existants

### Répercussions Croisées
**Local → Global** :
- **Destruction infrastructure** : Pont local → route globale coupée
- **Constructions majeures** : Nouvelle usine → impact économique régional

**Global → Local** :
- **Artillerie longue portée** : Dégâts route globale → terrain local
- **Événements macro** : Bombe nucléaire → dégradation locale généralisée

## Structures de Données Techniques

### Architecture Chunks Optimisée

**Tile Structure Principal (Terrain)** :
```cpp
struct Tile {
    uint16_t terrain_type;    // 2 bytes (65k types terrain possibles)
    uint8_t elevation;        // 1 byte (0-255 hauteur)
    uint16_t building_id;     // 2 bytes (ref vers building)
    uint16_t flags;          // 2 bytes (passable, destructible, etc.)
    uint8_t padding;         // 1 byte (alignment mémoire)
}; // = 8 bytes par tile
```

**Chunk Principal 64x64** :
- **Taille** : 4096 tiles × 8 bytes = 32KB par chunk
- **Usage** : Terrain, navigation, construction, combat local
- **Fréquence** : Chargé souvent, dense

**Combat Multi-Chunks** :
- **Batailles étendues** : Combat s'étend naturellement sur dizaines/centaines de chunks
- **Frontlines persistantes** : Guerre dure 1 an dans le monde (ex: base Bakhmut)
- **Capacité système** : "Milliers d'unités" = réparties sur grande zone géographique
- **Streaming intelligent** : Charge chunks actifs selon position unités/player

**Système Ressources par Patches (Factorio-like)** :
```cpp
// Patches alignés sur grille tiles, mais pas forcément sur chunks
struct ResourcePatch {
    uint16_t resourceId;          // Fer, cuivre, pétrole, uranium, etc.
    uint64_t original_quantity;   // Quantité initiale (future-proof)
    uint64_t remaining_quantity;  // Ce qui reste actuellement
    uint8_t base_richness;        // Richesse de base (items/sec/drill)
    set<TilePosition> tiles;      // Grid de tiles occupées (ex: L-shape sur grille)
    uint32_t active_drills;       // Nombre de drills qui minent
    BoundingBox bounds;          // Zone couverte par le patch

    float getCurrentExtractionRate() {
        if (remaining_quantity == 0) {
            return 0.0f;  // STOP NET - patch épuisé
        }

        double depletion_ratio = (double)remaining_quantity / original_quantity;
        // Formule diminishing returns : rate = base * (1 - (1-depletion)/2)
        float efficiency = 1.0f - (1.0f - depletion_ratio) / 2.0f;
        return base_richness * efficiency;
    }

    float getTotalOutput() {
        return getCurrentExtractionRate() * active_drills;
    }

    bool isExhausted() {
        return remaining_quantity == 0;
    }
};

struct MiningDrill {
    Point2D position;
    uint8_t coverage_area;        // 1-25 tiles selon tech
    ResourcePatch* target_patch;  // Référence au patch miné

    float getOutput() {
        if (!target_patch || target_patch->isExhausted()) {
            return 0.0f;  // Drill inutile si patch épuisé
        }
        return target_patch->getCurrentExtractionRate();
    }
};
```

**Mécaniques d'Extraction** :
- **Partage équitable** : N drills = N × extraction_rate du patch
- **Diminishing returns** : Plus le patch s'épuise, moins il est efficace
- **Arrêt brutal** : 0% restant = 0 extraction (pas de résiduel)
- **Exemple** : Patch 50% épuisé = 75% d'efficacité par drill

**Exemples de Capacité** :
- **Patch fer standard** : 10 millions d'unités
- **Gisement pétrole** : 1 milliard d'unités (quasi-infini)
- **Mine uranium** : 100 millions d'unités (extraction très lente)

**Avantages Architecture** :
- **Séparation claire** : Terrain vs ressources = systèmes indépendants
- **Performance** : Terrain chargé en continu, ressources à la demande
- **Extensibilité** : 65k terrain types = variantes urbain/rural/industriel
- **Mémoire optimisée** : Pas de ressources stockées dans chaque tile
- **Alignment CPU** : Padding assure performance mémoire

### Metadata Chunks
```cpp
struct ChunkMeta {
    int32_t chunk_x, chunk_y;     // Position globale
    uint32_t generation_seed;     // Pour reproduction terrain
    bool is_dirty;               // Modifié depuis last save
    timestamp last_access;       // Pour LRU unloading
    uint16_t active_buildings;   // Compteur optimisation
    vector<ComplexBuildingData>; // Bâtiments multi-tiles
}; // ~1-5KB selon buildings présents
```

**Total Footprint par Chunk** :
- Terrain : 32KB (toujours chargé)
- Ressources : 0-16KB (selon density, sparse)
- Metadata : 1-5KB (selon buildings)
- **Total** : 33-53KB par chunk = très raisonnable

## Génération et Persistance

### Cartes Locales
**Génération à la demande** :
- **Serveur génère** : Selon besoins joueur/combat
- **Persistance** : Sauvegarde une fois créée avec seed
- **Reproduction** : Même seed = même terrain généré

**Seed System** :
```cpp
// Génération déterministe par chunk
uint32_t chunk_seed = global_seed ^ (chunk_x << 16) ^ chunk_y;
// Assure reproduction exacte du terrain
```

**Déclencheurs génération** :
- **Joueur visite** : Zone explorée première fois
- **Combat déclaré** : Battlefield généré automatiquement
- **Construction** : Développement industriel local

## Architecture Modulaire de Génération Procédurale

### Principe de Modularité
**Design pour IA** : Chaque module = interface simple + logic testable + règles claires

```cpp
class IGenerator {
public:
    virtual void generate(ChunkData& chunk, GenerationContext& context) = 0;
    virtual void validate(const ChunkData& chunk) = 0;
    virtual bool canGenerate(const GenerationContext& context) = 0;
};
```

### Modules de Génération

#### TerrainGenerator
```cpp
class TerrainGenerator : public IGenerator {
private:
    PerlinNoiseGenerator elevation;
    PerlinNoiseGenerator moisture;
    BiomeClassifier biomes;

public:
    void generate(ChunkData& chunk, GenerationContext& context) override {
        // Génère elevation, biomes, terrain de base
        // Input: chunk position, global seed
        // Output: terrain_type pour chaque tile
    }
};
```

#### RoadNetworkGenerator
```cpp
class RoadNetworkGenerator : public IGenerator {
private:
    DelaunayTriangulation connectivity;
    MinimumSpanningTree optimizer;

public:
    void generate(ChunkData& chunk, GenerationContext& context) override {
        // Génère réseau routier cohérent
        // Input: terrain, points d'intérêt, chunks voisins
        // Output: routes principales + secondaires
    }
};
```

#### BuildingLayoutGenerator
```cpp
class BuildingLayoutGenerator : public IGenerator {
private:
    BSPTreePartitioner space_divider;
    BuildingTemplateManager templates;
    ZoningCalculator land_use;

public:
    void generate(ChunkData& chunk, GenerationContext& context) override {
        // Place bâtiments selon zoning et templates
        // Input: terrain, routes, zone type (urbain/rural/industriel)
        // Output: bâtiments positionnés avec types
    }
};
```

#### DestructionSystem
```cpp
class DestructionSystem : public IGenerator {
private:
    DamagePatternLibrary patterns;
    HistoricalEventProcessor events;

public:
    void generate(ChunkData& chunk, GenerationContext& context) override {
        // Applique destruction selon contexte historique
        // Input: bâtiments, événements historiques (guerra, bombardements)
        // Output: ruines, cratères, infrastructures endommagées
    }
};
```

### Growth Engine Modulaire

#### PopulationGrowthCalculator
```cpp
class PopulationGrowthCalculator {
private:
    DemographicModel demographics;
    EconomicFactors economy;

public:
    float calculateGrowthRate(const RegionData& region, float time_delta) {
        // Calcule croissance population selon facteurs
        // Input: population actuelle, économie, sécurité
        // Output: taux de croissance (peut être négatif)
    }
};
```

#### LandValueCalculator
```cpp
class LandValueCalculator {
private:
    ProximityAnalyzer proximity;
    InfrastructureEvaluator infrastructure;
    SafetyAssessment security;

public:
    float calculateValue(const TileCoordinate& tile, const RegionContext& context) {
        // Évalue valeur foncière d'une tile
        // Input: position, infrastructure proche, sécurité
        // Output: valeur relative (0.0-1.0)
    }
};
```

#### DemandCalculator
```cpp
class DemandCalculator {
private:
    ResidentialDemand residential;
    CommercialDemand commercial;
    IndustrialDemand industrial;

public:
    DemandProfile calculateDemand(const RegionData& region) {
        // Calcule besoins en construction par type
        // Input: population, économie, infrastructure existante
        // Output: demande résidentiel/commercial/industriel
    }
};
```

#### ExpansionSiteFinder
```cpp
class ExpansionSiteFinder {
private:
    SuitabilityAnalyzer suitability;
    ConstraintChecker constraints;

public:
    vector<ExpansionSite> findSites(const DemandProfile& demand, const RegionData& region) {
        // Trouve emplacements optimaux pour expansion
        // Input: demande calculée, terrain disponible
        // Output: sites classés par priorité
    }
};
```

#### DevelopmentExecutor
```cpp
class DevelopmentExecutor {
private:
    ConstructionPlanner planner;
    ResourceRequirementCalculator resources;

public:
    bool executeDevelopment(const ExpansionSite& site, const DevelopmentPlan& plan) {
        // Exécute construction selon plan et ressources
        // Input: site choisi, plan de développement
        // Output: succès/échec + modifications terrain
    }
};
```

### Pipeline de Génération

```cpp
class ChunkGenerationPipeline {
private:
    vector<unique_ptr<IGenerator>> generators;

public:
    void generateChunk(ChunkData& chunk, const GenerationContext& context) {
        // Pipeline séquentiel :
        // 1. TerrainGenerator (base)
        // 2. RoadNetworkGenerator (infrastructure)
        // 3. BuildingLayoutGenerator (structures)
        // 4. DestructionSystem (histoire)

        for (auto& generator : generators) {
            if (generator->canGenerate(context)) {
                generator->generate(chunk, context);
                generator->validate(chunk);
            }
        }
    }
};
```

### Avantages Architecture

**Pour l'IA** :
- **Interfaces claires** : Chaque module a input/output définis
- **Testabilité** : Chaque générateur testable indépendamment
- **Évolution** : Nouveaux générateurs ajoutables facilement
- **Debug** : Isolation des problèmes par module

**Pour le Gameplay** :
- **Cohérence** : Règles de génération explicites
- **Flexibilité** : Modules activables selon contexte
- **Performance** : Génération à la demande par module
- **Continuité** : Coordination entre chunks via GenerationContext

### Contexte de Génération

```cpp
struct GenerationContext {
    uint32_t global_seed;
    ChunkCoordinate position;
    RegionType region_type;      // Urbain, rural, industriel
    HistoricalEvents events;     // Guerres, bombardements passés
    NeighborChunkData neighbors; // Chunks déjà générés
    CompanyInfluences companies; // Companies dominantes région
    StatePolicy policies;        // Politiques état local
    GeographicalBias bias;       // Modificateurs région (+montagne, -marécage)
    FixedZones fixed_zones;      // Zones prédéfinies (Tchernobyl, etc.)
};
```

## Système de Génération Procédurale par Points avec Tendances Régionales

### Vision Globale

#### Principe Fondamental
Chaque tile de la carte mondiale est générée selon un **budget de points** qui détermine ce qui s'y trouve. Les éléments ont des valeurs positives (ressources, opportunités) ou négatives (dangers, contraintes). La génération combine des éléments pour atteindre exactement le score cible, créant automatiquement un équilibre risque/récompense.

#### Innovation Clé : Tendances Régionales
Au-dessus du système de points, des **zones géographiques** influencent la probabilité d'apparition de certains éléments, créant des régions spécialisées réalistes : bassins pétroliers, zones minières historiques, régions forestières, zones post-industrielles.

### Anatomie d'une Tile

#### Budget de Points
Chaque tile reçoit un **score cible** (-10 à +10) qui détermine son "potentiel" :
- **Scores positifs** : Zones riches mais souvent avec contraintes
- **Score zéro** : Terrain équilibré ou neutre
- **Scores négatifs** : Zones dangereuses ou difficiles

#### Philosophie de Design
- **Équilibre automatique** : Richesse compensée par contraintes
- **Variété émergente** : Mêmes éléments, contextes différents
- **Cohérence géographique** : Éléments appropriés aux régions via tendances régionales
- **Découverte progressive** : Certains éléments cachés nécessitent exploration
- **Spécialisation territoriale** : Régions développent identités distinctes

## Typologie des Éléments

### Ressources Naturelles (Positives)
**Minerais de Base**
- Fer = +1 point
- Cuivre = +1 point
- Charbon = +1 point
- Plomb = +1 point

**Minerais Précieux**
- Bauxite = +2 points
- Étain = +2 points
- Titane = +3 points
- Magnésium = +2 points
- Tungstène = +3 points
- Chrome = +2 points
- Antimoine = +2 points

**Métaux Précieux**
- Gold = +4 points
- Platine = +5 points
- Silver = +3 points
- Iridium = +6 points

**Ressources Énergétiques & Chimiques**
- Lithium = +4 points
- Thorium = +3 points
- Soufre = +1 point
- Phosphore = +1 point
- Natron = +1 point

**Ressources Organiques**
- Bois dur = +1 point
- Terre noire = +1 point
- Zinc = +2 points

**Ressources Énergétiques**
- Pétrole = +3 points
- Gaz naturel = +2 points
- Uranium = +5 points

**Ressources Organiques**
- Forêt dense = +1 point
- Zone de chasse = +1 point
- Eau douce = +1 point

### Vestiges et Structures (Variables)
**Vestiges Anciens**
- Ruines antiques = +1 point (matériaux récupérables)
- Ruines médiévales = +1 point
- Vestiges industriels = +1 point (scrap métallique)

**Ruines Inutiles**
- Ruines effondrées = -1 point (obstruction)
- Décombres = -1 point
- Structures instables = -2 points

### Contraintes Géologiques (Négatives)
**Terrain Difficile**
- Marécages = -1 point
- Terrain rocailleux = -1 point
- Pentes abruptes = -2 points
- Instabilité géologique = -3 points

**Contaminations Historiques**
- Pollution minière ancienne = -2 points
- Contamination chimique = -2 points
- Pollution radioactive = -3 points
- Radiations intenses = -5 points

### Features Géologiques Spéciales
**Formations Naturelles**
- Grottes = +1 point (abri, ressources cachées)
- Sources thermales = +1 point
- Gisements de sel = +1 point
- Météorite = +5 points (métaux rares et précieux concentrés)
- Forêt pétrifiée = +2 points (silice, attraction géologique)
- Geysers d'eau chaude = +2 points (énergie, tourisme thermal)
- Cheminées de fées = +1 point (formation érosive unique)
- Arche naturelle = +1 point (pont rocheux, point de repère)
- Pilier rocheux isolé = +1 point (formation érosive, nidification)
- Mesa = +1 point (plateau isolé, position défensive)

**Features Géographiques Aquatiques**
- Lac = +1 point (eau douce, transport)
- Lac avec île centrale = +2 points (position défensive, mystère)
- Étang = +1 point (ressource eau locale)
- Marécage = 0 points (ressources +2, difficultés terrain -2)
- Delta fluvial = +2 points (terres fertiles, voies navigation)
- Fjord = +1 point (port naturel protégé)
- Cascade = +1 point (énergie hydraulique)
- Geyser = +2 points (énergie géothermique, attraction)
- Source de rivière = +2 points (eau pure, position stratégique)
- Île fluviale = +1 point (position défensive sur cours d'eau)
- Archipel = +3 points (multiple positions défensives, pêche)
- Atoll = +2 points (lagon protégé, récif corallien)
- Crique isolée = +2 points (port caché, protection tempêtes)
- Crique avec îlot = +3 points (mouillage protégé, mystère)
- Skerry = +1 point (îlot rocheux, navigation difficile)
- Tombolo = +2 points (île reliée par banc de sable)
- Lac asséché = 0 points (sel +2, aridité -2)

**Features Géographiques Terrestres**
- Canyon = 0 points (protection +2, accès difficile -2)
- Plateau élevé = +1 point (position dominante, vents)
- Vallée encaissée = +1 point (protection, microclimat)
- Plaine fertile = +2 points (agriculture excellente)
- Steppe = 0 points (pâturages +1, aridité -1)
- Dunes mobiles = -1 point (instabilité terrain)
- Oasis = +3 points (eau précieuse en zone aride)
- Col de montagne = +1 point (passage stratégique)
- Cirque glaciaire = +1 point (amphithéâtre naturel)
- Gorge = 0 points (passage étroit +1, accès limité -1)
- Glacier = +1 point (réserve d'eau douce, terrain difficile)
- Colline marécageuse = 0 points (position élevée +1, humidité -1)
- Caldeira = +3 points (sol volcanique fertile, géothermie)
- Isthme = +2 points (contrôle liaison terrestre)
- Vallée isolée = +2 points (protection totale, autarcie)
- Montagne isolée = +1 point (point de repère, position dominante)
- Cratère géant = +4 points (formation spectaculaire, minerais)
- Plateau désertique = 0 points (position élevée +1, aridité -1)
- Badlands = -1 point (érosion sévère, sol pauvre)
- Oasis de glace = +2 points (eau en zone arctique)
- Gouffre = -2 points (danger naturel, accès souterrain)

**Features Géographiques Côtières**
- Baie protégée = +2 points (port naturel excellent)
- Falaises = 0 points (défense +2, accès -2)
- Plage de sable = +1 point (débarquement, tourisme)
- Récif corallien = +1 point (protection naturelle)
- Estuaire = +2 points (commerce fluvial-maritime)
- Presqu'île = +1 point (position défensive)
- Détroit = +2 points (contrôle passage maritime)
- Île côtière = +2 points (avant-poste maritime, défense)
- Falaises côtières = +1 point (défense naturelle, position élevée)
- Rift côtier = +1 point (formation géologique, accès limité)

**Features Industrielles Historiques**
- Terikon = 0 points (pollution -2, scrap +2) [voir exemple détaillé section Score -1]
- Ville fantôme = -1 point (infrastructure +2, dangers -3)
- Usine textile abandonnée = 0 points (machinerie +2, amiante -2)
- Centrale thermique désaffectée = -1 point (infrastructure +3, pollution -4)
- Aciérie en ruines = +1 point (scrap métallique massif +3, contamination -2)
- Raffinerie abandonnée = -2 points (infrastructure +2, pollution toxique -4)
- Complexe chimique = -3 points (équipements +3, contamination sévère -6)
- Moulin industriel = +1 point (machinerie +2, roue hydraulique +1, délabrement -2)
- Briqueterie abandonnée = +1 point (argile locale +2, fours +1, fumées -2)
- Verrerie en ruines = +1 point (sable siliceux +2, équipements +1, débris -2)
- Papeterie désaffectée = 0 points (machinerie +2, pollution rivière -2)
- Distillerie illégale = +1 point (équipements cuivre +2, isolation +1, réputation -2)
- Scierie abandonnée = +1 point (outillage +3, bois stocké +1, rouille -3)

**Cimetières de Véhicules**
- Cimetière de tanks = +2 points (scrap métallique militaire)
- Cimetière de voitures = +1 point (scrap métallique civil)
- Cimetière d'avions = +3 points (alliages aviation rares)
- Déchèterie à ciel ouvert = -1 point (pollution -3, scrap +2)
- Épave de train = +2 points (acier massif +3, accident historique -1)
- Cimetière de bateaux = +2 points (acier naval +3, corrosion -1)
- Dépotoir électronique = +1 point (métaux rares +3, toxicité -2)
- Station-service abandonnée = 0 points (cuves enterrées +1, contamination sol -1)

**Sites Militaires Abandonnés**
- Base Cold War abandonnée = +1 point (bunkers +3, contamination -2)
- Zone de guerre ancienne (WW1) = 0 points (munitions dangereuses -2, scrap +2)
- Bunker Nazi enterré = +2 points (fortifications +3, histoire -1)
- Site de lancement de missiles = +3 points (infrastructure +4, contamination -1)
- Champ de mines inactif = -2 points (danger résiduel -3, déminage +1)
- Base navale abandonnée = +2 points (installations portuaires +3, rouille -1)
- Aérodrome militaire = +2 points (piste +3, hangars +1, carburant résiduel -2)
- Dépôt de munitions = -1 point (explosifs dangereux -4, métaux +3)
- Radar abandonné = +1 point (équipements électroniques +2, position élevée +1, obsolescence -2)

**Sites Culturels & Naturels**
- Tribu indigène = +2 points (connaissances locales, guides)
- Village abandonné = 0 points (bâtiments +1, isolement -1)
- Monastère en ruines = +1 point (archives historiques, position élevée)
- Site archéologique = +2 points (artefacts, valeur scientifique)
- Phare abandonné = +1 point (position côtière stratégique)
- Château fort = +2 points (position défensive, pierre de taille)
- Observatoire astronomique = +1 point (optiques précises, site isolé)
- Cimetière historique = +1 point (patrimoine, position centrale)
- Université abandonnée = +2 points (laboratoires +3, bibliothèques +1, délabrement -2)
- Hôpital en ruines = 0 points (équipements médicaux +2, contamination -2)
- Prison désaffectée = +1 point (sécurité +3, réputation -2)
- Cathédrale gothique = +2 points (architecture +3, tourisme +1, entretien -2)
- Moulin à vent historique = +1 point (mécanique ancienne +2, position ventée +1, obsolescence -2)
- Ferme collective abandonnée = 0 points (hangars +2, terres +1, délabrement -3)

**Anomalies Géologiques**
- Formations cristallines = +2 points
- Dépôts d'argile rare = +2 points
- Sables siliceux = +1 point
- Gisements de quartz = +2 points (pour optiques laser)
- Filons de diamant = +4 points (outils de précision, optiques industrielles)
- Pierres précieuses diverses = +2 points (technologie laser, électronique)
- Geysers de méthane = +2 points (énergie, mais risque d'explosion)
- Dôme de sel = +3 points (stockage souterrain, ressource chimique)
- Tourbière = +1 point (combustible organique, préservation)
- Coulée de lave ancienne = +2 points (roches volcaniques, terres fertiles)
- Cratère d'impact = +4 points (métaux rares, formation géologique unique)
- Faille géologique active = -1 point (instabilité +0, minerais exposés +1)
- Karst = 0 points (grottes +2, effondrements -2)
- Gisement d'ambre = +3 points (résine fossile, inclusions scientifiques)
- Schiste bitumineux = +2 points (hydrocarbures non-conventionnels)
- Doline = -1 point (effondrement naturel, accès souterrain)
- Entrée de grotte = +2 points (exploration, abri naturel)
- Grotte de surface = +1 point (abri visible, stockage)
- Puits de l'enfer = -3 points (gouffre profond, émanations dangereuses)

**Biomes & Écosystèmes**
- Forêt tempérée = +1 point (bois, biodiversité)
- Forêt boréale = +1 point (conifères, sols acides)
- Forêt tropicale = +2 points (biodiversité, bois exotiques)
- Prairie = +1 point (agriculture, élevage)
- Savane = 0 points (pâturages +1, sécheresse -1)
- Toundra = 0 points (permafrost +0, froid extrême -1, isolation +1)
- Taïga = +1 point (bois massif, fourrures)
- Mangrove = +2 points (protection côtière, écosystème unique)
- Désert chaud = -1 point (aridité -2, minéraux exposés +1)
- Désert froid = -1 point (froid -1, isolation +0)
- Zone alpine = 0 points (position élevée +2, accès difficile -2)
- Marais salant = +1 point (sel naturel, difficultés terrain)
- Lande = 0 points (sol pauvre -1, tourbe +1)
- Maquis méditerranéen = +1 point (plantes aromatiques, feux -1)
- Steppe herbacée = 0 points (élevage +1, vents forts -1)
- Zone humide = +1 point (filtration naturelle, biodiversité)
- Plaine inondable = 0 points (fertilité +2, inondations -2)
- Plateau continental = +1 point (pêche, position maritime)
- Forêt mixte = +1 point (diversité bois, équilibre écologique)
- Chaparral = 0 points (résistance feu +1, broussailles -1)
- Pampa = +1 point (terres fertiles, vents constants)
- Jungle équatoriale = +2 points (ressources exotiques +3, accessibilité -1)
- Forêt de nuages = +2 points (humidité constante, espèces rares)
- Désert de sel = -1 point (hostile -3, extraction sel +2)
- Banquise = -2 points (isolation extrême -3, pêche arctique +1)
- Récif barrière = +3 points (protection +2, biodiversité marine +2, navigation -1)
- Oasis de montagne = +3 points (eau rare +2, position stratégique +2, accès -1)
- Vallée glaciaire = +1 point (sol fertile +2, climat rigoureux -1)

**Éléments Climatiques & Météorologiques**
- Zone de tornades = -2 points (danger -3, énergie éolienne +1)
- Couloir de vents = +1 point (énergie éolienne constante)
- Zone de brouillards = -1 point (visibilité réduite -2, humidité +1)
- Micro-climat chaud = +1 point (agriculture prolongée)
- Poche de froid = -1 point (gel permanent, préservation naturelle)
- Zone de calme plat = 0 points (navigation difficile -1, tranquillité +1)

**Éléments Anthropiques Modernes**
- Autoroute abandonnée = +1 point (bitume +2, pollution -1)
- Pont autoroutier = +2 points (passage stratégique +3, entretien -1)
- Tunnel ferroviaire = +2 points (passage montagne +3, maintenance -1)
- Ligne haute tension = +1 point (infrastructure électrique +2, danger -1)
- Éolienne cassée = 0 points (pièces mécaniques +2, encombrement -2)
- Antenne relais = +1 point (communication +2, position élevée +1, obsolescence -2)
- Pipeline enterré = +1 point (infrastructure +2, risque fuite -1)
- Décharge contrôlée = -1 point (récupération +2, pollution -3)

**Éléments Mystérieux & Rares**
- Cercle de pierres = +2 points (mystère historique, point de repère)
- Monolithe isolé = +3 points (formation inexpliquée, attraction)
- Zone de silence radio = -1 point (phénomène inexpliqué -2, isolation +1)
- Anomalie magnétique = +2 points (minerais rares +3, instruments perturbés -1)
- Source radioactive naturelle = -2 points (danger -4, recherche scientifique +2)

## Système de Découverte

### Éléments Visibles
Détectables lors de la génération du chunk :

**Géologiques Apparents**
- Relief et formations rocheuses
- Cours d'eau et sources
- Couverture forestière
- Ruines en surface

**Indices Subtils**
- Végétation anormale (contamination)
- Coloration du sol (minerais)
- Formations géologiques particulières

### Éléments Cachés
Nécessitent exploration spécialisée :

**Niveau 1 - Prospection Géologique**
- Gisements souterrains (fer, cuivre, charbon)
- Nappes d'hydrocarbures
- Eaux souterraines
- Cavités souterraines

**Niveau 2 - Exploration Magnétométrique**
- Structures métalliques enfouies
- Monolithes et anomalies magnétiques
- Épaves enterrées profondément
- Formations métalliques naturelles

**Niveau 3 - Analyse Chimique/Radiologique**
- Contaminations invisibles
- Gisements radioactifs
- Pollutions chimiques anciennes
- Zones de décontamination nécessaire

### Système de Découverte Stratifié

#### Couche Visible
**Reconnaissance Standard** : Relief, végétation, structures en surface, cours d'eau
**Indices Subtils** : Végétation anormale suggérant contamination, coloration du sol indiquant minerais

#### Couche Cachée - Niveau 1
**Véhicule Géologique** : Révèle gisements souterrains, nappes d'hydrocarbures, eaux profondes
- Portée : 3×3 chunks depuis position
- Temps : 2-5 minutes selon profondeur

#### Couche Cachée - Niveau 2
**Véhicule Magnétométrique** : Détecte anomalies magnétiques, structures métalliques enfouies, monolithes
- Portée : 1×1 chunk haute précision
- Temps : 1-3 minutes

#### Couche Cachée - Niveau 3
**Véhicule NRBC** : Révèle contaminations invisibles, radiations, pollutions chimiques
- Sécurité : Protection équipage
- Temps : 3-8 minutes selon danger

## Tendances Régionales

### Concept de Spécialisation Géographique
Des **zones d'influence** superposées à la carte modifient les probabilités d'apparition des éléments, créant des régions avec des "personnalités" distinctes basées sur la géographie et l'histoire réelles.

### Types de Régions

#### Bassins Pétroliers (Golfe Persique, Mer du Nord)
- Pétrole : probabilité ×5
- Gaz naturel : probabilité ×3
- Terrains marécageux : ×2
- Accès maritime naturel

#### Zones Minières Historiques (Ruhr, Donbass, Oural)
- Fer et charbon : probabilité ×3-4
- Teritons : probabilité ×8 (très caractéristique)
- Vestiges industriels : ×2
- Pollution minière héritée : ×3

#### Régions Forestières/Montagneuses (Alpes, Carpates, Taïga)
- Forêt dense et chasse : probabilité ×3-4
- Grottes et sources : ×2-3
- Pentes abruptes : ×2
- Instabilité géologique : ×1.5

#### Zones Post-Nucléaires (Tchernobyl élargi, sites d'essais)
- Pollution radioactive : probabilité ×10
- Uranium accessible : ×3
- Structures abandonnées : ×3
- Végétation mutante caractéristique

#### Régions Côtières (Littoraux, deltas)
- Accès maritime : bonus naturel
- Sédiments et argiles : ×2
- Zones humides : ×1.5
- Érosion côtière : contrainte spécifique

### Zones de Transition
**Transition Progressive** : L'influence régionale diminue avec la distance du centre, créant des zones mixtes réalistes
**Superposition** : Plusieurs influences peuvent se combiner (montagne + ancien bassin minier = métaux précieux en terrain difficile)

## Distribution et Équilibrage

### Répartition des Scores (Distribution en Cloche)
- **30%** des tiles à score 0 (terrain neutre de base)
- **40%** des tiles à scores ±1 à ±3 (variations courantes)
- **20%** des tiles à scores ±4 à ±6 (zones remarquables)
- **8%** des tiles à scores ±7 à ±8 (zones exceptionnelles)
- **2%** des tiles à scores extrêmes ±9 à ±10 (zones légendaires)

### Biais Géographiques Globaux
- **Zones montagneuses** : +1 point (concentration minérale naturelle)
- **Zones côtières** : +0.5 point (accès et sédiments)
- **Zones industrielles historiques** : -1 point (pollution héritée)

### Sites Fixes Historiques
**Lieux Emblématiques** conservent leurs caractéristiques réelles :
- Tchernobyl : Score fixe -10 (radiations massives, zone morte)
- Golfe Persique : Score fixe +8 (pétrole abondant, infrastructure)
- Sibérie diamantifère : Score fixe +9 (diamants + or + difficultés extrêmes)
- Désert d'Atacama : Score fixe -7 (aridité extrême, minerais rares)
- Région Ruhr : Score fixe +3 (richesse industrielle)

## Exemples de Génération

### Tile Score +3
**Combinaisons Possibles :**
- Pétrole (+3) = Gisement pur
- Fer (+1) + Bauxite (+2) = Double gisement
- Cuivre (+1) + Grottes (+1) + Ruines antiques (+1) = Complexe minier ancien
- Uranium (+5) + Contamination (-2) = Gisement dangereux

### Tile Score 0
**Combinaisons Possibles :**
- Rien = Terrain neutre standard
- Fer (+1) + Ruines effondrées (-1) = Gisement obstrué
- Forêt (+1) + Marécages (-1) = Forêt marécageuse
- Vestiges industriels (+1) + Pollution minière (-1) = Friche industrielle

### Tile Score -3
**Combinaisons Possibles :**
- Pollution radioactive (-3) = Zone contaminée simple
- Instabilité géologique (-3) = Zone dangereuse
- Contamination (-2) + Ruines effondrées (-1) = Site industriel pollué
- Uranium (+5) + Radiations (-5) + Pentes abruptes (-2) + Grottes (+1) = Mine uranium abandonnée

## Features de Chunk Intégrées

### Features Géologiques Majeures

#### Terikon (Score -1)
- **Composition** : Vestiges industriels (+1) + Pollution minière (-2)
- **Visible** : Colline artificielle caractéristique
- **Caché** : Traces de métaux rares dans les déblais
- **Régional** : ×8 probabilité en zones ex-minières
- **Gameplay** : Déblaiement révèle ressources enfouies

#### Vallée Fluviale (Score +2)
- **Composition** : Eau douce (+1) + Sédiments (+1)
- **Visible** : Relief et écoulement évidents
- **Caché** : Dépôts alluvionnaires précieux
- **Gameplay** : Dragage révèle minerais transportés

### Features de Vestiges

#### Complexe Industriel Abandonné (Score 0)
- **Composition** : Scrap (+1) + Pollution (-2) + Fer résiduel (+1)
- **Visible** : Structures industrielles en ruine
- **Caché** : Filons non exploités, équipement enterré
- **Régional** : Fréquent dans zones ex-industrielles
- **Gameplay** : Décontamination + fouilles révèlent trésors

### Features d'Anomalies

#### Site d'Anomalie Magnétique (Score +2)
- **Composition** : Monolithe mystérieux (+3) + Instabilité (-1)
- **Visible** : Formations géologiques étranges
- **Caché** : Structure métallique d'origine inconnue
- **Régional** : Très rare, distribution aléatoire
- **Gameplay** : Exploration magnétométrique révèle secrets

## Évolution Temporelle

### Actions Joueur Modifient Scores
- **Décontamination** : -2 → +1 avec technologie appropriée
- **Exploitation** : +3 → +1 après épuisement partiel
- **Pollution industrielle** : +2 → -1 après accident
- **Nettoyage ruines** : -1 → 0 après déblaiement

### Processus Naturels
- **Régénération forestière** : +0.1 point/an en zone tempérée
- **Érosion contamination** : -0.05 point/an (très lent)
- **Sédimentation fluviale** : Peut révéler/cacher ressources
- **Instabilité géologique** : Évolution selon activité sismique

## Gameplay Émergent

### Spécialisation Économique Naturelle
**Bassins Pétroliers** deviennent naturellement centres énergétiques
**Anciennes Zones Minières** évoluent vers centres sidérurgiques
**Régions Forestières** se spécialisent dans construction bois et chasse

### Stratégie Territoriale
**Contrôle Régional** : Certaines régions deviennent stratégiquement vitales
**Exploration Ciblée** : "Je cherche du fer → direction les montagnes ex-minières"
**Défis Spécialisés** : Chaque région impose ses contraintes techniques

### Reconnaissance et Apprentissage
**Patterns Visuels** : Joueurs apprennent à reconnaître les indices régionaux
**Teritons** = Zone ex-minière probable = Fer mais pollution
**Végétation anormale** = Contamination = Danger mais ressources rares potentielles

### Équilibre Risque/Récompense Automatique
**Zones Riches** compensées par contraintes proportionnelles
**Zones Sûres** moins rewarding mais accessibles
**Zones Extrêmes** très dangereuses mais très lucratives

## Cohérence et Réalisme

### Géographie Logique
Reproduit les patterns géologiques et historiques réels : les bassins pétroliers sont où ils devraient être, les zones minières correspondent aux vraies formations géologiques.

### Histoire Intégrée
Chaque région raconte son histoire through les éléments présents : pollution industrielle héritée, vestiges d'exploitation, contaminations d'accidents passés.

### Évolution Temporelle
Actions du joueur modifient progressivement les caractéristiques locales : décontamination, épuisement de gisements, accidents industriels.

**Objectif Final** : Créer un monde où chaque tile a une identité unique déterminée par sa géographie, son histoire et son équilibre naturel risque/récompense, générant organiquement des choix stratégiques et des opportunités d'exploration meaningfuls.