Repository navigation
Godot Chess est une application de jeu d'échecs multiplateforme avancée développée avec Godot 4, combinant une interface graphique moderne et une intelligence artificielle de niveau expert.
🌍 Plateforme & Portabilité
Desktop : Windows, Linux (X11), macOS (Intel & Apple Silicon)
Mobile : Android (avec plugin natif Java/JNI optimisé)
Web : Support HTML5/WebAssembly avec mode IA simulé
🎮 Modes de Jeu
Joueur vs IA : Affrontez Stockfish avec 10 niveaux de difficulté progressifs
Joueur vs Joueur : Mode local pour deux joueurs sur le même appareil
IA vs IA : Observez des parties autonomes entre moteurs
Mode Élimination Totale : Variante exclusive où la victoire nécessite l'élimination de toutes les pièces adverses (désactive les règles de mat/pat)
🏗️ Architecture Technique
Interface Graphique (Godot 4 / GDScript)
Rendu hybride 2D/3D pour un plateau dynamique et visuellement riche
Animations fluides : déplacements de pièces, indicateurs de coups, effets visuels (captures, promotions)
Système de scores : comptage en temps réel des pièces capturées avec icônes
Historique PGN : popup dédié listant tous les coups de la partie
Contrôles intuitifs : drag-and-drop, annulation/rejeu, flip du plateau
Backend & Moteur IA
Desktop (Linux/Windows/macOS)
Serveur UDP (Go/Golang) : processus intermédiaire ultra-rapide (iopiper)
Communication asynchrone via sockets UDP
Pipe bidirectionnel entre Godot et Stockfish
Isolation des processus pour stabilité maximale
Android
Plugin natif Java (
StockfishEngine.java
)
Intégration JNI du binaire ARM libstockfish.so
Communication directe via signals Godot (pas de UDP)
Gestion du cycle de vie et extraction automatique des .so
Web
Mock AI fallback : génération de coups aléatoires légaux en attendant WASM Stockfish
Support des règles complètes côté client (validation GDScript)
Intelligence Artificielle (Stockfish UCI)
10 niveaux de difficulté avec configuration granulaire :
Skill Level : 0 (débutant) → 20 (Grand Maître)
Temps de réflexion : 500ms à 4000ms (progression exponentielle)
Ressources : Hash tables (16-128 MB), Threads (1-2)
Taux d'erreur simulé : 40% (niveau 1) → 0% (niveau 10)
MultiPV : analyse de coups multiples pour variété de jeu
Timeout de sécurité : fallback sur coups légaux si moteur freeze
💾 Gestion de Partie
Format FEN : chargement/sauvegarde de positions arbitraires
Export PGN : historique complet avec notation algébrique
Validation stricte : règles FIDE (échec, mat, pat, roque, en passant)
Promotions configurables : activables/désactivables selon le mode
🎨 Expérience Visuelle
Pièces 3D texturées : modèles PNG haute résolution (blanc/noir)
Plateau paramétrique : mesh procédural avec éclairage dynamique
Effets spéciaux :
Indicateurs de coups légaux (highlight cases)
Animation de dernier coup joué
Suggestion visuelle du meilleur coup (optionnel)
UI adaptative : menus contextuels, popups, barres de score
🛠️ Détails Techniques
Détection OS automatique : sélection binaire optimisé (x64, ARM, WASM)
Gestion d'état robuste : FSM (Finite State Machine) pour flux de jeu
Communication asynchrone : timers de sécurité contre freeze moteur
Export multiformat : APK Android (armeabi-v7a), EXE Windows, binaire Linux
📦 Structure du Projet
ChessGame/
├── src/ # Projet Godot
│ ├── Main.gd # Logique principale (FSM, IA)
│ ├── Board.gd # Plateau & règles
│ ├── engine/Engine.gd # Abstraction moteur UCI
│ ├── pieces/ # Assets 3D
│ └── android/ # Build template Android
│ └── plugins/StockfishEngine/ # Plugin natif
├── bin/ # Binaires par plateforme
│ ├── linux/iopiper + stockfish
│ ├── windows/iopiper.exe + stockfish.exe
│ └── android/chess_final_signed.apk
└── builds/ # Exports finaux
🚀 Points Forts
✅ Architecture modulaire : abstraction plateforme complète
✅ Performances optimales : communication UDP/JNI, binaires natifs
✅ UX soignée : animations, feedback visuel, gestion erreurs
✅ Débogage avancé : logs détaillés, timeouts, fallbacks
✅ Production-ready : APK signé, builds optimisés, gestion mémoire
Un projet de référence pour explorer l'intégration de processus externes avec Godot, la communication inter-processus (IPC), et le développement d'interfaces de jeux de stratégie complexes multi-plateformes. Idéal pour comprendre les subtilités du packaging Android (JNI, AAR, Gradle), la gestion d'état avancée et l'optimisation cross-platform.