aissia/docs/02-systems/map-system.md
StillHammer ba42b6d9c7 Update CDC with hybrid architecture (WarFactory + multi-target)
- Add hybrid deployment modes: local_dev (MVP) and production_pwa (optional)
- Integrate WarFactory engine reuse with hot-reload 0.4ms
- Define multi-target compilation strategy (DLL/SO/WASM)
- Detail both deployment modes with cost analysis
- Add progressive roadmap: Phase 1 (local), Phase 2 (POC WASM), Phase 3 (cloud)
- Budget clarified: $10-20/mois (local) vs $13-25/mois (cloud)
- Document open questions for technical validation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-27 11:49:09 +08:00

40 KiB
Raw Blame History

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) :

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) :

// 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

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 :

// 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

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

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

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

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

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

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

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

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

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

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

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

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.