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

11 KiB

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

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

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

// 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

// 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

# 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é

[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

// 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

// 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

// 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

// 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

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

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

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

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, où la limitation principale est la taille du contexte que l'IA peut traiter efficacement.