
Challenge technique : moteur décisionnel IA
Contexte
Dans le cadre d'un processus de recrutement, il m'a été demandé de participer à un challenge CodinGame. L'objectif était de développer un bot capable d'atteindre la ligue Or sur le challenge Soak Overflow.
Le jeu oppose 2 équipes d'agents sur une grille. Chaque tour, chaque agent doit choisir un déplacement et une action (tir, lancer de bombe ou défense) pour maximiser les chances de victoire tout en tenant compte des déplacements alliés, du contrôle du territoire, des couvertures et des nombreuses interactions tactiques.
Objectifs
Au-delà du classement, j'ai choisi de concevoir un moteur de décision :
- modulaire;
- explicable;
- facilement améliorable;
- basé sur des règles métier plutôt que sur des scores/coefficients difficiles à interpréter.
Solution
Le cœur du projet repose sur un moteur de décision individuel exécuté pour chacun des agents.
Chaque décision combine plusieurs niveaux d'analyse:
- évaluation des menaces;
- évaluation des opportunités offensives;
- estimation des dégâts effectifs en fonction des couvertures;
- contrôle territorial;
- recherche du meilleur déplacement via BFS;
- coordination entre alliés grâce à une simulation de l'état du tour courant.
L'architecture sépare clairement les responsabilités entre la représentation de la carte, les calculs spatiaux, les agents, le contexte de jeu et la construction des actions.
Approche
Le projet a fortement évolué au cours du développement.
Une première architecture, basée principalement sur des stratégies collectives, a rapidement atteint ses limites malgré de nombreuses itérations.
Plutôt que de multiplier les cas particuliers, j'ai choisi de remettre entièrement cette approche en question pour recentrer la logique autour d'un moteur de décision individuel beaucoup plus complet.
Chaque évolution était validée expérimentalement à l'aide d'un script automatisant plusieurs exécutions du challenge, pour limiter l'impact de la variabilité des classements.
Cette démarche m'a permis d'identifier les changements réellement bénéfiques et de progresser jusqu'à la ligue Or.
Résultat

Au-delà du classement obtenu, ce projet illustre surtout ma manière d'aborder un problème complexe : construire une solution compréhensible, mesurer objectivement son efficacité, puis remettre en question mes choix lorsque les résultats montrent qu'une approche a atteint ses limites.
Consulter la présentation détaillée du projet