warfactoryracine/docs/architecture-technique.md
StillHammer 2e0a35cf1f Initial Warfactory documentation with complete map system
- Comprehensive map system with point-based procedural generation
- Regional tendencies system for geographical specialization
- 10-engine autonomous architecture documentation
- Vehicle design system with 3-layer structure
- Technology trees with breakthrough mechanics
- Economic system with company features and cultural doctrines
- Complete metrics and analytics system
- Military mechanics and AI systems
2025-09-18 13:25:15 +08:00

761 lines
27 KiB
Markdown

# Architecture Technique
## Vision Globale
**Concept** : RTS/4X hybride hommageant l'Ukraine avec système industriel complexe (Factorio-like), simulation militaire réaliste et gestion géopolitique.
**Innovation clé** : Architecture multi-serveurs modulaire permettant scaling horizontal et développement parallèle par IA.
## Architecture Système
### Structure Modulaire Multi-Serveurs
```
┌─────────────────────┐
│ Central Coordinator │ ← Event ordering & health monitoring
└─────────────────────┘
┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐
│ │ │ │ │ │ │ │ │ │ │
┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐
│Fact │ │Logic│ │Econ │ │Desig│ │Comp │ │ Map │ │Comb │ │Oper │ │Intel│ │Event│
│ory │ │istic│ │omy │ │ner │ │any │ │ │ at │ │ation│ │ li │ │
└─────┘ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘
│ │ │ │ │ │ │ │ │ │
└───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┘
│ │ │ │ │ │ │ │
┌─────────────────────────────────────────────────────────────┐
│ Clients │ ← Dumb terminals (rendering only)
└─────────────────────────────────────────────────────────────┘
```
## Engines Autonomes
### Vue d'ensemble Engines
L'architecture repose sur 10 engines autonomes communicant via APIs standardisées, chacun responsable d'un domaine spécifique du gameplay.
### Factory Engine
- **Responsabilité** : Systèmes Factorio du joueur uniquement
- **Scope** : Mining, production, assemblage, infrastructures joueur
- **Autonomie** : Simulation complète des usines joueur
- **Communication** : Export données production vers Logistic Engine
### Logistic Engine
- **Responsabilité** : Flux physiques et virtuels de ressources
- **Scope** : Transport, supply chains, FOBs militaires, distribution
- **Autonomie** : Gestion complète des mouvements de biens
- **Communication** : Interface avec Factory, Economy et Combat Engines
### Economy Engine
- **Responsabilité** : Usines IA, marchés, prix dynamiques
- **Scope** : Productions IA, company behaviors, marchés segmentés
- **Autonomie** : Simulation économique globale indépendante
- **Communication** : Prix/demandes vers tous engines consommateurs
### Designer System Engine
- **Responsabilité** : Conception IA de véhicules et équipements
- **Scope** : Algorithmes design, validation, recherche technologique
- **Autonomie** : Processus design distribué, cultural blueprints
- **Communication** : Nouveaux designs vers Economy et Combat Engines
- **Spécialité** : Inclut système de recherche dual et breakthroughs
### Company & State Engine
- **Responsabilité** : Entités (companies, états), diplomatie
- **Scope** : Features companies, relations, politiques commerciales
- **Autonomie** : Comportements entités, évolution features
- **Communication** : Commandes vers Economy, restrictions vers tous
### Map Engine
- **Responsabilité** : Gestion carte, streaming, génération
- **Scope** : Chunks, FOW, navigation, terrain procedural
- **Autonomie** : Génération à la demande, optimisation mémoire
- **Communication** : Données terrain vers Combat et Factory Engines
### Combat Engine
- **Responsabilité** : Batailles temps réel, IA militaire
- **Scope** : Unités, doctrines, combats locaux
- **Autonomie** : Simulations tactiques indépendantes
- **Communication** : Résultats vers Map et Logistic Engines
### Operation Engine
- **Responsabilité** : Opérations militaires, généraux IA
- **Scope** : Stratégie macro, AI decision making, planning
- **Autonomie** : Prise de décision stratégique autonome
- **Communication** : Ordres vers Combat Engine, demandes vers Logistic
### Intelligence Engine
- **Responsabilité** : Reconnaissance, espionnage, fog of war
- **Scope** : Satellites, intel gathering, information warfare
- **Autonomie** : Collecte et analyse renseignements
- **Communication** : Intel vers Operation et Company Engines
### Event Engine
- **Responsabilité** : Événements aléatoires, crises, disruptions
- **Scope** : Wars, breakthroughs, economic crashes, endgame crisis
- **Autonomie** : Déclenchement et gestion événements contextuels
- **Communication** : Trigger events vers engines concernés
## Architecture Communication Inter-Engines
### Stack Technique
- **Redis Pub/Sub** : Communication asynchrone événementielle
- **HTTP REST** : Queries synchrones et commands
- **JSON** : Format d'échange uniforme
- **TCP** : Reliability pour données critiques
### Patterns Redis par Engine
#### Factory Engine
**PUBLISHES** :
```
factory:production_complete → Economy, Logistic
factory:shutdown → Logistic, Map
factory:resource_request → Economy, Logistic
factory:blueprint_test → Designer
```
**SUBSCRIBES** :
```
economy:price_update ← Economy
logistic:resource_available ← Logistic
designer:blueprint_ready ← Designer
```
#### Economy Engine
**PUBLISHES** :
```
economy:price_update → Factory, Combat, Logistic
economy:market_crash → ALL
economy:company_bankrupt → Company&State, Map
economy:resource_shortage → Factory, Logistic
```
**SUBSCRIBES** :
```
factory:production_complete ← Factory
combat:battle_result ← Combat
logistic:transport_complete ← Logistic
company:order_placed ← Company&State
```
#### Combat Engine
**PUBLISHES** :
```
combat:battle_start → Economy, Map, Intelligence
combat:battle_result → Economy, Map, Intelligence, Operation
combat:unit_destroyed → Economy, Logistic
combat:resource_consumed → Economy, Logistic
```
**SUBSCRIBES** :
```
economy:price_update ← Economy
logistic:supply_delivered ← Logistic
operation:battle_order ← Operation
intelligence:enemy_spotted ← Intelligence
```
#### Map Engine
**PUBLISHES** :
```
map:territory_change → ALL
map:resource_discovered → Economy, Factory
map:terrain_updated → Combat, Logistic
map:fog_revealed → Intelligence, Operation
```
**SUBSCRIBES** :
```
factory:shutdown ← Factory
combat:battle_result ← Combat
intelligence:recon_complete ← Intelligence
```
#### Logistic Engine
**PUBLISHES** :
```
logistic:transport_complete → Economy, Factory
logistic:supply_delivered → Combat
logistic:resource_available → Factory
logistic:convoy_attacked → Combat, Economy
```
**SUBSCRIBES** :
```
factory:production_complete ← Factory
combat:resource_consumed ← Combat
economy:resource_shortage ← Economy
map:terrain_updated ← Map
```
#### Designer Engine
**PUBLISHES** :
```
designer:blueprint_ready → Factory, Economy
designer:tech_breakthrough → ALL
designer:design_validated → Economy, Combat
```
**SUBSCRIBES** :
```
factory:blueprint_test ← Factory
combat:performance_data ← Combat
economy:market_demand ← Economy
```
#### Company & State Engine
**PUBLISHES** :
```
company:order_placed → Economy
company:feature_changed → Economy, Designer
company:diplomatic_action → ALL
state:policy_change → Economy, Map
```
**SUBSCRIBES** :
```
economy:company_bankrupt ← Economy
combat:battle_result ← Combat
event:crisis_triggered ← Event
```
#### Operation Engine
**PUBLISHES** :
```
operation:battle_order → Combat
operation:strategy_change → Combat, Logistic
operation:target_selected → Combat, Intelligence
```
**SUBSCRIBES** :
```
combat:battle_result ← Combat
intelligence:intel_update ← Intelligence
logistic:supply_status ← Logistic
```
#### Intelligence Engine
**PUBLISHES** :
```
intelligence:enemy_spotted → Combat, Operation
intelligence:intel_update → Operation, Company&State
intelligence:recon_complete → Map, Operation
```
**SUBSCRIBES** :
```
combat:battle_start ← Combat
map:fog_revealed ← Map
```
#### Event Engine
**PUBLISHES** :
```
event:crisis_triggered → ALL
event:breakthrough_event → Designer, Economy
event:diplomatic_crisis → Company&State
```
**SUBSCRIBES** :
```
(Monitore all channels pour trigger contextuel)
```
### APIs HTTP Standardisées
#### Format URL Standard
```
http://{engine-name}:808{N}/{endpoint}
Ports :
factory:8080, economy:8081, combat:8082, map:8083
logistic:8084, designer:8085, company:8086, operation:8087
intelligence:8088, event:8089
```
#### Endpoints Communs (tous engines)
```
GET /health → Health check
GET /status → État général engine
GET /metrics → Métriques performance
POST /shutdown → Arrêt propre engine
```
#### Endpoints Spécifiques par Engine
**Factory Engine** :
```
GET /factories → Liste usines actives
GET /factories/{id} → Détails usine
POST /factories/{id}/start → Démarrer production
POST /factories/{id}/stop → Arrêter production
GET /production/queue → Queue production
POST /blueprints/validate → Valider blueprint
```
**Economy Engine** :
```
GET /prices → Prix actuels toutes ressources
GET /prices/{resource} → Prix ressource spécifique
GET /market/demand → Demande par ressource
GET /companies → Liste companies actives
POST /orders → Placer commande
```
**Combat Engine** :
```
GET /battles/active → Batailles en cours
POST /battles/start → Démarrer bataille
GET /units/status → Status toutes unités
POST /units/{id}/order → Donner ordre unité
```
### Format JSON Uniforme
#### Structure Standard Message
```json
{
"timestamp": "2024-03-15T14:30:00Z",
"source_engine": "factory",
"target_engines": ["economy", "logistic"],
"event_type": "production_complete",
"sequence_id": 12345,
"data": {
"factory_id": "fact_001",
"produced_item": "steel_plate",
"quantity": 100,
"quality": 85
},
"metadata": {
"priority": "normal",
"retry_count": 0
}
}
```
#### Format HTTP Response Standard
```json
{
"success": true,
"timestamp": "2024-03-15T14:30:00Z",
"engine": "economy",
"data": {
"steel_price": 45.0,
"trend": "increasing"
},
"error": null,
"execution_time_ms": 23
}
```
#### Format Error Standard
```json
{
"success": false,
"timestamp": "2024-03-15T14:30:00Z",
"engine": "combat",
"data": null,
"error": {
"code": "UNIT_NOT_FOUND",
"message": "Unit with ID unit_123 not found",
"details": {
"unit_id": "unit_123",
"requested_action": "move"
}
},
"execution_time_ms": 5
}
```
### Flux de Données Critiques
```
Factory Engine → Economy/Logistic : Production outputs
Economy Engine → ALL : Prix et demandes
Designer Engine → Economy/Combat : Nouveaux designs
Intelligence Engine → Operation : Reconnaissance data
Event Engine → ALL : Crisis triggers
Map Engine → Combat/Factory : Terrain data
Operation Engine → Combat : Battle orders
Combat Engine → Economy/Map : Battle results
```
## Error Handling & Reliability
### Engine Crash/Restart Strategy
**Detection rapide de crash**
```
Health check HTTP: GET /health toutes les 30 secondes
Redis heartbeat: PUBLISH engine:heartbeat {"engine": "factory", "timestamp": "..."}
Timeout detection: Si pas de heartbeat depuis 60s = engine down
```
**Recovery automatique**
```
Engine redémarre → republish état current dans Redis
Example: Factory Engine restart → PUBLISH factory:status {"active_productions": [...]}
Autres engines reçoivent l'update et ajustent leur état local
```
**Graceful degradation**
```cpp
// Dans chaque engine
if (!canReachEngine("economy")) {
// Utiliser derniers prix connus en cache
price = fallbackPriceCache.get(resource);
logWarning("Using cached price, Economy engine unreachable");
}
```
### Redis Failover Strategy
**Redis persistence activée**
```
# Configuration Redis
save 900 1 # Save snapshot if 1+ keys changed in 15min
appendonly yes # Log toutes les commandes
```
**Multiple Redis instances** (plus tard)
```
Primary Redis: 6379 (read/write)
Replica Redis: 6380 (read-only backup)
Si primary down → engines switch automatiquement vers replica
```
**Message replay après Redis restart**
```
Chaque engine garde buffer local des derniers messages
Engine restart → replay buffer vers Redis pour resync
```
### Circuit Breaker Pattern
**Éviter cascade failures**
```cpp
class EngineCircuitBreaker {
int failureCount = 0;
bool isOpen = false;
bool callEngine(string endpoint) {
if (isOpen && failureCount > 5) {
return false; // Circuit ouvert, pas d'appel
}
if (httpCall(endpoint).success()) {
failureCount = 0; // Reset sur succès
return true;
} else {
failureCount++;
if (failureCount > 5) isOpen = true;
return false;
}
}
}
```
### Message Persistence & Replay
**Event sourcing basique**
```
Redis streams pour persistence:
XADD events:factory * engine factory event production_complete data {...}
XADD events:combat * engine combat event battle_end data {...}
Recovery: XREAD depuis last timestamp connu
```
**State snapshots**
```
Chaque engine sauvegarde état complet périodiquement:
HSET snapshots:factory:1234567890 state "{...complete_state...}"
Recovery = load last snapshot + replay events depuis timestamp
```
### Timeout & Retry Strategy
**HTTP calls avec timeouts**
```cpp
HttpConfig config {
.connectionTimeout = 5000ms, // 5s pour établir connection
.requestTimeout = 10000ms, // 10s pour réponse complète
.retryCount = 3,
.retryDelay = 1000ms
};
```
**Redis operations timeouts**
```cpp
RedisConfig config {
.commandTimeout = 2000ms, // 2s max par commande Redis
.reconnectRetryInterval = 5000ms
};
```
### Health Check System
**Endpoint standard pour tous engines**
```json
GET /health
Response:
{
"status": "healthy|degraded|unhealthy",
"dependencies": {
"redis": "connected",
"other_engines": ["factory:healthy", "economy:degraded"]
},
"metrics": {
"uptime": 3600,
"requests_per_second": 45,
"error_rate": 0.02
}
}
```
**Central monitoring simple**
```
Script qui poll /health de tous engines toutes les 30s
Log les status changes
Alert si engine down > 2 minutes
```
## Détails des Engines
### Factory Engine
- **Responsabilité** : Systèmes Factorio du joueur uniquement
- **Scope** : Mining, production, assemblage, infrastructures joueur
- **Autonomie** : Simulation complète des usines joueur
- **Communication** : Export données production vers Logistic Engine
- **Innovation** : Factory benchmarking → conversion stable factories en lookup tables
- **Performance** : Unload simulation détaillée après stabilisation
### Logistic Engine
- **Responsabilité** : Flux physiques et virtuels de ressources
- **Scope** : Transport, supply chains, FOBs militaires, distribution
- **Autonomie** : Gestion complète des mouvements de biens
- **Communication** : Interface avec Factory, Economy et Combat Engines
- **Features** : Transport multi-modal (camions, trains, avions, drones, navires)
- **Vulnérabilités** : Convois attaquables, infrastructure destructible
### Economy Engine
- **Responsabilité** : Usines IA, marchés, prix dynamiques
- **Scope** : Productions IA, company behaviors, marchés segmentés
- **Autonomie** : Simulation économique globale indépendante
- **Communication** : Prix/demandes vers tous engines consommateurs
- **Features** : Système économique réactif aux événements militaires
- **Marchés** : National, company-specific, blocs, mondial avec restrictions
### Designer System Engine
- **Responsabilité** : Conception IA de véhicules et équipements
- **Scope** : Algorithmes design, validation, recherche technologique
- **Autonomie** : Processus design distribué, cultural blueprints
- **Communication** : Nouveaux designs vers Economy et Combat Engines
- **Spécialité** : Inclut système de recherche dual et breakthroughs
- **Performance** : 1-2 tetris par tick, évolution vs création from scratch
### Company & State Engine
- **Responsabilité** : Entités (companies, états), diplomatie
- **Scope** : Features companies, relations, politiques commerciales
- **Autonomie** : Comportements entités, évolution features
- **Communication** : Commandes vers Economy, restrictions vers tous
- **Features** : Système 2-4 features par company, évolution dynamique
- **Diplomatie** : Relations internationales, sanctions, embargos
### Map Engine
- **Responsabilité** : Gestion carte, streaming, génération
- **Scope** : Chunks, FOW, navigation, terrain procedural
- **Autonomie** : Génération à la demande, optimisation mémoire
- **Communication** : Données terrain vers Combat et Factory Engines
- **Système** : Zoom discret (global + local 1mx1m), chunks 64x64
- **Navigation** : Node-based pour terrestre, libre pour aérien
### Combat Engine
- **Responsabilité** : Batailles temps réel, IA militaire
- **Scope** : Unités, doctrines, combats locaux
- **Autonomie** : Simulations tactiques indépendantes
- **Communication** : Résultats vers Map et Logistic Engines
- **Performance** : Adaptive tick rate (60→15 TPS sous charge)
- **Features** : Actions normales (assaut, reco, soutien, etc.)
### Operation Engine
- **Responsabilité** : Opérations militaires, généraux IA
- **Scope** : Stratégie macro, AI decision making, planning
- **Autonomie** : Prise de décision stratégique autonome
- **Communication** : Ordres vers Combat Engine, demandes vers Logistic
- **Features** : Généraux avec ML, doctrines, expérience terrain
- **IA** : Adaptation comportements selon succès/échecs
### Intelligence Engine
- **Responsabilité** : Reconnaissance, espionnage, fog of war
- **Scope** : Satellites, intel gathering, information warfare
- **Autonomie** : Collecte et analyse renseignements
- **Communication** : Intel vers Operation et Company Engines
- **Système** : FOW par chunks, qualité reconnaissance progressive
- **Persistance** : Mémoire intel par actor, expiration possible
### Event Engine
- **Responsabilité** : Événements aléatoires, crises, disruptions
- **Scope** : Wars, breakthroughs, economic crashes, endgame crisis
- **Autonomie** : Déclenchement et gestion événements contextuels
- **Communication** : Trigger events vers engines concernés
- **Features** : 3 endgames (zombies, aliens, démons), events géopolitiques
- **Probabilités** : Events égales entre companies, adaptation contextuelle
### Central Coordinator
- **Fonction** : Event ordering, health checks, failover management
- **Solution Sync** : Logical sequences (pas timestamps) pour éviter clock sync issues
- **Pattern** : Error-resilient architecture over error-free
- **Communication** : Interface avec tous les 10 engines pour coordination
## Décisions Techniques Clés
### 1. Performance Stack
- **Langages** : C++ / C / ASM pour performance critique
- **Justification** : Simulation temps réel complexe + milliers d'unités
- **Compromise** : Complexité dev acceptable vs performance requirements
### 2. Synchronisation Multijoueur
- **Problème** : Déterminisme impossible avec multi-serveurs
- **Solution** : Server-authoritative + error-resilient design
- **Approach** : Graceful degradation + periodic sync + rollback capability
### 3. Clients = Dumb Terminals
- **Avantage** : Pas de sync client-side, anti-cheat naturel
- **Inconvénient** : Latency pour interactions
- **Justification** : Strategy game → latency acceptable vs RTS pur
### 4. Async Gameplay Design
- **Principe** : Combat peut avoir latence, player gère autre chose
- **Implémentation** : Background processing pendant que player fait diplo/éco
- **Exemple** : Bataille 10k unités = 30 secondes → player continue production
## Optimisations Performance
### Factory Benchmarking System
```cpp
// Pseudo-code concept
if (factory.isStable() && factory.benchmarkComplete()) {
// Lookup table - ultra rapide
output = productionTable.calculate(inputs);
} else {
// Full simulation - précis mais coûteux
output = detailedSimulation.process(inputs);
}
```
**Process** :
1. Factory neuve → full simulation détaillée
2. Après X cycles stables → benchmark input/output ratios
3. Conversion en lookup table → unload detailed simulation
4. Recalibrage si modifications (upgrades, dégâts)
### Load Management
- **Adaptive Tick Rate** : 60 TPS → 15 TPS si surcharge
- **Queue Systems** : Batch processing pour opérations coûteuses
- **Future Scaling** : Clustering dynamique per module
## Workflow Développement
### IA-Assisted Development
- **Claude Code #1** → Factory Engine + Logistic Engine
- **Claude Code #2** → Combat Engine + Operation Engine
- **Claude Code #3** → Economy Engine + Designer Engine
- **Claude Code #4** → Company&State Engine + Intelligence Engine
- **Claude Code #5** → Map Engine + Event Engine
- **Humain** → Central Coordinator + architecture globale + vision produit
### Principe Modulaire pour IA
- **Self-contained modules** → Claude peut "faire du spagos" dans sa boîte
- **Clean APIs** → interfaces claires entre modules
- **Isolation** → bugs dans un module n'affectent pas les autres
## Repository Structure
```
Ukraine-War-Game/ # Meta-repository
├── Factory-Engine/ # Git submodule
├── Logistic-Engine/ # Git submodule
├── Economy-Engine/ # Git submodule
├── Designer-Engine/ # Git submodule
├── CompanyState-Engine/ # Git submodule
├── Map-Engine/ # Git submodule
├── Combat-Engine/ # Git submodule
├── Operation-Engine/ # Git submodule
├── Intelligence-Engine/ # Git submodule
├── Event-Engine/ # Git submodule
├── Client-Renderer/ # Git submodule
├── Central-Coordinator/ # Git submodule
├── shared/ # Protocols & configs communs
│ ├── engine-apis/ # Interface contracts entre engines
│ ├── message-schemas/ # Format des messages inter-engines
│ └── event-definitions/ # Types d'événements standardisés
├── docs/ # Documentation architecture
├── scripts/ # Dev tools (build-all, deploy)
└── docker/ # Dev environment setup
```
## Scalabilité Future
### Clustering Capability
- **Current** : 1 serveur par module
- **Future** : N serveurs per module avec load balancing
- **Implementation** : Kubernetes orchestration + auto-scaling
### Performance Monitoring
- **Health Checks** : Inter-server communication monitoring
- **Metrics** : Tick rates, queue sizes, response times
- **Alerting** : Auto-failover + human notifications
## Considérations Multijoueur
### Sync Strategy
- **Error-Resilient** : Accept temporary inconsistencies
- **Periodic Reconciliation** : Checkpoints + state correction
- **Conflict Resolution** : Server priority rules + rollback capability
### Network Architecture
- **Server-to-Server** : Reliable message queues (Redis/RabbitMQ)
- **Client-to-Server** : Standard TCP/WebSocket
- **Bandwidth** : Clients reçoivent state updates, n'envoient que commands
## Roadmap Technique
### Phase 1 : Core Engines MVP
- [ ] Factory Engine (mining + production basique)
- [ ] Economy Engine (resources tracking)
- [ ] Map Engine (chunks + navigation basique)
- [ ] Client renderer (WebGL/OpenGL)
### Phase 2 : Multi-Engine Integration
- [ ] Central Coordinator implementation
- [ ] Inter-engine communication protocols (message queues)
- [ ] Logistic Engine (transport basique)
- [ ] Combat Engine (unit battles simple)
### Phase 3 : Advanced Engines
- [ ] Designer Engine (IA vehicle conception)
- [ ] CompanyState Engine (entities + diplomatie)
- [ ] Operation Engine (généraux IA)
- [ ] Intelligence Engine (FOW + reconnaissance)
### Phase 4 : Complete System
- [ ] Event Engine (crises + événements)
- [ ] Factory benchmarking system
- [ ] Performance optimizations (adaptive tick rate)
- [ ] Endgame crisis implementations
## Notes de Conception
### Pragmatisme vs Perfection
- **Principle** : Ship working system > perfect architecture
- **Error Strategy** : Resilient design > error-free design
- **Performance** : Good enough > premature optimization
### Hommage Ukraine
- **Lore** : Guerre réelle comme base narrative
- **Valeurs** : Mettre en avant courage et liberté ukrainiens
- **Authenticity** : Systèmes militaires basés sur conflit réel
---
**"Ave Machina, guide my development !"** ⚙️🇺🇦