Aller au contenu
Tous les projets

Le spot 3.0

Plateforme de jeux multijoueur en temps réel, pensée pour le téléphone : cartes, dés, échecs, solitaire et une course. Un pseudo et un code PIN, pas d'inscription. Les places libres se remplissent avec des bots, dont un entraîné par machine learning.

Jeu
En cours
2026
depuis août 2026
  • Next.js
  • TypeScript
  • FastAPI
  • WebSocket
  • PyTorch
  • NumPy
  • PostgreSQL
  • Tailwind CSS
  • Three.js
  • Stockfish
  • PWA
Le spot 3.0

Au départ, un jeu de cartes auquel je joue avec mes amis, que personne n'avait porté en ligne : Nine to One. Il est devenu le premier jeu du Spot 3.0. On entre un pseudo, on crée une table, on partage son code : pas d'inscription, pas d'installation, l'adresse s'ouvre dans le navigateur du téléphone et la partie démarre. Le pseudo et le code PIN gardent les statistiques d'une fois sur l'autre.

Les jeux

Six pour l'instant. Nine to One, le Goulag et le Perudo se jouent à plusieurs autour d'une table. Le Solitaire se joue seul, chronométré, et c'est le serveur qui tire la donne et valide la victoire. Les Échecs ont un classement Elo, des bots Stockfish de 800 à 2500 qui tournent dans le navigateur et une analyse de la partie à la fin. RT1 est une course contre la montre en Nouvelle-Calédonie, encore en bêta. Chaque jeu a ses statistiques et son classement, avec le même pseudo partout.

Le temps réel

Chaque table vit dans la mémoire du serveur et parle aux joueurs par WebSocket. Le serveur est seul juge : il applique les règles, calcule les coups légaux et n'envoie à chaque joueur que ce qu'il a le droit de voir. Le client n'a aucune logique de jeu, il affiche un état et transmet des intentions.

Les moteurs de règles sont couverts par des tests. Un jeu de cartes, c'est avant tout une longue liste de cas particuliers, et chacun a fini par avoir son test après m'être fait avoir en partie.

Les bots

Trois niveaux sur Nine to One. Le premier joue un coup légal au hasard, le deuxième suit une heuristique écrite à la main, le troisième est un réseau de neurones entraîné par auto-jeu en apprentissage par renforcement, puis exporté en NumPy pour tourner en production sans PyTorch. Au moment de jouer, il complète sa décision par une recherche sur les cartes qu'il ne voit pas.

Ce bot ne triche pas : il reçoit exactement la vue d'un joueur assis à sa place. Il réfléchit dans un thread séparé, avec un budget de temps borné, pour que la boucle réseau continue de servir les autres tables pendant ce temps. Le processus complet tient dans 75 Mo, poids du réseau compris, sur un VPS partagé avec mes autres sites.

Ajouter un jeu

Pseudo, tables, chat, reconnexion, timer, revanche et statistiques sont communs. Un nouveau jeu n'écrit que ses règles, ce que voit chaque joueur et ses écrans.