====== Ars Tactica: Rapport Intermédiaire - Cas d'Utilisation ====== Anonymous --> (Create Account) Player --> (Play a Game) (Play a Game) ..> (Queue up for a Game) : (Queue up for a Game) ..> (Log in to the Client) : Player <|-- Administrator Administrator --> (Ban Account) (Ban Account) ..> (Login in to the Admin) Administrator <|-- :System Administrator: :System Administrator: --> (Start Server) ===== Acteurs ===== ^ Nom ^ Description ^ | Anonymous | Utilisateur ne possédant pas de compte | | Player | Utilisateur possédant un compte | | Administrator | Rôle permettant d’administrer le système | ===== Rôles ===== ^ Nom ^ Description ^ | Create Account | Un utilisateur peut créer un compte | | Login to the Game | Un utilisateur peut s’authentifier auprès du serveur et récupérer une session | | Queue up for a Game | Un utilisateur peut entrer dans la file d’attente pour une partie | | Play a Game | Un utilisateur peut participer à une partie | | Login to the Admin | Un administrateur peut se connecter à l’interface d’administration | | Ban Account | Un administrateur peut bannir un joueur | | Start Server | Un administrateur système peut démarrer le serveur de jeu | ===== Scénarios ===== ==== Create Account ==== **Prérequis:** Le client doit être lancé - Le jeu présente l'écran de création de compte - L'utilisateur remplis le formulaire - L'utilisateur soumet le formulaire - Le client envoie une demande de création de compte au serveur - Le serveur crée le compte (''LoginSystem'') - Le serveur répond favorablement au jeu - Le jeu présente l'écran de connexion === Scénarios Alternatifs === * //Le compte existe déjà// - Le nom d'utilisateur est déjà pris - Le serveur répond de manière négative - Le jeu présente un message d'erreur à l'utilisateur ==== Login to the Game ==== **Prérequis:** Le client doit être lancé, L'utilisateur doit avoir crée un compte - Le jeu présente l'écran de connexion - L'utilisateur saisit ses credentials //(username, password)// - Le client envoie une demand de connexion au serveur - Le serveur authentifie l'utilisateur (''LoginSystem'') - Le serveur répond favorablement à la connexion - Le jeu présente le menu principal === Scénarios Alternatifs === * //Les credentials de l'utilisateur ne sont pas valides// - Le serveur répond de manière négative - Le jeu présente un message d'erreur à l'utilisateur ==== Queue up for a Game ==== **Prérequis:** L'utilisateur doit être authentifié auprès du serveur - L'utilisateur sélectionne la file d'attente de son choix (1v1, ...) - Le jeu envoie une notification au serveur - Le serveur place le joueur dans la file d'attente - Le serveur attend que suffisament de joueurs soient dans la file d'attente (2 joueurs pour du 1v1, 4 joueurs pour du 2v2, etc) - Le serveur crée le lobby et y place les joueurs - Le serveur notifie les clients de la création d'un Lobby - Le jeu affiche l'écran de Lobby - L'utilisateur signale qu'il est prêt - Le jeu envoie une notification au serveur - Le serveur attend que tous les joueurs soient prêts (ou que le timer interne soit échu) - Le serveur crée une partie et y place les joueurs - Le serveur notifie les clients du début de la partie - Le jeu affiche l'écran de jeu === Scénarios Alternatifs === * //Le timer du lobby expire// - Le serveur notifie les clients que le lobby est fermé - Le jeu affiche le menu principal - Le jeu affiche un message d'erreur ==== Play a Game ==== **Prérequis:** Le joueur doit être dans une partie - Le serveur notifie les clients qu'ils sont entrés dans une partie - Le jeu affiche l'écran de jeu - Le serveur crée l'état de jeu original - Le serveur détermine l'ordre de passage des joueurs - //A effectuer tant qu'il reste plus d'un joueur// - Le serveur informe les clients du joueur en cours - //Tant que le joueur peut effectuer une action// - Le joueur effectue une action (déplacement, attaque, ...) - Le serveur valide l'action et l'applique à l'état de jeu - Le serveur informe les clients des changements dans l'état de jeu - //Si un joueur à été éliminé// - Informer tous les joueurs du joueur éliminé - Le joueur termine son tour - Le serveur sélectionne le prochain joueur dans l'ordre de passage - La serveur notifie de la fin de la partie - Le jeu affiche le menu principal === Scénarios Alternatifs === * //La connexion est interrompue lors d'une partie// - Si un joueur met plus d'un certain temps à ne rien faire durant son tour il est éliminé * //Si un joueur est éliminé// - Le jeu affiche une notification "Vous avez perdu" - Le jeu affiche le menu principal ==== Login to the Admin ==== - L'administrateur ouvre son navigateur à l'adresse de la console d'administration - L'administrateur entre ses credentials pour se connecter - La console d'administration vérifie la validité des credentials - La console d'administration affiche son menu de gestion ==== Ban Account ==== **Prérequis:** Connexion à la console d'administration - L'administrateur sélectionne un compte utilisateur - L'administrateur ajoute un banissement ==== Start Server ==== - L'administrateur système se connecte au serveur - L'administrateur système lance l'application serveur