warfactoryracine/docs/toCheck/architecture-modulaire.md
StillHammer 9a883502bb Integrate client/server modulaire and distribution performance-based specifications
- Add Client/Server Modulaire architecture (Point 4) with V1/V2 progression and user/dev implications
- Add Distribution Performance-Based system (Point 5) with Critical/Strategic module classification
- Update CLAUDE.md to reflect modular architecture transition
- Consolidate documentation: move specialized docs to toCheck/ for systematic integration
- Remove obsolete architecture files replaced by integrated specifications

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-21 07:34:57 +08:00

351 lines
11 KiB
Markdown

# Architecture Modulaire pour Game Development avec Claude Code
## Vue d'Ensemble
L'architecture modulaire triple interface révolutionne le développement de jeux complexes en rendant le code **Claude Code friendly** tout en maintenant la performance et la scalabilité.
## 🏗️ Architecture Core : Triple Interface Pattern
### 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)
IIO Communication (IntraIO LocalIO NetworkIO)
```
### Séparation des Responsabilités
#### IModule : Pure Game Logic
```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
- **Aucune dépendance infrastructure** (threading, network, etc.)
- **JSON in/out uniquement** pour communication
- **Logic métier pure** sans effets de bord
#### IModuleSystem : Execution Strategy
```cpp
// Même interface, performance différente
SequentialModuleSystem Debug/test (1 module à la fois)
ThreadedModuleSystem Chaque module dans son thread
MultithreadedModuleSystem Pool de threads pour tasks
ClusterModuleSystem Distribution sur plusieurs machines
```
#### IIO : Transport Layer
```cpp
// Même interface, transport différent
IntraIO Appel direct (même processus)
LocalIO Named pipes/sockets (même machine)
NetworkIO TCP/WebSocket (réseau)
```
## 🎯 Objectif Principal : Claude Code Optimized Development
### Problème Résolu : Contexte Énorme
**Avant** : Claude Code doit comprendre 50K+ lignes interconnectées
**Après** : Claude Code travaille sur TankModule.cpp (200 lignes isolées)
### Workflow Révolutionnaire
#### Développement Parallèle
```bash
# Instance Claude Code A
cd modules/tank/
cmake . && make tank-module # Autonome, 0 dépendance
# Instance Claude Code B
cd modules/economy/
cmake . && make economy-module # Parallèle, 0 conflit
# Instance Claude Code C
cd modules/ai/
cmake . && make ai-module # Simultané, 0 friction
```
#### Testing Isolé
```cpp
[Test] TankModule_ReceiveAttackCommand_ShouldFire()
{
auto tank = LoadModule("tank.so");
auto input = json{{"type", "attack"}, {"target", "enemy_1"}};
auto result = tank->process(input);
EXPECT_EQ(result["action"], "fire");
// Zero dépendance externe, test ultra-rapide
}
```
### Hot-Swappable Infrastructure
#### Debugging → Performance → Scale
```cpp
// Bug multithread dans TankModule ?
// 1. Keep TankModule.so unchanged
// 2. Switch: MultithreadedModuleSystem → SequentialModuleSystem
// 3. Isolate: logic bug vs threading bug
// Bug réseau ?
// 1. Keep TankModule.so unchanged
// 2. Switch: NetworkIO → IntraIO
// 3. Isolate: network bug vs game logic bug
```
**Avantage énorme** : Debug infrastructure sans toucher à la logique métier !
## 🚀 Évolution Progressive Sans Régression
### Performance Scaling
```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
```
### Migration Zero-Risk
- **TankModule.so reste identique** à travers toutes les phases
- **Interface contracts préservés** → pas de régression possible
- **A/B testing facile** : deux configurations en parallèle
## 🛠️ Choix Architecturaux Pragmatiques
### 1. Modding → YAGNI (You Aren't Gonna Need It)
**Problème du Modding** :
- Hooks system = complexité architecturale énorme
- Maintenance nightmare (API stability)
- Performance overhead permanent
- Cas d'usage incertain pré-release
**Solution pragmatique** :
- **Faire un jeu qui marche AVANT** de le rendre moddable
- 90% des "mods" = tweaker des valeurs → **Config system suffit**
### 2. Config System = "Modding Gratuit"
#### Architecture Smart Config
```
Player edit → Server validation → Engine dispatch → Background recalc
```
#### Smart Recalculation System
```cpp
// Exemple : player modifie steel_plating.weight
ConfigChange steel_plating.weight
ComponentTracker.getDependents() [tank_mk1, tank_mk2, heavy_tank]
DesignerModule.scheduleRecalc()
Background processing (spread over frames)
```
#### Hot-Reload Paradise
```json
// config/tanks.json
{
"tank_mk1": {
"armor": 50, // ← Edit this
"speed": 35, // ← Or this
"cost": 1000 // ← Or this
}
}
```
**Save file → Auto-reload → See changes instantly**
### 3. Mode-Based Security System
#### Dev Mode
- **Config changes autorisés** partout
- **Hot-reload paradise** pour développement
- **Debugging tools** exposés
#### Solo Mode
- **Player peut modder** son expérience
- **Local config override** autorisé
- **Cheat-friendly** pour expérimentation
#### Multiplayer Mode
- **Server autoritaire** sur toutes les configs
- **Anti-cheat automatique** via validation
- **Zero tolerance** pour modifications
### 4. Anti-Cheat Psychologique 😈
**Stratégie** : Cheat attempts → "bugs" simulés progressifs
```cpp
class AntiCheatPsycho {
void onCheatDetected(CheatType type) {
switch(type) {
case SPEED_HACK:
simulateRandomLag(50ms, 500ms);
break;
case RESOURCE_HACK:
simulateVisualGlitches(tanks, 5%);
break;
case DAMAGE_HACK:
simulateDesync(movement, 2%);
break;
}
// Cheater se punit lui-même → abandon plutôt que ban+retry
}
};
```
**Résultat** : Cheaters abandonnent d'eux-mêmes, expérience propre pour légitimes.
## ⚙️ Config System Intelligent
### Architecture Technique
```
Client Config Editor → WebSocket →
Server Validation →
Config Dispatcher →
[TankModule, EconomyModule, FactoryModule] →
Background Recalculation →
Live Update
```
### Component Dependency Tracking
```cpp
class ConfigDependencyGraph {
// steel_plating change affects:
std::map<ConfigKey, std::vector<ComponentID>> dependencies = {
{"materials.steel_plating.weight", {tank_mk1, tank_mk2, heavy_tank}},
{"materials.steel_plating.cost", {economy_steel, factory_line_2}},
{"weapons.cannon_75mm.damage", {tank_mk1, artillery_piece}}
};
void onConfigChange(ConfigKey key, json newValue) {
auto affected = dependencies[key];
for(auto component : affected) {
DesignerModule::scheduleRecalc(component);
}
}
};
```
### Background Processing Smart
- **Frame-spread recalculation** : 1 tank par frame max
- **Priority queue** : tanks en combat = priorité haute
- **Lazy evaluation** : recalc seulement si component utilisé
## 🎮 Workflow de Développement Révolutionnaire
### Avant : Architecture Monolithique
```
Edit code → Full compile (2-5 min) → Restart system → Load save → Test
Total : 5-10 minutes par iteration
```
### Après : Architecture Modulaire
```
Edit TankModule.cpp → Hot-reload (5 sec) → Test immediately
Edit config/tanks.json → Auto-reload (instant) → See changes live
Total : 5 seconds par iteration
```
### Claude Code Development Paradise
#### Contexte Ultra-Simple
- **TankModule.cpp** : 200 lignes de logique tank pure
- **EconomyModule.cpp** : 250 lignes de market simulation
- **FactoryModule.cpp** : 180 lignes de production logic
**Zéro infrastructure** dans le contexte Claude Code !
#### Autonomous Build System
```bash
cd modules/tank/
cmake . # PAS cmake .. !
make tank-module # → tank.so
./build/tank-module # Test isolé
```
#### Parallel Development
- **3+ instances Claude Code** travaillent simultanément
- **Zero conflicts** entre modules
- **Rapid iteration** sur logique pure
## 🔄 Integration avec Système Existant
### Migration Strategy
1. **Garder ancien code** comme fallback
2. **Créer modules** petit à petit
3. **A/B test** ancien vs nouveau
4. **Switch progressif** module par module
5. **Retire ancien** une fois validé
### Backward Compatibility
```cpp
class LegacyTankSystem; // Ancien code
class TankModule; // Nouveau code
class TankSystemProxy {
bool useNewSystem = config.getBool("use_new_tank_system");
json process(json input) {
if(useNewSystem) {
return newTankModule->process(input);
} else {
return legacyTankSystem->process(input);
}
}
};
```
## 📊 Métriques de Succès
### Développement
- **Context size** : 50K+ lignes → 200-300 lignes
- **Iteration time** : 5-10 minutes → 5 seconds
- **Parallel development** : 1 dev → 3+ Claude instances
- **Bug isolation** : Weeks → Hours
### Performance
- **Hot-reload time** : N/A → <5 seconds
- **Config changes** : Restart required Instant
- **A/B testing** : Impossible Trivial
- **Debugging** : Needle in haystack Surgical precision
### Maintenance
- **Module independence** : Tightly coupled Zero dependencies
- **Testing** : Integration hell Unit paradise
- **Deployment** : Monolith Microservices-like
- **Scaling** : Rewrite Configuration change
---
## Conclusion
L'architecture modulaire triple interface résout **4 problèmes majeurs** du développement de jeux complexes :
1. **Claude Code Efficiency** : Contextes micro-simples (200 lignes vs 50K+)
2. **Development Velocity** : Hot-reload + config system + parallel dev
3. **Performance Scaling** : Évolution progressive sans régression
4. **Security & Deployment** : Anti-cheat intégré + mode-based system
**Résultat** : Développement 10x plus rapide avec maintien de la qualité et performance AAA.
Cette architecture est particulièrement révolutionnaire pour le **développement avec IA**, la limitation principale est la taille du contexte que l'IA peut traiter efficacement.