You are here: Links of Interest » HEIG-VD » [GEN] Génie Logiciel » Ars Tactica: Plan d'itérations
Ars Tactica: Plan d'itérations
This is an old revision of the document!
Table of Contents
Ars Tactica: Plan d'itérations
Le plan d'itérations considère les semaines du Jeudi au Mercredi suivant. Ceci est pour permettre d'avoir une réunion lors des séances de Laboratoire le Jeudi après-midi.
Equipes de Travail
- Client
- Samuel
- Christophe
- Serveur
- Laureline
- Yves
Travail déjà Réalisé
- Squelette de projet
- Mise en place du gestionnaire de paquets Netty
Iteration 1
<columns 100% 50% 50%> Dates 14 Avril - 20 Avril
Charge de Travail 4h30 par personne (total 18h)
Objectifs
- Réaliser Log in to the Client (logique client)
- Réaliser Create Account (logique client)
- Réaliser Log in to the Client (logique serveur)
- Réaliser Create Account (logique serveur)
<newcolumn>
Implémentation
Client
- Mise en place des écrans (stubs)
LoginScreen
,MenuScreen
,LobbyScreen
etGameScreen
. - Implémenter la logique du
LoginScreen
- Utilisation de service dummy pour la gestion du réseau.
Serveur
- Gestionnaire de Réseau
NetworkHandler
(Module Partagé)- Enregistrer un handler de réponse
- Enregistrer un handler pour un type de paquet (Pour Client)
- Notification lors d'une réponse à un paquet
- Mise en place du
LoginHandler
- Mise en place de base de données utilisateur
</columns>
Bilan
<columns 100% 50% 50%> Avancement des Objectifs: 100%
Révision des Itérations: Les itérations suivantes ont été déplacées d'une semaine vers l'avant en éliminant l'itération tampon. Ceci nous calque sur le programme “normal”.
Améliorations Possibles: Optimiser la répartition des tâches entre les membres du groupe. Ceci est difficile principalement à cause du manque d'expérience avec des “gros” projets de cerains membres du groupe.
<newcolumn>
Laureline (~6h)
- Effectué la mise en place du NetworkHandler.
Samuel (~15h)
- Création des dummy classes pour les tests
- Création du LoginScreen, LobbyScreen, CreateScreen, MainMenu
- Implémentation partielle de la logique du LobbyScreen
Yves (10h)
- Création de la base de donnée
- Mise en place du LoginHandler
L'effort prévu ne prenait pas en compte le manque de connaissance vis à vis du language. C'était la perte de temps la plus importante, les itérations futures ne subiront normalement pas cela.
Christophe (6h)
- Aide à l'implémentation du LobbyScreen
Malheureusement j'ai perdu beaucoup de temps à cause du langage et de la compréhension globale de la structure du projet. Le partage du travail ne s'est pas fait équitablement au final, ce qui est dommage car certains ont travaillé plus que d'autres. Avec la génération de la map je vais pouvoir plus m'impliquer. </columns>
Iteration 2
<columns 100% 50% 50%> Dates 28 Avril - 4 Mai
Charge de Travail 4h30 par personne (total 18h)
Objectifs
Pouvoir effectuer une demande de matchmaking, entrer dans un lobby et “lancer” une partie une fois que tous les joueurs sont prêts
- Intégrer la communication client/serveur
- Réaliser Queue up for a Game
- Réaliser Log in to the Admin
<newcolumn>
Implémentation
Client
- Mettre en place le
NetworkManager
utilisant le réseau - Implémenter la logique du
MenuScreen
etLobbyScreen
Serveur
- Mise en place du
LobbyHandler
- Mise en place du système de Matchmaking
Admin
- Mettre en place l'application web
- Se connecter à la base de données du jeu
</columns>
Bilan
<columns 100% 50% 50%> Avancement des Objectifs: Client (70%), Serveur (70%), Admin (70%)
Explication du Retard: Mauvaise gestion du temps par rapport aux autre projets et laboratoires en cours.
Révision des Itérations: Les itérations ne vont pas être replanifiées le ratrd peut être rattrapé.
<newcolumn>
Laureline (~6h)
- Création du
LobbyHandler
- Mise en place du sytème de matchmaking
Les modules ont été mis en place, mais ils n'ont pas pu être testés car le client n'était pas implémenté.
Samuel (3h)
- Avancement dans la logique du Lobby Screen
Yves (0h)
- Rien fait…
Christophe (0h)
- Rien fait…
</columns>
Iteration 3
<columns 100% 50% 50%> Dates 5 Mai - 11 Mai
Charge de Travail 4h30 par personne (total 18h)
Objectifs
Initialiser l'état de jeu côté serveur et le transmettre au client.
- Réaliser Play a Game (initialisation)
- Réaliser Ban Account (admin side)
<newcolumn>
Implémentation
Client
- Recevoir l'état de jeu
- Afficher la carte
- Afficher les acteurs (bâtiments, unités)
Serveur
- Initialiser l'état de jeu
- Charger la carte
- Définir le Turn Order
- Placer les Bases
- Le transmettre au client
Admin
- Mettre en place une interface pour bannir un joueur
</columns>
Bilan
<columns 100% 50% 50%> Avancement des Objectifs: Client (0%), Serveur (0%), Admin (0%)
Explication du Retard: Mauvaise gestion du temps par rapport aux autre projets et laboratoires en cours.
Révision des Itérations: Les itérations ne vont pas être replanifiées le retard peut être rattrapé.
Révision Itération 2: Le match making a été partiellement implémenté, et présentait un bug non-directement résolvable. Il a donc été choisi que cet élément, non-indispensable au fonctionnement du jeu, serait supprimé de l'implémentation finale. Ceci permettra de rattraper le retard accumulé lors de cette itération (itération 3).
<newcolumn>
Laureline (~6h)
- Création d'un client de débug
La création d'un client de débug permet de tester les changements dans le serveur sans attendre que le client fasse ces modifications ce qui permet d'accélérer le développement du serveur.
Samuel (0h)
- Hum…
Yves (0h)
- Rien fait…
Christophe (3h)
- Tests et tuto libgdx avec Tiled
</columns>
Iteration 4
<columns 100% 50% 50%> Dates 12 Mai - 18 Mai
Charge de Travail 6h00 par personne (total 24h)
Objectifs
Gérer le passage de tours entre les joueurs.
- Réaliser Play a Game (initialisation)(passage de tours)
- Réaliser Ban Account (admin side)(server side)
<newcolumn>
Implémentation
Client
- Afficher la carte (données de test)
- Afficher les acteurs (bâtiments, unités) (données de test)
- Gérer l'affichage des tours (données de test)
- Afficher le joueur en cours
- Afficher le bouton “End Turn” pour terminer son tour
- Cacher le bouton “End Turn” hors tour
Serveur
- Initialiser l'état de jeu
- Charger la carte
- Placer les Bases
- Définir le Turn Order
- Gérer le passage de tour entre les joueurs
- Envoyer les paquets
- Assurer que seul le posséseur du jeton de tour peut terminer son tour
- Gérer les joueurs bannis dans le login manager
Admin
- Compléter l'admin (Login admin, bannir et lister les joueurs)
</columns>
Bilan
<columns 100% 50% 50%> Avancement des Objectifs: Client (90%), Serveur (90%), Admin (100%)
Explication du Retard: Le retard se situe seulement au niveau de la gestion des tours côté client et serveur. Ce n'est pas terminé, mais fini à 80% de chaque côté.
Révision des Itérations: La gestion des tours est presque terminée et sera rattrapée durant l'Itération suivante. Il reste environ 1h de travail partagée entre chaque côté, pour terminer cela.
Avance: La gestion du déplacement des unités a été implémentée, côté client, dans cette Itération au lieu de l'itération 5, ceci pour effectuer des tests sur la gestion de la carte. Cette étape est donc presque terminée du côté client.
<newcolumn>
Laureline (6h)
- Initialisation de l'état de jeu
- Correction de bugs divers
Samuel (2h)
- Correction sur le MainMenu
- Test du LoginScreen
Yves (~4h)
- Création de l'interface d'administration (4h)
Christophe (6h)
- Chargement d'un écran de jeu (map) avec tests de chargement de différentes sprite (base, unité)
- Test de gestion de la souris, clic, drag and drop
- Test de gestion des entrées clavier
</columns>
Iteration 5
<columns 100% 50% 50%> Dates 19 Mai - 25 Mai
Charge de Travail 5h00 par personne (total 20h)
Objectifs
- Réaliser Play a Game (gras = fait)
- 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 (retard)
- Le serveur informe les clients des changements dans l'état de jeu (retard)
- 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
<newcolumn>
Implémentation
Client (10h - Samuel et Christophe)
- Recevoir l'état de jeu
- Sélection d'unité à l'aide de la souris (70% done)
- Requète de déplacement lors d'un clic droit (70% done)
- Afficher un message lors d'un refus du serveur
- Déplacement d'une unité lors d'un message du serveur (70% done)
Serveur (10h - Laureline et Yves)
- Transmettre l'état de jeu au client
- Gestion de la requête de déplacement
- Broadcast si succès
- Reply si échec
Admin (1h - Yves)
- Afficher l'historique des parties dans l'admin
</columns>
Bilan
<columns 100% 50% 50%> Avancement des Objectifs: Client (40%), Serveur (50%), Admin (100%)
Révision des Itérations: La gestion du déplacement d'une unité côté client a été implémentée en partie dans l'itération 4.
Explication du retard:
- Les transferts réseaux entre le client et le serveur demandent que l'on puisse sérializer les objets ciblés (carte, unités, etc.). Ceci a pour impact de devoir implémenter un serializer, car l'ECS (Entity Component System) Ashley n'est pas compatible avec l'interface serializable.
- L'interactor est un objet complexe, qui permet de synchroniser l'état de jeu et la gestion graphique du jeu (clic souris, etc.). Il a besoin de l'intégration du réseau notamment, nous avons donc pris du retard là dessus.
Améliorations Possibles: Prévoir ce que les tâches (transfert, etc.) vont devoir utiliser en background, le serializer par exemple.
<newcolumn>
Laureline (8h)
La transmission de l'état de jeu nécéssite l'implémentation d'une serialisation personnalisée pour pouvoir effectuer les synchronisations différentielles.
L'implémentation malheureusement pris plus de temps que prévu et n'est toujours pas terminé. Le retard est du à plusieurs tentatives de solutions qui n'ont pas abouti.
Samuel (4h)
- Création de l'Interactor (Mise à jour du GameState à partir des informations provenant du serveur).
- Mise en place de la logique de mise à jour de l'interface graphique.
Yves (1h)
- Création de la page statistiques (historique des parties) déjà implémentée dans l'itération 4 (avance).
Christophe (4h)
- Implémentation Requête de déplacement (70% avance étape 4)
- Ajout de la gestion d'objets graphique par cellule (et non plus par pixel)
</columns>
Iteration 6
<columns 100% 50% 50%> Dates 26 Mai - 1e Juin
Charge de Travail 5h par personne (total 20h)
Objectifs
Gestion des actions (dépendantes des archétypes) des acteurs
- Réaliser Play a Game en entier
- 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
<newcolumn>
Implémentation
Client (10h) Christiophe et Samuel
- Synchronisation état de jeu et gui (Interactor)
- Afficher un panneau d'actions pour l'unité/bâtiment sélectionné
- Requète d'action au serveur
- Afficher un message lors d'un refus du serveur
- Mettre à jours l'affichage lors du succès
Serveur (10h) Yves et Laureline
- Terminer le serializer
- Gestion des requètes d'action
</columns>
Iteration 7
<columns 100% 50% 50%>
Dates 2 Juin - 8 Juin
Charge de Travail 4h30 par personne (total 18h)
Objectifs Finaliser la documentation du projet
<newcolumn>
</columns>
Iteration 8
<columns 100% 50% 50%>
Dates 9 Juin - 15 Juin
Charge de Travail 4h30 par personne (total 18h)
Objectifs Préparation de la présentation
<newcolumn>
</columns>
16 Juin 2016
Rendu du projet et Présentation.