8 Américain

Jeu de carte multijoueur en temps réel

Date : mars 2016

Type : Projet tutoré agile

Rôle : Conception, développement, graphismes

Compétences et outils : NodeJS, SocketIO

Le 8 américain est un jeu de cartes "classique" ayant inspiré le célèbre jeu Uno. Ses règles étant simple à comprendre, je suis partie sur cette base pour ce projet de fin d'année.

Objectifs

Mon objectif était de créer une application web permettant un jeu multijoueur en temps réel autours de la règle revisitée du 8 américain. En effet, ce jeu se joue traditionnellement à 4 ou 5 joueurs. J'ai fait le choix de restreindre la partie à 2 joueurs en adaptant légèrement la règle.

Fonctionnalitées implémentées

  • Consultation des règles du jeu
  • Lancement d’une partie : lorsqu’un joueur lance une partie, il crée une pièce de jeux dans laquelle d’autres joueurs peuvent le rejoindre s’ils recherchent également une partie. Il peut également inviter ses amis à le rejoindre. Un joueur peut sélectionner une carte et la déplacer jusqu’à l’écart. De leur côté, les adversaires voient cette carte de dos se déplacer sur le plateau puis apparaître sur le haut de l’écart si elle est acceptée. Une notification avertira le joueur en cas d’erreur et de refus de la carte. L’effet d’une carte jouée s’applique immédiatement. Il peut également piocher une carte si aucune carte de sa main ne lui permet de jouer, avant de passer son tour. Un joueur dont c’est le tour dispose d’un certain temps pour jouer, si le temps impartis est atteint, il pioche automatiquement et passe son tour. Lorsqu’un joueur quitte la partie, il déclare forfait et, s’il s’agit d’une partie à plus de deux joueurs, ses cartes sont mélangées au talon.
  • Consultation de l’historique des actions : le joueur peur consulter, à tout moment de la partie, la liste des actions effectuées depuis le lancement de la partie.

table de jeu
Affichage d'une partie en cours

La réalisation

Dans un premier temps, j'ai réalisé une analyse des jeux de cartes multijoueurs existant. En étudiant les fonctionnalités des jeux de carte classiques ainsi que des jeux de cartes à collectionner (Magic, Hearthstone), j'ai pu définir les fonctionnalités nécessaires au fonctionnement de l'application.

De multiples diagrammes d'état et de séquence ont été réalisés en amont afin de visualiser et anticiper les échanges de données ainsi que pour s'assurer que les actions prévues au cours d'une partie respectent bien la règle du jeu.

actions des cartes
Diagramme d'état présentant les interactions entre les cartes
exemple de diagramme de séquence
Diagramme de séquence présentant une partie d'un tour de jeu.

Afin de garantir le fonctionnement en temps réel, ce jeu a été développé à partir d'un serveur Nodejs et à l'aide de websockets via la librairie Socket IO qui permet une communication bi-directionnelle en temps réel. Tout au long du développement, des rapports d'avancement ont été préparés et communiqués deux fois par semaine afin de permettre un suivi du projet et un ajustement des fonctionnalités au temps de développement restant.

Conclusion

Ce projet m'a permis d'approfondir ma maîtrise de NodeJS tout en y incluant les web sockets. A l'issue de ce développement de trois semaines, plusieurs axes d'amélioration ont pu être dégagés tels que la possibilité pour les utilisateurs de jouer plusieurs manches par partie et de jouer à plus de deux joueurs. Une autre fonctionnalité à développer pourrait être l'enregistrement de statistiques de jeu. Pour en savoir plus, n'hésitez pas à télécharger le rapport de projet.

Télécharger le rapport