Ava

Ava


Application web de jeu de cartes en temps réel, jouable en multijoueur ou contre l'ordinateur, avec comptes joueurs, liste d'amis et invitations. Front en React, API Symfony et synchronisation temps réel avec Mercure.

Le projet


Ava est [un jeu de cartes original / l'adaptation numérique du jeu de cartes …] pour [2 à X] joueurs. [Une ou deux phrases sur le principe : but du jeu, mécanique principale, durée d'une partie.]

L'objectif est de pouvoir jouer à Ava en ligne, depuis n'importe quel navigateur, avec ses amis ou seul contre l'ordinateur, sans rien installer. C'est un projet personnel, toujours en cours de développement.

Les fonctionnalités


  • Mode multijoueur en temps réel : chaque action d'un joueur apparaît instantanément chez les autres.
  • Mode contre l'ordinateur, pour s'entraîner ou jouer seul.
  • Comptes joueurs avec inscription et connexion.
  • Système d'amis : rechercher un joueur, l'ajouter en ami et l'inviter directement à une partie.
  • Invitations et salons de jeu : créer une partie, attendre que les joueurs rejoignent, puis lancer la manche.
Les choix techniques

Un jeu de cartes multijoueur pose un problème simple à énoncer et délicat à résoudre : tous les joueurs doivent voir le même état de la partie, au même moment, sans pouvoir tricher.

  • Le serveur fait autorité. Toute la logique de jeu (distribution, validation des coups, tours, score) tourne côté Symfony. Le client envoie des intentions et le serveur décide si le coup est valide, ce qui empêche toute triche côté navigateur. Les parties, les comptes et les relations entre joueurs sont stockés en MySQL.
  • Le temps réel passe par Mercure. À chaque changement d'état, l'API publie une mise à jour via le protocole Mercure, basé sur les Server-Sent Events, et chaque joueur ne reçoit que les informations qui le concernent, par exemple sa propre main. Les invitations et les notifications d'amis passent par le même canal.
  • Le front est en React et Zustand. L'interface est une application React, et l'état de la partie est géré avec Zustand, un store léger et lisible, bien adapté à des mises à jour fréquentes reçues en continu.
  • L'IA adverse : le mode contre l'ordinateur repose sur [un algorithme de décision simple / des heuristiques / …], exécuté côté serveur.

Où en est le projet

Ava est jouable en version de test. Les prochaines étapes : [équilibrage de l'IA, classement, historique des parties, version mobile…].

Boite à outils du projet:

  • React
  • Javascript
  • Zustand
  • Symfony
  • Mercure
  • Mysql
  • Sass
Aperçu du site Ava sur ordinateur
Aperçu du site Ava sur mobile