Retour aux projets

Projet

Bomberman IA

Agents PPO + 1er prix du public - GameJAM.

Annee: 2024

Contenu du projet

Bomberman IA

GameJAM Scientifique 2024 · 1er prix du public · Architecture split front/back avec agents entraînés par apprentissage par renforcement (PPO).

Contexte

Projet développé dans le cadre de la GameJAM Scientifique 2024. L'objectif était de créer un jeu Bomberman multijoueur avec des agents IA capables de jouer contre des humains. Le projet a remporté le 1er prix du public.

Architecture divisée en deux dépôts distincts :

Architecture

Frontend (Vue.js + Phaser)
        ↓ WebSocket
Backend Python (FastAPI)
  ├── Moteur de jeu (grille, bombes, explosions)
  ├── Agents PPO (TensorFlow)
  └── Redis (état de jeu partagé)

Le backend gère l'état canonique du jeu. Le frontend est un rendu pur — il reçoit l'état à chaque tick et affiche sans recalculer la logique.

Agents IA

Les agents sont entraînés avec l'algorithme PPO (Proximal Policy Optimization) via TensorFlow. L'état du jeu est encodé en grille 2D (position des joueurs, bombes actives, murs, power-ups) et passé en entrée d'un réseau de neurones convolutif.

L'entraînement s'est fait en self-play — les agents jouent les uns contre les autres, ce qui évite le surapprentissage contre un adversaire fixe.

Actions disponibles : déplacement dans 4 directions + poser une bombe + rester.

Ce qui était difficile

Synchronisation temps réel. Avec plusieurs joueurs connectés simultanément, garantir que tous voient exactement le même état de jeu au même moment a nécessité une gestion fine des ticks serveur et des deltas envoyés aux clients.

Récompenses IA. Définir une fonction de récompense pertinente pour Bomberman n'est pas trivial — récompenser la survie, les éliminations, ou les deux ? J'ai testé plusieurs variantes avant de trouver un équilibre qui donne des agents agressifs mais pas suicidaires.

Stack

  • Python — moteur de jeu, entraînement IA
  • TensorFlow — modèle PPO
  • Vue.js + Phaser — interface de jeu
  • FastAPI — API et gestion WebSocket
  • Redis — état de jeu partagé
  • Docker — conteneurisation du backend

Technologies

PhaserTensorFlowVue.js

Liens

Lien public non disponible pour ce projet.