AIBootCamp — Framework C++ pour Bots IA Hexagonaux

Nov. 29, 2021

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.

Démonstration du bot IA en coopération

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, Sequence et Task permettant 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.

Commentaires