project-mobile-command/CLAUDE.md
StillHammer 3dfaffc75a Setup initial: Mobile Command project with GroveEngine
- Architecture basée sur GroveEngine (hot-reload C++17)
- Structure du projet (src, config, external)
- CMakeLists.txt avec support MinGW
- GameModule de base (hot-reloadable)
- Main loop 10Hz avec file watcher
- Configuration via JSON
- Documentation README et CLAUDE.md

 Build fonctionnel
 Hot-reload validé
🚧 Prochaine étape: Prototype gameplay

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 11:05:51 +08:00

134 lines
3.4 KiB
Markdown

# 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/spdlog.h>
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/`