Un troisième joueur qui ne joue pas — il regarde, se souvient, commente, taquine, conseille.
| Jeu | Mode | Persona |
|---|---|---|
| Civilization VI | Events (Lua mod) + Screenshots | Pote de table coop |
| Crusader Kings III | Screenshots + Discussion | Chroniqueur de cour |
Les parties de stratégie sont longues. Même épiques, elles manquent de narration externe. Vous vivez l'histoire mais personne ne la raconte.
Ce narrateur est un compagnon de table :
- Accès total : voit le jeu via events ou captures d'écran
- Mémoire : se souvient des moments pivots (guerres, successions, alliances)
- Personnalité : ton varié, opinions, taquineries
- Utilité : alertes tactiques, suggestions stratégiques
- Présence : parle régulièrement (~2 min), audio partagé
Le modèle mental : un pote qui regarde votre partie par-dessus l'épaule, sauf qu'il a une vue omnisciente et une mémoire parfaite.
En français. Avec du caractère.
# Install Tesseract OCR (required)
sudo apt install tesseract-ocr tesseract-ocr-fra
# Install Python dependencies
pip install pytesseract pillow pyyamlL'OCR est obligatoire. Le système capture l'écran toutes les 5s, extrait le texte, et détecte les changements. C'est ce qui rend le narrateur réactif et économique.
# Configurer pour CK3
cat > narrator/state/config.json << 'EOF'
{
"game": "ck3",
"session_name": "Dynastie Valois",
"players": [
{"name": "Nico", "dynasty": "Valois", "character": "Duc Philippe"}
],
"visual_mode": true
}
EOF
# Lancer le daemon
./run.shLe narrateur démarre automatiquement avec l'OCR. Il capture l'écran toutes les 5s, extrait le texte (events, traits, notifications), et commente votre dynastie.
Sans OCR (non recommandé): ./run.sh --no-ocr
# Configurer pour Civ6
cat > narrator/state/config.json << 'EOF'
{
"game": "civ6",
"session_name": "Nico & Aurore - Domination",
"players": [
{"name": "Nico", "civ": "Allemagne", "is_local": true},
{"name": "Aurore", "civ": "Hongrie", "is_local": false}
],
"visual_mode": true,
"lua_log_path": "/mnt/c/Users/YOU/AppData/Local/Firaxis Games/Sid Meier's Civilization VI/Logs/Lua.log"
}
EOF
# Installer le mod Lua (voir civ6_mod/)
# Lancer le daemon
./run.sh┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Screenshots │────▶│ Claude Code │────▶│ Windows Audio │
│ (captures écran)│ │ (chroniqueur) │ │ (TTS out) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- Le daemon capture l'écran régulièrement (30s)
- Claude analyse les captures (personnages, traits, succession, intrigues)
- Claude génère la narration française
- TTS joue l'audio sur les enceintes
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Civ 6 Mod │────▶│ Claude Code │────▶│ Windows Audio │
│ (events.jsonl) │ │ (narrateur) │ │ (TTS out) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- Un mod Lua dans Civ 6 écrit les events dans
events.jsonl - Claude lit aussi les captures d'écran (optionnel)
- Claude génère la narration française
- TTS joue l'audio sur les enceintes
Le narrateur CK3 est un chroniqueur de cour, confident de dynastie :
- Commente les personnages et leurs traits
- Surveille la succession et les crises
- Observe les intrigues et complots
- Se souvient de l'histoire dynastique
- Juge les mariages et alliances
Registres : courtisan, épique, cynique, complice, prophétique
Le narrateur Civ6 est un ami qui regarde la partie :
- Alerte sur les dangers tactiques
- Commente les guerres et diplomatie
- Propose des défis et paris
- Taquine sur les choix et les merveilles
- Fait des callbacks sur le passé
Registres : épique, cynique, tactique, tendre, moqueur
| Module | Purpose |
|---|---|
daemon.py |
Orchestrateur principal |
src/game_profile_loader.py |
Charge le profil de jeu |
config/games/ |
Profils de jeu (civ6.yaml, ck3.yaml) |
narrator/CLAUDE.md |
Persona Civ6 |
narrator/CLAUDE_CK3.md |
Persona CK3 |
scripts/capture.py |
Capture d'écran |
scripts/ocr_watcher.py |
OCR continu + diff detection |
scripts/speak.py |
TTS ElevenLabs |
Screenshots (5s) → Tesseract OCR → Diff Detection → ocr_diffs.jsonl
↓ ↓
Region-based extraction High-priority changes
(event_popup, notifications) sent to Claude
L'OCR extrait le texte de régions spécifiques (popups, notifications) et détecte les changements. Seuls les changements significatifs déclenchent une narration.
narrator/state/config.json # Session courante
config/games/civ6.yaml # Profil Civ6
config/games/ck3.yaml # Profil CK3
config/personas_and_voices.yaml
| Option | Description |
|---|---|
game |
civ6 ou ck3 |
visual_mode |
Active les captures d'écran |
players |
Liste des joueurs et leurs personnages |
# Tests
pytest
# Health check
ngram doctor
# Tester le loader de profil
python3 src/game_profile_loader.pyEn développement actif. Multi-jeu fonctionnel via profils.