BlitzVolley
Un jeu de volley en ligne à deux joueurs, dans le navigateur : parties classées, classement Elo, bots et mode carrière.
Essayer

Se charge dans la page, au clic seulement.
C’est du temps réel, donc l’ensemble des problèmes qui rendent un jeu en ligne difficile : la latence, la synchronisation des états, et la question de savoir qui fait autorité quand deux machines ne sont pas d’accord. Autour, il a fallu un appariement, un classement Elo, des bots pour remplir les parties vides et un mode carrière pour donner une raison de revenir.
Animation en boucle d’un match complet entre un humain et un bot à réseau de neurones, point par point, score affiché.
Les bots ont ensuite reçu un module d’apprentissage : un réseau de neurones entraîné par renforcement (PPO) sur la physique même du jeu, rejouée sans affichage par des processus parallèles. Il progresse contre une échelle de bots classiques, puis contre ses propres versions passées. Le réseau et son entraînement sont écrits sans bibliothèque : une inférence coûte bien moins d’un dixième de milliseconde, ce qui tient dans le budget d’un serveur qui calcule 120 images par seconde. Les niveaux de difficulté sont des instantanés du même bot à différents stades de son entraînement.
Le noyau de la physique est plus ancien que le jeu en ligne : il vient de Blobby Volley, un jeu à deux sur le même clavier écrit en Python pendant la prépa. Ce premier jeu esquissait déjà un adversaire piloté par un réseau de neurones, que des mutations aléatoires devaient faire progresser ; il n’a jamais appris à jouer.
Le serveur tourne sur une machine administrée en propre : mises à jour, surveillance, sauvegardes, incidents à deux heures du matin. Rien de tout cela n’est visible depuis le terrain de volley, ce qui est le résultat recherché.
C’est aussi le projet le plus instructif sur ce qui ne relève pas du code, à commencer par la distance considérable entre un jeu qui fonctionne et un jeu qu’on a envie de relancer.