Ce projet est un framework en C++ conçu pour le développement de bots d’intelligence artificielle dans un environnement en grille hexagonale. Réalisé dans un contexte académique, il vise à permettre l’implémentation de comportements autonomes, la navigation sur une carte complexe et l’exécution de missions multi-agents à travers une architecture modulaire et extensible.
Objectifs du Projet
- Développer une architecture robuste pour gérer des bots IA capables de naviguer dans un environnement hexagonal.
- Implémenter une logique de décision avancée à l’aide d’arbres de comportement.
- Gérer des missions dynamiques et coordonnées entre plusieurs agents.
- S’intégrer de manière transparente avec un moteur de jeu externe via des DLL.
Technologies Utilisées
- Langage principal : C++
- Scripting : Python et Batch (tests automatisés et soumission de matchs)
- Build System : CMake
- Interopérabilité : API Windows (
__declspec(dllexport), DLL)
Défis Rencontrés
- Modélisation d’un monde hexagonal : gestion des coordonnées, des obstacles et de la topologie.
- Arbre de comportement évolutif : conception modulaire des tâches pour la réutilisabilité et la clarté.
- Interopérabilité avec moteur externe : définition d’une API stable pour la communication en temps réel.
- Coordination multi-agent : maintien de la cohérence des états entre agents avec un système de mission dynamique.
Solutions Apportées
- Pathfinding efficace : implémentation de l’algorithme A* avec prise en compte d’obstacles dynamiques.
- Arbre de décision personnalisable : architecture de type
Selector,SequenceetTaskpermettant une prise de décision granulaire. - Système de missions générique : gestion flexible des objectifs à travers des missions imbriquées maître-esclave.
- Logging intégré : outils de débogage précis pour analyser les comportements au cours des matchs.
Structure Fonctionnelle
- BehaviorTree/ : Implémente les tâches de l’arbre de comportement (ex. :
Move_to_next,A_star_to_goal). - Framework/ : Contient les classes de base du bot (
AIBot,MyBotLogic,Logger). - Grid/ : Modélise le monde hexagonal et ses objets (NPCs, tuiles, objets interactifs).
- Missions/ : Définit et gère les objectifs assignés aux bots.
- Interop_API/ : Interface avec le moteur externe via DLL.
- Utils/ : Algorithmes utilitaires comme A* et gestion des coordonnées hexagonales.
- Scripts/ : Automatisation des tests, des soumissions et des matchs locaux.
Ce projet m’a permis de...
- Approfondir mes compétences en C++ avancé (modularité, STL, interopérabilité système).
- Maîtriser l’architecture de comportements IA basés sur des arbres de décision.
- Gérer efficacement des environnements complexes à l’aide d’algorithmes de pathfinding.
- Travailler sur l’intégration entre un moteur externe et une logique IA custom.
- Renforcer mes pratiques de structuration de projet et d’automatisation via scripts.