# World Generation Realist Module

**Responsabilité**: Génération procédurale géologiquement réaliste avec architecture Phase/Step.

## Description

Ce module implémente un système de génération procédurale basé sur une architecture Phase/Step modulaire. Conçu pour implémenter le système 8-phases défini dans `gameData/WorldGeneration/Regular_world.json` avec Phase 0 d'initialisation.

## Architecture

### Interfaces Core
- **IWorldGenerationFunction**: Interface unique pour toutes les fonctions de génération
- **WorldGenerationFunctionFactory**: Factory pour créer les fonctions par nom
- **WorldGenerationOrchestrator**: Orchestrateur principal des phases

### Systèmes Implémentés

#### Phase 0: World Initialization
- **InitializeWorldTerrainFunction**: Configuration initiale du terrain (-100°C, -30000m)
- **InitializePlanetaryCoreFunction**: Noyau planétaire avec composition réaliste (1.94e21 tonnes)

#### Phase 1: Planetary Accretion
- **MeteoriteImpactGenerationFunction**: Génération de météorites avec MeteoriteFactory
- **ImpactEffectsApplicationFunction**: Application des effets physiques (cratères, chaleur, dépôts)

### Systèmes Techniques

#### MeteoriteFactory (Pattern Pool)
- **Template Pool**: Pré-génération des météorites types
- **Copy + Modify**: Clone des templates avec modifications de taille
- **Feed/Pull Pattern**: Configuration → Génération → Clonage

#### RandomGenerator Singleton
- **Centralisé**: `RandomGenerator::getInstance()` partout
- **Seedable**: Reproductibilité pour tests et debug
- **Performance**: Un seul générateur MT19937

#### Échelle Réaliste
- **Noyau**: 1.94e21 tonnes (échelle terrestre réelle)
- **Météorites**: Jusqu'à 1e13 tonnes (cohérent avec meteorites.json)
- **Types**: uint64_t pour gameplay, __uint128_t pour noyau planétaire

### Conception
- **Phase**: Groupe logique d'étapes avec cycles temporels cohérents
- **Step**: Opération atomique de génération (IWorldGenerationFunction)
- **Producer/Consumer**: Séparation génération ↔ application des effets
- **Modularité**: Chaque fonction isolée et testable

## Contraintes Modules
- **200-300 lignes max** par implémentation
- **JSON-only communication** via IDataNode
- **OBLIGATOIRE RandomGenerator**: Toujours utiliser `RandomGenerator::getInstance()` - JAMAIS `std::random_device` ou `std::mt19937` locaux
- **Autonomous builds**: `cd src/modules/world-generation-realist/ && cmake .`
- **Hot-reload compatible**: State serialization requise

## Build System

### Commands
```bash
cd src/modules/world-generation-realist/
cmake .                                    # Configuration autonome
# Note: Aucune library créée tant qu'il n'y a pas d'implémentations
```

### Dependencies
- `nlohmann/json`: Configuration JSON processing
- `IDataNode`: Interface configuration depuis core/
- `C++20`: Features modernes

### Structure Prévue
```
include/
├── IWorldGenerationPhase.h       # Interface phase
├── IWorldGenerationStep.h        # Interface step
└── (futures implémentations...)
```

---

**État actuel**: Interfaces définies, prêt pour implémentations concrètes.