Introduction au Projet

Bienvenue dans la documentation de CyberCity. Ce projet est une application web complète permettant de créer, gérer et jouer à des jeux de plateau en temps réel. L'application est construite sur une architecture client-serveur moderne, utilisant Angular pour le frontend et Node.js avec TypeScript pour le backend.

Architecture Globale

L'application est divisée en deux parties principales qui communiquent entre elles :

Client (Frontend)

Serveur (Backend)

Flux de données et Communication

La communication entre le client et le serveur se fait principalement de deux manières :

  1. API REST : Utilisée pour les opérations CRUD sur les jeux (Create, Read, Update, Delete)

    • Endpoints exposés par le GameManagerController
    • Utilisée principalement pour la gestion administrative des jeux
  2. WebSockets (Socket IO) : Communication bidirectionnelle en temps réel

    • Utilisée pour toutes les interactions de jeu (déplacements, combats, chat)
    • Mise à jour instantanée de l'état du jeu pour tous les joueurs
    • Système d'événements et de salles pour isoler les communications par partie

Le diagramme (à venir tkt ...) suivant illustre le flux typique d'une partie :

  1. Le joueur se connecte à l'application
  2. Il crée une partie ou rejoint une partie existante via un code
  3. Les joueurs se retrouvent dans une salle d'attente
  4. La partie commence, le serveur gère l'état du jeu et les tours
  5. Les joueurs interagissent via l'interface, envoyant des commandes au serveur
  6. Le serveur traite les commandes, met à jour l'état du jeu et diffuse les mises à jour
  7. À la fin de la partie, les statistiques sont calculées et affichées

Organisation de la Documentation

La documentation est organisée en trois sections principales pour faciliter la navigation et la compréhension du projet :

1. Documentation Principale (Vous êtes ici)

2. Documentation Coté Client

La documentation côté client est organisée par pages et fonctionnalités principales :

3. Documentation Coté Serveur

La documentation côté serveur est organisée par domaines fonctionnels :

Par où commencer ?

Si vous découvrez ce projet :

  1. Pour comprendre la structure globale :
    • Commencez par cette page principale pour avoir une vue d'ensemble
    • Consultez la section "Application Principale" dans la documentation client et “Infrastructure et Configuration” dans la documentation serveur.
  2. Pour comprendre le flux utilisateur :
    • Explorez les pages dans l'ordre d'utilisation typique :
      • Page d'Accueil → Création de Partie → Création de Personnage → Salle d'Attente → Vue de Jeu → Statistiques
  3. Pour comprendre la logique du jeu :
    • Consultez la section "Gestion des Parties" dans la documentation serveur
    • Puis explorez le "Système de Combat" et la "Gestion des Joueurs"
  4. Pour comprendre l'interaction en temps réel :
    • Consultez la section "Gestion des WebSockets" dans la documentation serveur
    • Puis explorez les services de communication dans la documentation client

Entités Principales du Jeu

Pour mieux comprendre le domaine du jeu, voici les principales entités et leurs relations :