- Restructure docs/ into hierarchical organization (00-overview → 04-reference) - Eliminate duplicate global/ directory (-16 files) - Integrate toCheck/ content into main structure - Update CLAUDE.md with new documentation architecture - Remove legacy engine references - Consolidate 53 → 32 documentation files (-40% reduction) - Add proper navigation README.md with clear entry points New structure: 📁 00-overview/ - Vision & context 📁 01-architecture/ - Technical architecture 📁 02-systems/ - Game systems 📁 03-implementation/ - Testing & configuration 📁 04-reference/ - Technical reference 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
898 lines
35 KiB
Markdown
898 lines
35 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
|
|
|
|
### Triple Interface Pattern (Architecture Révolutionnaire)
|
|
|
|
**NOUVELLE ARCHITECTURE MODULAIRE** - Remplace l'ancienne architecture 10 engines par un système modulaire optimisé pour le développement avec Claude Code.
|
|
|
|
#### Les 4 Interfaces Fondamentales
|
|
|
|
```cpp
|
|
IEngine → Coordination générale (DebugEngine → HighPerfEngine → DataOrientedEngine)
|
|
IModuleSystem → Stratégie d'exécution (Sequential → Threaded → Multithread → Cluster)
|
|
IModule → Logique métier pure (TankModule.so, EconomyModule.so, FactoryModule.so)
|
|
IIO → Communication (IntraIO → LocalIO → NetworkIO)
|
|
```
|
|
|
|
#### Séparation des Responsabilités
|
|
|
|
**IEngine** : Orchestration et coordination
|
|
- DebugEngine : Développement et test (step-by-step, verbose logging)
|
|
- HighPerfEngine : Production optimisée (threading, memory management)
|
|
- DataOrientedEngine : Scale massive (SIMD, cluster distribution)
|
|
|
|
**IModuleSystem** : Stratégies d'exécution
|
|
- SequentialModuleSystem : Debug/test (1 module à la fois)
|
|
- ThreadedModuleSystem : Chaque module dans son thread
|
|
- MultithreadedModuleSystem : Pool de threads pour tasks
|
|
- ClusterModuleSystem : Distribution sur plusieurs machines
|
|
|
|
**IModule** : Logique métier pure
|
|
```cpp
|
|
class IModule {
|
|
virtual json process(const json& input) = 0; // PURE FUNCTION
|
|
virtual void initialize(const json& config) = 0;
|
|
virtual void shutdown() = 0;
|
|
};
|
|
```
|
|
|
|
**Contraintes strictes** :
|
|
- **200-300 lignes maximum** par module (EXCEPTION: ProductionModule 500-800 lignes)
|
|
- **Aucune dépendance infrastructure** (threading, network, etc.)
|
|
- **JSON in/out uniquement** pour communication
|
|
- **Logic métier pure** sans effets de bord
|
|
|
|
**Exception ProductionModule** :
|
|
- **Belt+Inserter+Factory DOIVENT cohabiter** dans le même module pour performance critique
|
|
- **500-800 lignes acceptées** pour ce module spécifiquement
|
|
- **Raison** : ISocket overhead >1ms inacceptable pour production 60 FPS
|
|
- **Trade-off conscient** : Complexité accrue mais performance garantie
|
|
|
|
### Décomposition War en Subsystèmes Asynchrones
|
|
|
|
**Principe** : Le module War décomposé en subsystèmes avec fréquences d'exécution différentes
|
|
|
|
**Subsystèmes identifiés** :
|
|
- **Targeting** : Acquisition et tracking des cibles (haute fréquence)
|
|
- **Movement** : Déplacement et physique des unités (fréquence moyenne)
|
|
- **Pathfinding** : Calcul des routes optimales (à la demande)
|
|
- **Tactical** : Décisions tactiques et IA (basse fréquence)
|
|
- **Analytics** : Métriques et statistiques de combat (très basse fréquence)
|
|
|
|
**Avantages de la désynchronisation** :
|
|
- **Performance** : Chaque système tourne à sa fréquence optimale
|
|
- **Scalabilité** : Distribution possible sur threads/cores différents
|
|
- **Modularité** : Systèmes indépendants plus faciles à maintenir
|
|
- **Réactivité** : Systèmes critiques (targeting) restent fluides
|
|
|
|
**Tolérance Réseau War** :
|
|
- **50-100ms de latence acceptable** pour décisions stratégiques
|
|
- Combat n'est pas frame-perfect comme un FPS
|
|
- Synchronisation relaxée suffisante pour RTS/stratégie
|
|
- Permet joueurs avec connexions moyennes
|
|
|
|
**IIO** : Couche transport
|
|
- IntraIO : Appel direct (même processus)
|
|
- LocalIO : Named pipes/sockets (même machine)
|
|
- NetworkIO : TCP/WebSocket (réseau)
|
|
|
|
#### Évolution Progressive Sans Régression
|
|
|
|
```cpp
|
|
// Phase 1 : Prototype
|
|
DebugEngine + SequentialModuleSystem + IntraIO
|
|
→ Développement ultra-rapide, Claude Code 100% focus logique
|
|
|
|
// Phase 2 : Optimization
|
|
DebugEngine + ThreadedModuleSystem + IntraIO
|
|
→ Performance boost sans changer 1 ligne de game logic
|
|
|
|
// Phase 3 : Production
|
|
HighPerfEngine + MultithreadedModuleSystem + LocalIO
|
|
→ Scale transparent, TankModule.so inchangé
|
|
|
|
// Phase 4 : MMO Scale
|
|
DataOrientedEngine + ClusterModuleSystem + NetworkIO
|
|
→ Distribution massive, même logique métier
|
|
```
|
|
|
|
**Avantage révolutionnaire** : Les modules de logique métier (TankModule.so, EconomyModule.so) restent identiques à travers toutes les phases d'évolution !
|
|
|
|
### Contrainte Design Fondamentale : Task-Centric Logic
|
|
|
|
**CRITICAL** : Les modules doivent être conçus avec une **task-centric logic** dès le début pour supporter l'évolution progressive.
|
|
|
|
#### Task-Centric Logic Requirements
|
|
```cpp
|
|
class IModule {
|
|
virtual json process(const json& task) = 0; // TASK-CENTRIC DESIGN
|
|
// task = unité de travail atomique, pas state global
|
|
// Permet distribution future sans refactoring
|
|
};
|
|
```
|
|
|
|
**Implications design** :
|
|
- **Stateless preferred** : Tasks indépendantes autant que possible
|
|
- **Granularité fine** : 1 task = 1 opération logique discrète
|
|
- **Context minimal** : Task contient tout le contexte nécessaire
|
|
- **Results self-contained** : Output complet pour la task
|
|
|
|
#### Évolution Progressive Détaillée
|
|
|
|
**Phase 1 : Debug/Prototype**
|
|
```cpp
|
|
DebugEngine + SequentialModuleSystem + IntraIO
|
|
```
|
|
- **Execution** : Tasks traitées séquentiellement par même thread
|
|
- **Flow** : Module1.process(task1) → Module2.process(task2) → Module3.process(task3)
|
|
- **Avantage** : Debug step-by-step, Claude Code friendly
|
|
- **Task-centric** : Prépare la distribution future
|
|
|
|
**Phase 2 : Optimization**
|
|
```cpp
|
|
DebugEngine + ThreadedModuleSystem + IntraIO
|
|
```
|
|
- **Execution** : Tasks distribuées par module sur threads dédiés
|
|
- **Flow** : Module1(Thread A), Module2(Thread B) - tasks parallèles
|
|
- **Avantage** : Performance sans changer task logic
|
|
|
|
**Phase 3 : Production**
|
|
```cpp
|
|
HighPerfEngine + MultithreadedModuleSystem + LocalIO
|
|
```
|
|
- **Execution** : **Task queue + worker thread pool**
|
|
- **Flow** : Tasks distribuées sur pool selon disponibilité et priorité
|
|
- **Avantage** : Load balancing automatique des tasks
|
|
|
|
**Phase 4 : MMO Scale**
|
|
```cpp
|
|
DataOrientedEngine + ClusterModuleSystem + NetworkIO
|
|
```
|
|
- **Execution** : **Tasks distribuées sur machines différentes**
|
|
- **Flow** : TankTasks (Server A), EconomyTasks (Server B)
|
|
- **Avantage** : Scale horizontal transparent grâce au task-centric design
|
|
|
|
**Évolution Garantie** : Le task-centric design initial permet l'évolution automatique vers la distribution sans réécriture de logique métier !
|
|
|
|
### Distribution Performance-Based
|
|
|
|
**Classification :** CRITICAL - Implémentation immédiate requise
|
|
**Principe :** Distribution intelligente basée sur contraintes de performance
|
|
|
|
#### Classification des Modules par Performance
|
|
|
|
**Critical Locale (Exécution Locale Obligatoire) :**
|
|
- **ProductionModule** : <1ms latence pour 60fps frame-perfect
|
|
- **TankModule (targeting)** : <16ms pour 60Hz combat responsiveness
|
|
- **UI/Input modules** : <5ms pour réactivité utilisateur immédiate
|
|
|
|
**Strategic Distribuée (Distribution Réseau Acceptable) :**
|
|
- **EconomyModule** : 1000ms tolérable pour décisions économiques
|
|
- **MapModule (chunks)** : 500ms acceptable pour streaming asynchrone
|
|
- **Analytics modules** : 5000ms+ acceptable pour métriques
|
|
|
|
**Mixed (Performance Contextuelle) :**
|
|
- **LogisticModule** : 50ms transport temps réel vs 1000ms planification
|
|
|
|
#### Table de Distribution Performance
|
|
|
|
| Module | Type | Latence Max | IIO Optimal | Justification |
|
|
|--------|------|-------------|-------------|---------------|
|
|
| ProductionModule | Critical | <1ms | IntraIO | 60fps frame-perfect requis |
|
|
| TankModule | Critical | <16ms | IntraIO/LocalIO | Combat responsiveness |
|
|
| EconomyModule | Strategic | 1000ms | NetworkIO | Décisions tolèrent délai |
|
|
| MapModule | Strategic | 500ms | NetworkIO | Streaming asynchrone |
|
|
| LogisticModule | Mixed | 50-1000ms | LocalIO/NetworkIO | Context-dependent |
|
|
|
|
#### Implications Utilisateurs
|
|
|
|
**Performance garantie :**
|
|
- **Responsivité critique preservée** : Factory/combat toujours fluides (local)
|
|
- **Scaling transparent** : Ajout joueurs sans impact performance locale
|
|
- **Adaptation réseau automatique** : Qualité connexion n'affecte pas gameplay core
|
|
- **Mode dégradé intelligent** : Basculement local si réseau défaillant
|
|
|
|
**Expérience utilisateur optimisée :**
|
|
- **Latence imperceptible** : Actions critiques feedback instantané
|
|
- **Bandwidth efficient** : Seuls modules strategic utilisent réseau
|
|
- **Offline capability** : Modules critical fonctionnent sans connexion
|
|
- **Performance prévisible** : Expérience identique solo vs multiplayer
|
|
|
|
#### Implications Développeurs
|
|
|
|
**Architecture optimisée Claude Code :**
|
|
- **Classification dès design** : Contraintes performance explicites par module
|
|
- **Debugging simplifié** : Modules critical toujours accessibles localement
|
|
- **Testing isolé** : Performance testing sans infrastructure réseau
|
|
- **Build autonome** : Profiling performance intégré par module
|
|
|
|
**Workflow développement :**
|
|
- **Distribution automatique** : IIO routing basé sur profil performance
|
|
- **Evolution progressive** : Migration Critical→Strategic selon optimisation
|
|
- **Profiling précis** : Métriques performance par catégorie module
|
|
- **Context minimal** : Focus logique métier pure, classification implicite
|
|
|
|
#### Intégration Triple Interface
|
|
|
|
**IIO Performance-Aware Routing :**
|
|
```cpp
|
|
// Automatic routing based on module performance profile
|
|
if (module.latencyRequirement < 1ms) {
|
|
use IntraIO; // Critical - same process
|
|
} else if (module.latencyRequirement < 50ms) {
|
|
use LocalIO; // Mixed - same machine
|
|
} else {
|
|
use NetworkIO; // Strategic - distributed
|
|
}
|
|
```
|
|
|
|
**Migration transparente par phases :**
|
|
- **Phase 1 (Dev)** : Tous modules IntraIO pour debugging
|
|
- **Phase 2 (Prod)** : Critical IntraIO, Strategic LocalIO
|
|
- **Phase 3 (MMO)** : Critical IntraIO, Strategic NetworkIO worldwide
|
|
|
|
### Build Autonome par Module
|
|
|
|
**Classification :** HIGH - Implémentation prioritaire
|
|
**Principe :** `cmake .` depuis chaque module, zéro dépendance parent
|
|
|
|
#### Structure de Build Autonome
|
|
|
|
**Directory pattern requis :**
|
|
```
|
|
modules/tank/
|
|
├── CMakeLists.txt # Autonomous build config
|
|
├── CLAUDE.md # Module-specific instructions
|
|
├── src/
|
|
│ ├── TankModule.cpp # 200 lignes max
|
|
│ └── TankModule.h # Interface pure
|
|
├── tests/
|
|
│ └── tank_test.cpp # Standalone testing
|
|
└── build/ # Local build artifacts
|
|
└── tank.so # Hot-reloadable module
|
|
```
|
|
|
|
**CMake autonome pattern :**
|
|
```cmake
|
|
# NEVER cmake .. - ALWAYS cmake .
|
|
cmake_minimum_required(VERSION 3.20)
|
|
project(TankModule)
|
|
|
|
# Self-contained dependencies
|
|
find_package(nlohmann_json REQUIRED)
|
|
|
|
# Pure module compilation
|
|
add_library(tank MODULE src/TankModule.cpp)
|
|
target_link_libraries(tank nlohmann_json::nlohmann_json)
|
|
|
|
# Standalone testing
|
|
add_executable(tank-test tests/tank_test.cpp)
|
|
target_link_libraries(tank-test tank)
|
|
```
|
|
|
|
#### Implications Utilisateurs
|
|
|
|
**Performance développement révolutionnaire :**
|
|
- **Build ultra-rapide** : 5 secondes vs 5 minutes (60x faster)
|
|
- **Debugging isolé** : Test module sans infrastructure complète
|
|
- **Parallélisme naturel** : Multiple builds simultanés sans conflit
|
|
- **Stabilité accrue** : Modification module N n'affecte jamais module M
|
|
|
|
**Expérience développeur optimisée :**
|
|
- **Context switching minimal** : Focus total sur logique module
|
|
- **Error isolation parfaite** : Compilation errors localisées uniquement
|
|
- **Testing granulaire** : Validation unitaire immédiate et autonome
|
|
- **Hot-reload ready** : Module.so prêt pour remplacement instantané
|
|
|
|
#### Implications Développeurs
|
|
|
|
**Architecture modulaire pure :**
|
|
- **Zero dependencies up** : Jamais `#include "../core/engine.h"`
|
|
- **Self-contained units** : Chaque module = micro-projet autonome
|
|
- **Interface contracts only** : Communication via JSON/IModule uniquement
|
|
- **Infrastructure agnostic** : Module ignore engine/system hosting
|
|
|
|
**Workflow Claude Code révolutionnaire :**
|
|
- **Micro-context focus** : 200-300 lignes + CMakeLists.txt + CLAUDE.md total
|
|
- **Parallel instances** : 3+ Claude Code travaillant simultanément
|
|
- **Build verification** : `cmake . && make` validation automatique
|
|
- **Development velocity** : 10x improvement mesurable
|
|
|
|
#### Contraintes Strictes CRITICAL
|
|
|
|
**NEVER patterns (violations = build failure) :**
|
|
- `cd ..` ou `cmake ..` - Toujours rester dans module directory
|
|
- `#include "../"` - Aucune référence parent directory
|
|
- Dependency sur `core/` ou `shared/` - Module = island complet
|
|
- Shared C++ objects - JSON communication exclusive
|
|
|
|
**ALWAYS patterns (required for autonomy) :**
|
|
- `cd modules/tank/ && cmake .` - Build depuis module directory
|
|
- Interface-only dependencies - IModule.h via find_package uniquement
|
|
- Local build artifacts - `build/` directory dans module
|
|
- Standalone testing - Tests s'exécutent sans infrastructure
|
|
- Unit tests intégrés - `#ifdef TESTING` validation autonome modules
|
|
- Behavior composition - Modules comportements combinables via config JSON
|
|
|
|
#### Métriques de Performance
|
|
|
|
| Metric | Avant (Monolithe) | Après (Autonome) | Amélioration |
|
|
|--------|-------------------|------------------|--------------|
|
|
| Build time | 2-5 min | <5 sec | 24-60x faster |
|
|
| Context size | 50K+ lignes | 200-300 lignes | 250x smaller |
|
|
| Parallel dev | 1 instance | 3+ instances | 3x+ throughput |
|
|
| Error isolation | Project-wide | Module-only | Perfect isolation |
|
|
| Iteration cycle | 5-10 min | 5 sec | 60-120x faster |
|
|
|
|
### Hot-Reload Infrastructure
|
|
|
|
**Classification :** HIGH - Implémentation prioritaire
|
|
**Principe :** Remplacement temps réel modules DLL/SO avec sauvegarde état
|
|
|
|
#### Architecture Hot-Reload
|
|
|
|
**Platform Support :**
|
|
- **Primary** : .dll (Windows gaming natif)
|
|
- **Future** : .so (Linux server/dev support)
|
|
- **Unified interface** : Même mécanisme, extension différente
|
|
|
|
**Workflow cible :**
|
|
```bash
|
|
# Edit TankModule.cpp → Save → Auto-rebuild tank.dll
|
|
# Système détecte changement → Hot-reload → Game continue
|
|
# <5 secondes total sans interruption
|
|
```
|
|
|
|
#### Mécanisme Technique
|
|
|
|
**Windows DLL Hot-Reload :**
|
|
```cpp
|
|
// State preservation avant reload
|
|
json moduleState = currentModule->exportState();
|
|
|
|
// Hot-swap DLL
|
|
FreeLibrary(tankDLL); // Décharge ancienne
|
|
tankDLL = LoadLibrary(L"tank.dll"); // Charge nouvelle version
|
|
|
|
// State restoration après reload
|
|
auto createFunc = GetProcAddress(tankDLL, "CreateTankModule");
|
|
newModule = createFunc();
|
|
newModule->importState(moduleState); // Restore état
|
|
```
|
|
|
|
**Build DLL autonome :**
|
|
```cmake
|
|
# modules/tank/CMakeLists.txt
|
|
add_library(tank SHARED src/TankModule.cpp)
|
|
set_target_properties(tank PROPERTIES
|
|
SUFFIX ".dll" # Windows primary
|
|
POSITION_INDEPENDENT_CODE ON # Linux SO ready
|
|
)
|
|
```
|
|
|
|
#### Implications Utilisateurs
|
|
|
|
**Développement révolutionnaire :**
|
|
- **Feedback instantané** : Changements visibles immédiatement sans restart
|
|
- **Flow state preserved** : Concentration maintenue, zéro interruption
|
|
- **Session continuity** : Données de jeu préservées pendant développement
|
|
- **Real-time testing** : Validation changements en contexte réel
|
|
|
|
**Expérience gameplay optimisée :**
|
|
- **Config tweaking live** : Modification paramètres à chaud
|
|
- **Balance updates instant** : Ajustements gameplay sans redémarrage
|
|
- **Bug fixes immediate** : Corrections appliquées en temps réel
|
|
- **A/B testing dynamic** : Switch comportements dynamiquement
|
|
|
|
#### Implications Développeurs
|
|
|
|
**Workflow ultra-optimisé :**
|
|
- **Edit → Save → Test** : Cycle 5 secondes vs 5 minutes (60x faster)
|
|
- **State preservation** : Contexte développement totalement maintenu
|
|
- **Debug facilité** : Isolation précise des changements
|
|
- **Experimentation rapide** : Testing hypothèses ultra-rapide
|
|
|
|
**Architecture requirements :**
|
|
- **State serialization** : JSON export/import complet état module
|
|
- **Interface stability** : IModule contracts préservés pendant reload
|
|
- **Memory safety** : Cleanup automatique ancien module, zéro leak
|
|
- **Thread safety** : Hot-swap sans race conditions
|
|
|
|
#### File Watching & Auto-Rebuild
|
|
|
|
**Monitoring automatique :**
|
|
```cpp
|
|
// File system watcher
|
|
FileWatcher watcher("modules/tank/");
|
|
watcher.onChange("*.cpp", [](){
|
|
rebuildModule("tank");
|
|
hotReloadModule("tank.dll");
|
|
});
|
|
```
|
|
|
|
**Build pipeline intégré :**
|
|
- **Change detection** : .cpp modification trigger auto-build
|
|
- **Compilation rapide** : Module isolé <5 sec build
|
|
- **Success validation** : Hot-reload seulement si build réussi
|
|
- **Error handling** : Fallback ancien module si échec
|
|
|
|
#### Contraintes & Performance
|
|
|
|
**Requirements techniques :**
|
|
- **Interface compatibility** : IModule contracts identiques pre/post reload
|
|
- **State serializability** : Toutes données JSON-serializable
|
|
- **No static globals** : État encapsulé dans instances module
|
|
- **Export functions** : CreateModule, DestroyModule standardisées
|
|
|
|
**Performance impact :**
|
|
- **Reload time** : <5 secondes garantis (target <2 sec)
|
|
- **Runtime overhead** : <1% en production (hot-reload disabled)
|
|
- **Memory usage** : Temporairement doublé pendant transition
|
|
- **Gaming performance** : Zéro impact, Windows DLL natif
|
|
|
|
### Contrainte Claude Code : Micro-Context Optimization
|
|
|
|
**CRITICAL** : Modules limités à **200-300 lignes maximum** pour optimiser l'efficacité de développement avec Claude Code.
|
|
|
|
#### Problème Résolu : Context Window
|
|
- **Avant** : Claude Code doit comprendre 50K+ lignes interconnectées
|
|
- **Après** : Claude Code travaille sur modules isolés de 200-300 lignes max
|
|
- **Résultat** : **250x réduction** de la complexité contextuelle
|
|
|
|
#### Contraintes Strictes de Taille
|
|
- **MAX 300 lignes** par fichier module
|
|
- **Target 200-250 lignes** optimal pour Claude Code
|
|
- **~200K tokens** maximum context window Claude Code
|
|
- **280 lignes** typiquement utilisées (CLAUDE.md + Module.cpp + Interface.h)
|
|
|
|
#### Architecture Micro-Context
|
|
```cpp
|
|
// ✅ CORRECT - Module optimisé Claude Code
|
|
class TankModule : public IModule {
|
|
json process(const json& task) override {
|
|
// 200 lignes de pure tank logic
|
|
// Aucune infrastructure, networking, threading
|
|
// JSON in/out uniquement
|
|
return {"status": "moving", "position": newPos};
|
|
}
|
|
};
|
|
```
|
|
|
|
```cpp
|
|
// ❌ INCORRECT - Trop complexe pour Claude Code
|
|
class MegaTankSystem {
|
|
// 5000+ lignes avec networking, threading, UI, etc.
|
|
// Claude Code ne peut pas appréhender efficacement
|
|
};
|
|
```
|
|
|
|
#### Workflow Révolutionnaire : Développement Parallèle
|
|
```bash
|
|
# Instance Claude Code A - 280 lignes context
|
|
cd modules/tank/
|
|
# Context: CLAUDE.md (50) + TankModule.cpp (200) + IModule.h (30)
|
|
|
|
# Instance Claude Code B - 250 lignes context
|
|
cd modules/economy/
|
|
# Context: CLAUDE.md (70) + EconomyModule.cpp (150) + IModule.h (30)
|
|
|
|
# Instance Claude Code C - 230 lignes context
|
|
cd modules/factory/
|
|
# Context: CLAUDE.md (60) + FactoryModule.cpp (140) + IModule.h (30)
|
|
```
|
|
|
|
#### Contexte Ultra-Simple Garantit
|
|
- **Zéro infrastructure** dans le contexte Claude Code
|
|
- **Information hiding** : Claude ne voit jamais l'architecture complète
|
|
- **Focus 100%** sur logique métier pure
|
|
- **Build autonome** : `cmake .` depuis le module
|
|
|
|
#### Avantages Claude Code Mesurés
|
|
- **Iteration rapide** : 5 secondes vs 5-10 minutes traditional
|
|
- **Compréhension parfaite** : Context entièrement maîtrisable par IA
|
|
- **Quality boost** : Focus intense sur logique pure
|
|
- **Parallel instances** : 3+ Claude Code travaillant simultanément
|
|
|
|
## Performance Scaling Architecture (Point 39)
|
|
|
|
**Hiérarchie temporelle optimisée** pour balance performance/complexité :
|
|
|
|
### 4 Tiers Performance
|
|
```cpp
|
|
enum PerformanceTier {
|
|
LOCAL_REALTIME, // Transport mode selection (real-time)
|
|
REGIONAL_HOURLY, // Market clearing (hourly)
|
|
ECONOMIC_DAILY, // Complex modeling (daily)
|
|
INFRASTRUCTURE_MONTHLY // Long-term investment (monthly)
|
|
};
|
|
```
|
|
|
|
### Local Decisions (Real-time)
|
|
- **Target** : 60fps gameplay garanti
|
|
- **Scope** : Factory production, transport mode selection, player input
|
|
- **Constraint** : Zero network latency impact
|
|
- **Budget** : 16ms per frame maximum
|
|
|
|
### Regional Coordination (Hourly)
|
|
- **Target** : Market clearing operations
|
|
- **Scope** : Order matching, price updates, transport assignment
|
|
- **Tolerance** : 50-100ms network delays acceptable
|
|
- **Budget** : 5-10 seconds processing time
|
|
|
|
### Economic Simulation (Daily)
|
|
- **Target** : Complex economic modeling
|
|
- **Scope** : Demographics, market volatility, AI behaviors
|
|
- **Frequency** : 0.01-0.1Hz processing
|
|
- **Budget** : Up to 30 seconds computation acceptable
|
|
|
|
### Infrastructure Planning (Monthly)
|
|
- **Target** : Long-term strategic calculations
|
|
- **Scope** : ROI analysis, regional development, policy changes
|
|
- **Tolerance** : High latency, batch processing
|
|
- **Budget** : Several minutes computation acceptable
|
|
|
|
**Architecture Benefits** :
|
|
- **Performance isolation** : Critical path (60fps) protected from complex simulation
|
|
- **Resource allocation** : CPU budget approprié per tier
|
|
- **Network optimization** : Frequency matching network tolerance
|
|
- **Modular scaling** : Each module operates at optimal frequency
|
|
- **Development velocity** : 10x improvement démontré
|
|
|
|
## Modules Principaux
|
|
|
|
L'architecture modulaire remplace les anciens engines par des modules spécialisés, chacun implémentant l'interface IModule avec logique métier pure.
|
|
|
|
### ProductionModule
|
|
- **Responsabilité** : Production Factorio-like (Belt + Inserter + Factory intégré)
|
|
- **Scope** : Mining, assemblage, transport items, stockage
|
|
- **Contrainte** : Monolithe nécessaire pour performance frame-perfect (60fps)
|
|
- **Frequency** : 60Hz processing pour frame-perfect timing
|
|
- **War Isolation** : ZERO interaction directe avec WarModule/TankModule
|
|
- **Communication** : JSON avec LogisticModule pour export/import uniquement
|
|
|
|
### EconomyModule
|
|
- **Responsabilité** : Simulation économique, marchés, pricing dynamique
|
|
- **Scope** : Agent-based economy, supply/demand, transport optimization
|
|
- **Frequency** : 0.01-0.1Hz (cycles économiques lents)
|
|
- **Business Models** : Arbitrage, Market Making, Transport Optimization
|
|
- **Communication** : JSON market data, price updates
|
|
|
|
### TankModule
|
|
- **Responsabilité** : Comportement véhicules de combat
|
|
- **Scope** : Movement, targeting, combat states, damage calculation
|
|
- **Frequency** : 0.1-60Hz (Targeting 60Hz → Movement 30Hz → Tactical 1Hz → Analytics 0.1Hz)
|
|
- **Factory Isolation** : Aucune interaction directe avec ProductionModule
|
|
- **Turret Supply** : Approvisionnement via LogisticModule uniquement
|
|
- **Communication** : JSON commands, state updates
|
|
|
|
### LogisticModule
|
|
- **Responsabilité** : Transport goods, supply chains, turret supply
|
|
- **Scope** : Route optimization, convoy management, infrastructure, war asset supply
|
|
- **Frequency** : Variable (50ms temps réel → 1000ms planification)
|
|
- **War Integration** : Approvisionne turrets/war assets, PAS inserters directs
|
|
- **Economic Integration** : Cost-based transport mode selection
|
|
- **Communication** : JSON transport requests, delivery confirmations
|
|
|
|
### MapModule
|
|
- **Responsabilité** : Terrain, procedural generation, FOW
|
|
- **Scope** : Multi-scale maps, chunk streaming, 218+ generation elements
|
|
- **Frequency** : Variable selon context (streaming asynchrone)
|
|
- **Performance** : Lazy loading, memory management
|
|
|
|
## Module Frequencies & Isolation Rules
|
|
|
|
### Frequency Specifications (Points 109-125)
|
|
|
|
**Performance-Critical Modules :**
|
|
- **ProductionModule** : 60Hz (frame-perfect factory operations)
|
|
- **TankModule Targeting** : 60Hz (combat responsiveness)
|
|
- **TankModule Movement** : 30Hz (position updates)
|
|
|
|
**Strategic Modules :**
|
|
- **TankModule Tactical** : 1Hz (strategic decisions)
|
|
- **TankModule Analytics** : 0.1Hz (long-term analysis)
|
|
- **EconomyModule** : 0.01-0.1Hz (economic cycles)
|
|
|
|
**Context-Dependent Modules :**
|
|
- **LogisticModule** : 50ms (real-time) → 1000ms (planning)
|
|
- **MapModule** : Asynchronous (on-demand streaming)
|
|
|
|
### Isolation Rules (Points 133-134)
|
|
|
|
**War Module Isolation :**
|
|
```cpp
|
|
// ✅ CORRECT - War assets via LogisticModule
|
|
LogisticModule → TurretSupply → Ammunition
|
|
LogisticModule → VehicleSupply → Fuel/Parts
|
|
|
|
// ❌ FORBIDDEN - Direct factory interaction
|
|
ProductionModule → TankModule // ZERO interaction
|
|
FactoryInserter → Turret // NO direct supply
|
|
```
|
|
|
|
**ProductionModule Isolation :**
|
|
```cpp
|
|
// ✅ CORRECT - Only LogisticModule interface
|
|
ProductionModule ↔ LogisticModule // Export/Import only
|
|
LogisticModule ↔ WarModule // Supply war assets
|
|
|
|
// ❌ FORBIDDEN - Any direct war interaction
|
|
ProductionModule ↔ TankModule // ZERO interaction
|
|
ProductionModule ↔ TurretModule // ZERO interaction
|
|
```
|
|
|
|
**Supply Chain Architecture :**
|
|
- **Factory → Logistics → War** (unidirectional flow)
|
|
- **NO shortcuts** : Direct factory-to-war connections prohibited
|
|
- **Reason** : Module isolation, testability, hot-reload safety
|
|
- **Communication** : JSON terrain queries, chunk data
|
|
|
|
## Architecture Communication
|
|
|
|
### Communication Modulaire
|
|
|
|
**Protocole uniforme** : JSON-only entre tous les modules via interfaces IIO
|
|
|
|
### Architecture Client/Server Modulaire
|
|
|
|
**Classification :** CRITICAL - Implémentation immédiate requise
|
|
**Evolution progressive :** V1 Thin Client → V2 Shared Logic
|
|
|
|
#### Phase V1 : Thin Client Validation
|
|
**Architecture :**
|
|
- Client display-only, toute logique côté serveur
|
|
- Validation authoritative centralisée
|
|
- Communication via NetworkIO pour toutes les décisions
|
|
|
|
**Performance Targets (Points 98-103) :**
|
|
- **V1 Client Target** : 30+ fps stable (Point 98)
|
|
- **V1 Server Capacity** : 10+ concurrent players (Point 100)
|
|
- **V1 Latency** : <150ms validation acceptable (Point 102)
|
|
|
|
**Pour les utilisateurs :**
|
|
- **Latence perceptible** : 50-150ms délai entre action et feedback
|
|
- **Connexion requise** : Impossibilité de jouer hors ligne
|
|
- **Synchronisation garantie** : Aucune désynchronisation possible
|
|
|
|
**Pour les développeurs :**
|
|
- **Développement simplifié** : Une seule source de vérité côté serveur
|
|
- **Debug facilité** : Toute la logique centralisée et traçable
|
|
- **Sécurité native** : Anti-cheat par design via validation serveur
|
|
- **Déploiement rapide** : Architecture simple, mise en production directe
|
|
|
|
#### Phase V2 : Shared Logic Prediction
|
|
**Architecture :**
|
|
- Logique métier partagée client/serveur
|
|
- Prédiction locale avec réconciliation serveur
|
|
- Communication optimisée via NetworkIO intelligent
|
|
|
|
**Performance Targets (Points 99-103) :**
|
|
- **V2 Client Target** : 60+ fps avec prediction (Point 99)
|
|
- **V2 Server Capacity** : 100+ concurrent players (Point 101)
|
|
- **V2 Network** : 30ms server, 0ms perceived client (Point 103)
|
|
|
|
**Pour les utilisateurs :**
|
|
- **Latence zéro perçue** : Feedback instantané via prédiction locale
|
|
- **Mode hors ligne** : Gameplay possible avec synchronisation différée
|
|
- **Performance optimale** : 60fps avec prédiction fluide
|
|
- **Expérience premium** : Réactivité comparable aux jeux locaux
|
|
|
|
**Pour les développeurs :**
|
|
- **Complexité accrue** : Synchronisation client/serveur à gérer
|
|
- **Logic partagée** : Modules identiques côté client et serveur
|
|
- **Testing avancé** : Validation prédiction + réconciliation
|
|
- **Migration progressive** : Évolution V1→V2 sans réécriture complète
|
|
|
|
#### Métriques de Performance
|
|
|
|
| Phase | Latence Perçue | FPS Client | Capacité Serveur | Mode Offline |
|
|
|-------|---------------|------------|------------------|--------------|
|
|
| V1 | 50-150ms | 30+ fps | 10+ joueurs | Non |
|
|
| V2 | 0ms (prédiction) | 60+ fps | 100+ joueurs | Oui |
|
|
|
|
#### Intégration Architecture Modulaire
|
|
|
|
**Distribution intelligente :**
|
|
- **Critical modules** (ProductionModule) : Toujours locaux pour 60fps
|
|
- **Strategic modules** (EconomyModule) : Distribués selon tolérance latence
|
|
- **War modules** : V1 serveur, V2 client avec réconciliation
|
|
|
|
**Migration sans risque (Point 10) :**
|
|
**Évolution sans risque architecture client/server**
|
|
|
|
- **Pattern hot-swappable** : Transition V1→V2 transparente pour modules
|
|
- **A/B testing** : Validation progressive par groupes d'utilisateurs (10% → 50% → 100%)
|
|
- **Fallback automatique** : Retour V1 en cas d'échec V2
|
|
- **Zéro réécriture** : V1 code reste valide, V2 = extension progressive
|
|
- **Forward-compatible** : Architecture V1 compatible V2 dès le design initial
|
|
|
|
**Exemple migration progressive :**
|
|
```cpp
|
|
// Code adaptable V1/V2 sans réécriture
|
|
if (config.enable_v2_prediction) {
|
|
// V2: Client prediction + server validation
|
|
} else {
|
|
// V1: Server authoritative (fallback sûr)
|
|
}
|
|
```
|
|
|
|
**Communication standardisée :**
|
|
- **JSON exclusivement** : Interface uniforme client/serveur
|
|
- **NetworkIO évolutif** : Support V1 et V2 simultané
|
|
- **State preservation** : Continuité état durant migration
|
|
|
|
### Stack Technique Modulaire
|
|
- **IntraIO** : Communication intra-processus (développement/debug)
|
|
- **LocalIO** : Named pipes/sockets (même machine, production)
|
|
- **NetworkIO** : TCP/WebSocket avec support V1/V2 client/server
|
|
|
|
### Patterns Communication
|
|
- **Modules → JSON in/out** : Interface pure, pas de dépendances directes
|
|
- **Hot-reload compatible** : Communication préservée durant updates modules
|
|
- **Client/Server agnostic** : Même logique métier, déploiement différent selon phase
|
|
|
|
## Avantages Architecture Modulaire
|
|
|
|
### Développement Claude Code Optimisé
|
|
- **Contextes micro** : 200-300 lignes par module vs 50K+ lignes système monolithique
|
|
- **Build autonome** : `cd modules/tank/ && cmake .` - zéro dépendance parent
|
|
- **Hot-reload** : Modifications instantanées sans restart système
|
|
- **Développement parallèle** : Multiple instances Claude Code simultanées
|
|
|
|
### Performance & Scalabilité
|
|
- **Évolution progressive** : Debug → Production → MMO sans réécriture
|
|
- **Module isolation** : Failures localisées, pas de cascade
|
|
- **Infrastructure hot-swappable** : Change performance sans affecter logique métier
|
|
|
|
### Maintenance & Evolution
|
|
- **Testing isolé** : Chaque module testable indépendamment
|
|
- **Migration zero-risk** : A/B testing, fallback automatique
|
|
- **Code reuse** : Modules réutilisables entre projets
|
|
|
|
## Development Philosophy & Patterns
|
|
|
|
### Point 51 : Backward Compatibility Framework
|
|
**Proxy pattern ancien→nouveau coexistence**
|
|
|
|
```cpp
|
|
// Backward compatibility via proxy pattern
|
|
class LegacyTankAdapter : public IModule {
|
|
std::unique_ptr<OldTankSystem> legacySystem;
|
|
std::unique_ptr<NewTankModule> modernSystem;
|
|
bool useModern = false;
|
|
|
|
public:
|
|
json process(const json& input) override {
|
|
if (useModern && modernSystem->isReady()) {
|
|
try {
|
|
return modernSystem->process(input);
|
|
} catch (const std::exception&) {
|
|
// Fallback to legacy on failure
|
|
return legacySystem->processLegacy(convertToOldFormat(input));
|
|
}
|
|
}
|
|
return legacySystem->processLegacy(convertToOldFormat(input));
|
|
}
|
|
|
|
void enableModernSystem() { useModern = true; }
|
|
void fallbackToLegacy() { useModern = false; }
|
|
};
|
|
```
|
|
|
|
**Benefits Architecture :**
|
|
- **Zero-risk migration** : Ancien système reste fonctionnel
|
|
- **A/B testing** : Switch runtime entre old/new
|
|
- **Progressive rollout** : Migration progressive users
|
|
- **Instant rollback** : Retour automatique si problème
|
|
|
|
### Point 52 : YAGNI Modding Philosophy
|
|
**Pas modding pre-release, config system suffit 90% cas**
|
|
|
|
**Philosophy :** Configuration-driven flexibility plutôt que modding infrastructure complexe
|
|
|
|
```json
|
|
// Config-driven "modding" via JSON
|
|
{
|
|
"tank_variants": {
|
|
"tank_mk1": {
|
|
"health": 100,
|
|
"speed": 35,
|
|
"armor": "medium",
|
|
"weapons": ["cannon_75mm"]
|
|
},
|
|
"tank_mk2_custom": {
|
|
"health": 150,
|
|
"speed": 30,
|
|
"armor": "heavy",
|
|
"weapons": ["cannon_105mm", "mg_coaxial"]
|
|
}
|
|
},
|
|
"behavior_mods": {
|
|
"aggressive_ai": {
|
|
"engagement_range": 1000,
|
|
"retreat_threshold": 20,
|
|
"target_priority": "closest"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
**Architecture Benefits :**
|
|
- **90% modding needs** : Config JSON couvre la majorité des besoins
|
|
- **Zero complexity** : Pas infrastructure modding complexe
|
|
- **Claude-friendly** : Config changes = instant AI comprehension
|
|
- **Runtime modification** : Hot-reload configs sans restart
|
|
|
|
**Future Extension :**
|
|
```cpp
|
|
// When modding eventually needed (post-release)
|
|
class ModdingInterface : public IModule {
|
|
json process(const json& input) override {
|
|
// Modding hooks will be added here later
|
|
// For now, config-driven behavior is sufficient
|
|
return processConfigDriven(input);
|
|
}
|
|
};
|
|
```
|
|
|
|
### Point 53 : "Complexity through Simplicity"
|
|
**AAA complexité via modules simples Claude-friendly**
|
|
|
|
**Core Philosophy :** Complex gameplay emerges from interaction of simple, well-designed modules
|
|
|
|
```cpp
|
|
// Simple tank module (200 lines)
|
|
class TankModule : public IModule {
|
|
json process(const json& input) override {
|
|
// Simple tank behavior: move, shoot, retreat
|
|
return processSimpleTankLogic(input);
|
|
}
|
|
};
|
|
|
|
// Simple economy module (250 lines)
|
|
class EconomyModule : public IModule {
|
|
json process(const json& input) override {
|
|
// Simple market: supply, demand, price discovery
|
|
return processSimpleMarket(input);
|
|
}
|
|
};
|
|
|
|
// Complex gameplay emerges from interaction
|
|
// Tank + Economy = Resource-constrained warfare
|
|
// Tank + Factory = Production-line optimization
|
|
// Economy + Factory = Industrial economic simulation
|
|
```
|
|
|
|
**Emergent Complexity Examples :**
|
|
|
|
**Simple Rules → Complex Behavior :**
|
|
```cpp
|
|
// Rule 1: Tanks need fuel (EconomyModule)
|
|
// Rule 2: Fuel costs money (MarketModule)
|
|
// Rule 3: Money comes from production (FactoryModule)
|
|
// Rule 4: Production needs resources (LogisticModule)
|
|
|
|
// Emergent behavior: Complex supply-chain warfare
|
|
// Players must balance factory output, resource extraction,
|
|
// economic planning, and military operations
|
|
```
|
|
|
|
**Architecture Benefits :**
|
|
- **Claude comprehension** : Each module easily understood by AI
|
|
- **Debugging simplicity** : Issues isolated to specific modules
|
|
- **Testing granularity** : Simple modules = simple tests
|
|
- **Development velocity** : Small contexts = fast iteration
|
|
|
|
**AAA Complexity Achieved Through :**
|
|
- **Module interaction** : Simple rules create complex systems
|
|
- **Configuration depth** : JSON configs add sophistication
|
|
- **Emergent gameplay** : Player strategies emerge naturally
|
|
- **Progressive revelation** : Complexity unlocked gradually
|