L'intégration de l'apprentissage par renforcement profond dans les jeux de cartes a franchi une étape majeure avec l'algroithme DouZero. Le projet DouZero_For_HappyDouDiZhu adapte cette technologie pour offrir un assistant de décision en temps réel capable d'analyser des situations complexes et de proposer des stratégies optimales pour le jeu de cartes chinois Dou Di Zhu.
Architecture et Modèles de Décision
Le moteur s'appuie sur trois variantes de modèles pré-entraînés, chacun optimisé pour un objectif spécifique de théorie des jeux :
- Modèle WP (Win Probability) : Situé dans
baselines/douzero_WP/, cet agent est conçu pour maximiser strictement le taux de victoire, indépendamment de l'écart de points final. - Modèle ADP (Average Difference Points) : Localisé dans
baselines/douzero_ADP/, il vise à maximiser la différence de score moyenne, une approche plus agressive adoptée aux tournois à points. - Modèle SL (Supervised Learning) : Stocké dans
baselines/sl/, ce modèle imite les comportements humains extraits de jeux de données massifs pour une approche de jeu plus naturelle.
Système de Vision par Ordinateur
L'assistant utilise des techniques de traitement d'image pour extraire l'état du jeu sans interaction directe avec la mémoire du processus. Les fonctionnalités incluent :
- Détection des cartes en main avec une précision supérieure à 98%.
- Identification automatique du rôle (Landlord ou Paysan).
- Suivi historique des cartes jouées pour le comptage dynamique.
- Analyse visuelle des cartes restantes dans le talon.
Déploiement Technique
Pour initialiser l'environnement de l'assistant, suivez cette procédure en ligne de commande :
# Clonage du dépôt et configuration de l'environnement virtuel
git clone https://gitcode.com/gh_mirrors/do/DouZero_For_HappyDouDiZhu assistant_doudizhu
cd assistant_doudizhu
python -m pip install --upgrade pip
pip install -r requirements.txt
Configuration des Coordonnées de Capture
L'interaction repose sur la capture précise de zones spécifiques de l'écran. Si l'interface du jeu est redimensionnée, les coordonnées dans la classe MyPyQT_Form du fichier main.py doivent être ajustées :
# Exemple de structure de configuration des régions d'intérêt (ROI)
config_zones = {
"zone_main_joueur": (414, 804, 1041, 59),
"zone_jeu_gauche": (530, 470, 380, 160),
"zone_jeu_droite": (1010, 470, 380, 160),
"bouton_passer": (800, 600, 100, 50)
}
Flux Opérationnel de l'IA
Une fois lancé via python main.py, l'assistant suit un cycle de traitement itératif :
- Acquisition : Capture de la fenêtre de jeu et segmentation des cartes par reconnaissance de formes.
- Inférence : Transmission de l'état du jeu (vecteur de cartes) au modèle neuronal choisi.
- Recommandation : Affichage sur l'interface graphique de la combinaison de cartes offrant la plus haute valeur stratégique.
- Actualisation : Mise à jour de l'état interne après que le joueur a validé son coup manuellement.
Optimisation des Performances et Débogage
Pour garantir une réactivité maximale de l'IA, plusieurs paramètres peuvent être affinés :
- Ajustement de la résolution : Le système est calibré pour une résolution native de 1920x1080. L'utilisation de l'outil
pos_debug.pypermet de recalibrer les masques de détection en cas de décalage. - Gestion de la latence : Réduire la charge GPU en fermant les processus tiers améliore la vitesse d'inférence du modèle Deep Monte Carlo (DMC).
- Traitement des effets visuels : Certains effets spéciaux de "bombe" ou de "fusée" peuvent masquer temporairement les cartes. Il est recommandé d'attendre la fin de l'animation avant de solliciter une nouvelle analyse.
Structure du Code Source
Le projet est organisé de manière modulaire pour faciliter l'extension des fonctionnalités :
douzero/dmc/: Implémentation de l'algorithme Deep Monte Carlo.douzero/env/: Logique métier des règles du Dou Di Zhu et simulateur d'environnement.douzero/evaluation/: Scripts de test pour comparer les performances entre différents agents.