Ce projet vise à améliorer le comportement des ennemis dans un jeu vidéo en intégrant diverses techniques d’intelligence artificielle (IA). L’objectif est d’optimiser leurs réactions et leurs déplacements en utilisant des algorithmes avancés. Nous avons implémenté FSM (Finite State Machine), Pathfinding A*, Behavior Trees et GOAP (Goal-Oriented Action Planning).
- Améliorer le réalisme du comportement des ennemis.
- Implémenter un système de déplacement intelligent évitant les obstacles.
- Optimiser les performances du jeu pour garantir une exécution fluide.
- Langage : C++(17)
- Bibliothèque graphique : SFML
- Outils complémentaires : GitHub
- Séparation des différentes parties du code à l’aide de fichiers d’en-tête (.hpp).
- Utilisation de principes de programmation orientée objet tels que l’héritage et le polymorphisme pour garantir un code modulaire et extensible.
- Organisation du code avec des namespaces pour éviter les conflits.
La FSM permet aux ennemis d’adopter différents comportements en fonction des situations rencontrées. Un ennemi peut être dans l’un des états suivants :
- Patrouille : Déplacement sur un trajet défini.
- Chasse : Détection et chasse du joueur.
- Attaque : Combat à courte portée.
- Fuite : Retraite lorsque l’ennemi n’a plus de vie.
L’ennemi change d’état en fonction des conditions établies (distance avec le joueur, points de vie).
L’algorithme A* est utilisé pour déterminer le chemin le plus efficace vers une destination en prenant en compte les obstacles du terrain. Grâce à cette approche, les ennemis peuvent naviguer dans l’environnement de manière fluide et réaliste sans rester bloqués contre des obstacles.
Les arbres de comportement permettent une gestion hiérarchique des actions des ennemis. Chaque décision repose sur une série de tests conditionnels structurant leur comportement.
Exemple : Un ennemi blessé pourra choisir entre continuer le combat ou chercher un abri pour se soigner, en fonction de sa situation actuelle.
Contrairement aux comportements rigides des FSM ou des Behavior Trees, GOAP permet aux ennemis d’adopter des stratégies plus dynamiques. Ils établissent un plan en fonction des ressources disponibles et des objectifs à atteindre.
Exemple : Un ennemi cherchant à attaquer le joueur peut d’abord récupérer une arme avant d’engager le combat.
L’intégration de try-catch permet d’éviter les crashs en gérant les exceptions de manière sécurisée. (try-catch dans GOAP)
L’utilisation de std::unique_ptr et std::shared_ptr assure une gestion efficace de la mémoire.
- Amélioration de la réactivité des ennemis : Comportements plus réalistes et fluides.
- Gestion des erreurs
- Implémentation réussie des techniques d’IA.
- Optimisation des performances grâce à la gestion efficace de la mémoire.
- Dépôt GitHub : https://github.com/dark-dylan-93220/ProjetIA
- Outils utilisés : SFML, Git, Visual Studio, notre cerveau
Dylan Hollemaert & Lucas Marcucci