# Claude - Mobile Command Development ## Rôle Je suis l'assistant de développement pour le projet Mobile Command. ## Contexte du Projet **Mobile Command** est un jeu de gestion/survie où le joueur commande un train blindé mobile à travers l'Ukraine en guerre (2022-2025). ### Stack Technique - **Engine**: GroveEngine (C++17 hot-reload module system) - **Build**: CMake 3.20+ avec MinGW/GCC - **Architecture**: Main loop + modules hot-reloadable ### Structure du Projet ``` mobilecommand/ ├── external/GroveEngine/ # Lien symbolique vers ../groveengine ├── src/ │ ├── main.cpp # Boucle principale (10Hz) │ └── modules/ # Modules hot-reloadable (.dll) │ └── GameModule.* # Module de jeu principal ├── config/ │ └── game.json # Configuration └── build/ # Dossier de build ``` ## Workflow de Développement ### Build Initial ```bash cmake -B build -G "MinGW Makefiles" cmake --build build -j4 ``` ### Hot-Reload Workflow 1. Le jeu tourne: `./build/mobilecommand.exe` 2. Éditer un module: `src/modules/GameModule.cpp` 3. Rebuild: `cmake --build build --target modules` 4. Le module se recharge automatiquement avec préservation d'état ### Commandes Utiles ```bash # Build complet cmake --build build -j4 # Build modules seulement (rapide) cmake --build build --target modules # Run cd build && ./mobilecommand.exe ``` ## Principes GroveEngine ### Modules - Héritent de `grove::IModule` - Implémentent: `process()`, `getState()`, `setState()`, `shutdown()` - Chargés dynamiquement (.dll/.so) - Hot-reload < 1ms avec état préservé ### Communication - `grove::IIO` pour pub/sub entre modules - Messages via `grove::IDataNode` (JSON) - Topics: `module:event` (ex: `game:tick`, `train:damaged`) ### Configuration - Fichiers JSON dans `config/` - Chargés via `grove::JsonDataNode` - Hot-reload de config supporté ## Roadmap ### Phase 1 - Setup (COMPLÉTÉ) - [x] Structure projet - [x] GroveEngine intégré - [x] Build system - [x] Hot-reload validé ### Phase 2 - Prototype Gameplay (EN COURS) - [ ] Train basique (3 wagons) - [ ] Système de craft simple - [ ] 1 mission de combat - [ ] 3-5 événements - [ ] Boucle de jeu complète ### Phase 3 - MVP - [ ] Train complet - [ ] Système d'expéditions - [ ] Campagne Act 1 ## Conventions de Code ### Modules - Nom: `XyzModule` (PascalCase) - Fichiers: `XyzModule.cpp` + `XyzModule.h` (optionnel) - Exports: `createModule()` et `destroyModule()` ### Logging ```cpp #include spdlog::info("[ModuleName] Message"); spdlog::debug("[ModuleName] Debug info"); spdlog::error("[ModuleName] Error message"); ``` ### Configuration ```cpp auto config = loadConfig("config/module.json"); int value = config->getInt("key", defaultValue); ``` ## Objectifs du Projet ### Primaire Créer un jeu de gestion/survie autour d'un train blindé mobile ### Secondaire Valider GroveEngine en conditions réelles de production ## Notes Importantes - Le projet est en phase prototype - Focus sur la validation des mécaniques de base - Hot-reload est essentiel au workflow - Garder les modules simples et focalisés ## Ressources - **Concept complet**: `../couple-repo/Projects/CONCEPT/mobile_command_v2.md` - **GroveEngine docs**: `external/GroveEngine/README.md` - **Architecture GroveEngine**: `external/GroveEngine/docs/architecture/`