- 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>
40 KiB
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.