poly defense - fladnag · 2018-01-13 · poly defense – rapport final version 8 du 07/02/2015...
TRANSCRIPT
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016
Dylan GALMICHE et Maxence MOHR – IRM2016 POLYTECH MARSEILLE | 162 AVENUE DE LUMINY – 13009 MARSEILLE
Poly Defense RAPPORT FINAL
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016
Sommaire
Analyse ................................................................................................................................................................................ 2
Présentation du projet .............................................................................................................................................. 3
Présentation générale .......................................................................................................................................... 3
Présentation de l’équipe ..................................................................................................................................... 3
Présentation du commanditaire ....................................................................................................................... 3
Description fonctionnelle ........................................................................................................................................ 4
Objectif principal .................................................................................................................................................... 4
Fonctionnement global de l’application ....................................................................................................... 4
Exigences fonctionnelles ..................................................................................................................................... 4
Contraintes ............................................................................................................................................................... 7
Descriptif interne du système ................................................................................................................................ 8
Scénario de base .................................................................................................................................................... 8
Organisation et structures de données ...................................................................................................... 10
Réalisation ....................................................................................................................................................................... 12
Répartition des tâches ........................................................................................................................................... 13
Diagramme de classes ........................................................................................................................................... 14
Jeu et interface utilisateur .................................................................................................................................... 15
Menu principal ..................................................................................................................................................... 15
Ecran d’instructions ............................................................................................................................................ 16
Ecran de sélection de carte ............................................................................................................................. 16
Ecran de sélection du niveau de difficulté ................................................................................................. 17
Ecran de jeu ........................................................................................................................................................... 17
Les entités .............................................................................................................................................................. 18
Choix techniques ................................................................................................................................................. 20
Livrables ...................................................................................................................................................................... 20
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 1
Bilan de la réalisation ............................................................................................................................................. 21
Critères du cahier des charges ....................................................................................................................... 21
Diagramme de Gantt prévu et réel .............................................................................................................. 21
Difficultés rencontrées ........................................................................................................................................... 22
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 2
Analyse
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 3
Présentation du projet
Présentation générale
Ce document présente le projet à réaliser dans le cadre de nos études à Polytech Marseille en
section informatique, réseaux et multimédia ; plus précisément dans le cours de programmation
orientée objet.
Il est demandé à l’équipe de développer un jeu de tower defense original, ayant les caractéristiques
suivantes :
Sans labyrinthe (le chemin des monstres est prédéterminé par la carte, pas par les tours) ;
Avec au moins 3 types de monstres différents (plus ou moins rapides, plus ou moins
résistants, etc…) ;
Avec au moins 3 types de tours différents (cadence de tir plus ou moins rapide, coups plus
ou moins efficaces, etc…).
Présentation de l’équipe
Pour la réalisation de ce projet, l’équipe est composée de deux membres, élèves ingénieurs à
Polytech Marseille :
Dylan GALMICHE
Maxence MOHR
Présentation du commanditaire
Notre commanditaire est Monsieur MAVROMATIS, professeur en charge de notre groupe de
projet de programmation orientée objet.
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 4
Description fonctionnelle
Objectif principal
L’objectif principal de ce projet est de réaliser un jeu de tower defense fonctionnel dans le délai
imparti.
Fonctionnement global de l’application
Au démarrage de l’application, il sera présenté à l’utilisateur un menu principal. Depuis ce menu,
l’utilisateur pourra choisir le niveau de difficulté et la carte qu’il désire, et enfin lancer la partie.
Chaque carte aura un certain nombre de vagues de monstres, s’intensifiant au fur et à mesure de
la progression du joueur sur cette carte.
Seront également présents : un petit manuel d’aide et un bouton pour quitter l’application.
Une fois la partie lancée, le joueur pourra poser des tours, les mettre à jour ou les revendre. Une
fois que le joueur aura fini ou qu’une temporisation sera écoulée, un bouton permettra de lancer
la vague de monstre suivante ; et ainsi de suite jusqu’à la victoire ou la défaite du joueur.
Exigences fonctionnelles
Il est possible, au vu de la nature de l’application demandée, de réaliser un diagramme de cas
d’utilisation.
Celui-ci est présent à la page suivante.
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 5
On discerne ainsi un seul acteur qui va interagir avec l’application : l’utilisateur (ou joueur). Il sera
le déclencheur des principaux évènements liés à l’application.
Les jeux de Tower Defense sont assez connus et répandus aujourd’hui, et il s’agit de respecter les
conventions et incontournables du genre. Une carte durera un certain nombre de vagues. Entre
chacune de ces vagues, le joueur pourra construire, vendre ou améliorer des tours.
Une fois toutes les vagues achevés, le joueur gagne. S’il se laisse submerger et que trop d’ennemis
parviennent à s’échapper, le joueur perd.
<<extends>> <<extends>>
<<include>>
<<exstends>>
<<include>>
Démarrer
Partie
Sélection
Difficulté
Changer
Langue
Sélection
Carte
Jouer
Partie
Ajouter Tour Supprimer
Tour
Améliorer
Tour
Utilisateur
<<extends>>
Voir aide
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 6
Au niveau des options, il sera possible de configurer la langue (le support de l’anglais et du français
à minima). La sélection de la difficulté se fera au chargement d’une carte.
Il sera possible, pour les novices, de découvrir le gameplay avec l’aide : seront expliqués les
basiques des jeux de Tower Defense, ainsi qu’une aide à l’interface.
Les fonctionnalités accessibles à l’utilisateur seront donc les suivantes :
Fonctionnalités
Démarrer une partie
Afficher l’aide
Changer la langue
Fonctionnalité 1 : Démarrer une partie
Cette fonctionnalité permettra au joueur de lancer une partie avec une carte et un mode de
difficulté choisi, et gèrera toute la partie. Les monstres, les vagues, la manipulation de tours, etc.
Fonctionnalité 2 : Afficher l’aide
Cette fonctionnalité, comme expliqué plus haut, permettra d’afficher quelques images et conseils
pour le joueur sur la façon de jouer, l’interface.
Fonctionnalité 3 : Changer la langue
Cette fonctionnalité permettra au joueur de modifier la langue.
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 7
Contraintes
Contraintes de réalisation
Le jeu de Tower Defense devra être conçu en Java. Il ne devra pas consommer les ressources
matérielles de manière excessive. Il devra être compatible avec Java 1.8 et les machines le
supportant.
Contraintes de performances
Le jeu devra être le plus fluide possible sur différentes machines.
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 8
Descriptif interne du système
Scénario de base
Lancer une partie
Pour lancer une partie, le joueur cliquera sur un bouton « Jouer ». Une fenêtre permettra de choisir
la carte, et le joueur devra valider le démarrage de la partie.
Pour chaque vague (et tant qu’il y en a), il y aura une phase de préparation et une phase de
défense et ce jusqu’à la fin de la phase de défense de la dernière carte (ou la défaite du joueur).
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 9
Phase de préparation
Dans cette phase, le joueur peut construire des tours, les mettre à jour, ou les détruire, sans que
les monstres n’arrivent.
Phase de défense
Une fois la phase de préparation terminée, la vague de monstre arrive. Le joueur observe donc
ses tours en action, mais peut continuer d’en ajouter, mettre à niveau ou en vendre selon le même
principe de pendant la préparation.
Début de la phase de défense
Programme
boucle
Tant qu'il reste des monstres et que le joueur n'est pas mort
Envoie les monstres
Affichage de la fin de la vagueVictoire/Défaite
opt
Le joueur choisit de construire une tourSéléctionne le type et l'endroit
Vérifie l'endroit et l'argent
Confirme la création en ajoutant la tour sur la carte
opt
Le joueur choisit de mettre à niveau une tourSéléctionne la tour à mettre à niveau
Vérifie la tour et l'argent
Confirme la mise à niveau en changeant son aparence sur la carte
opt
Le joueur choisit de détruire une tour
Séléctionne la tour
Vérifie la tour
Confirme la création en supprimant la tour sur la carte
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 10
Fin de partie
En cas de victoire, le joueur se verra afficher une page de victoire.
En cas de défaite, il sera ramené au menu principal après l’affichage d’une page de défaite.
Organisation et structures de données
Nota bene : ce schéma est actuellement une ébauche, des modifications et des précisions seront
certainement introduites en phase de production.
Ce schéma a été rédigé très tôt dans la réalisation du projet, et n’est pas implémenté dans le
programme. Pour voir le diagramme de classes tel qu’il a été implémenté, rendez-vous à la
section Réalisation de ce rapport).
Du fait de sa taille, il sera sur la page suivante.
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 11
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 12
Réalisation
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 13
Répartition des tâches
La classe principale, Jeu, est assez condensée et complexe : nous l’avons réalisée à deux sans
répartition fixée.
Pour les autres classes, nous nous sommes répartis le travail de la façon suivante :
Dylan GALMICHE : Les classes Map, Cellule et Tours ;
Maxence MOHR : Les classes Monstres et Menu et les textures.
Enfin, pour la rédaction des documents, nous avons travaillé en équipe.
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 14
Diagramme de classes
Du fait de sa taille, il ne nous ait pas possible de vous le proposer dans un meilleur rendu.
En revanche, vous trouverez, ci-joint ou en suivant ce lien, la version originale du diagramme de
classes.
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 15
Jeu et interface utilisateur
Menu principal
Menu principal, en français
Menu principal, en anglais
Le menu principal est très simple et très clair : il n’y a que cinq interactions possibles : Jouer,
instructions, langue, réduire et quitter l’application.
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 16
Le bouton Jouer vous amènera sur l’écran de sélection de cartes et le bouton Instructions sur une
page d’instructions.
Ecran d’instructions
L’écran d’instructions, assez basique, en français et en anglais…
Cet écran permet au joueur de comprendre les mécaniques de jeu. Cet écran n’est pas interactif,
mais assez clair sur le principe et les commandes de jeu.
Ecran de sélection de carte
Ecran de sélection du niveau
Cet écran de sélection de carte est également assez simple, avec 3 cartes implémentées.
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 17
Ecran de sélection du niveau de difficulté
Ecran de sélection des niveaux
Ecran de jeu
Ecran de jeu… Let the fun begin !
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 18
Les entités
Il existe dans notre jeu plusieurs catégories d’entités. Nous allons vous présenter les différentes
caractéristiques de chacun.
Au niveau du gameplay, il s’agit de poser des tours pour éliminer les monstres qui veulent
détruire votre gâteau.
Les monstres
Les monstres tenteront de gâcher votre gâteau… Il en existe 4 types, dont voici les caractéristiques
ci-dessous.
Monstres Vie Force Vitesse
Medium
++
++
++
Tank
+++
+++
Runner
+
+
++++
Surprise
?
?
?
Les tours
Les tours sont positionnables par le joueur, et peuvent être mises à niveau. Malgré tout, à niveau
équivalent, voici les différences entre chaque modèle de tour.
Tours Force Cadence de tir Zone de tir
Tour Rouge
+
+++
++
Tour Bleue
+++++
+
Tour Verte
++
+
+++
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 19
Les autres entités
Dans cette rubrique, nous allons vous présenter d’autres entités, essentielles au jeu, mais n’ayant
pas directement de lien avec le combat entre les tours et les monstres.
Entités Informations
Projectiles
Matérialise le tir pour le joueur
Le gâteau
L’objectif à protéger…
Le menu
Afin que le joueur puisse interagir avec la partie, il a à sa disposition un magasin à boutons et
des indicateurs de statut, le tout est situé dans la zone en bas de la fenêtre.
Le Konami© Code
Dans ce jeu, le Konami© Code a été implémenté. Celui-ci consiste à soigner le gâteau du joueur,
lui donner de l’argent… mais faire naitre 10 boss surpuissants (voir Surprise dans le tableau des
monstres à la page précédente).
Ce monstre, comme vous l’avez remarqué, mêle l’humain à une sorte de Terminator laser.
Construction
d’une tour
rouge
Construction
d’une tour
verte
Construction
d’une tour
bleue
Revente d’une
tour
Mettre à
niveau une
tour
Inspection
d’une tour
Indicateur de
vague
Indicateur de
vie
Indicateur
d’argent
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 20
Choix techniques
La boucle de jeu
Les boucles de jeu, gérant la partie en cours, se suivent à 5 millisecondes d’intervalle. Cela ne
paraît pas très judicieux de premier abord, la logique voudrait déclencher le rafraichissement
lorsque nous sommes sûrs qu'un mouvement a eu lieu. Mais dans le cas d’un Tower Defense, avec
beaucoup de mouvements, cela fonctionne parfaitement. En effet, tout, des monstres se déplaçant
aux tours tirant en passant par la souris, déclenche des effets visuels qu’il faut gérer. Une boucle
d'affichage est donc le plus logique. Quoi qu'il en soit, nous n’avons eu aucun problème de
performances sur les machines avec lesquelles nous avons testé le jeu.
Design Patterns implémentés
Nous avons dû implémenter les design patterns suivants dans notre jeu :
Singleton pour le fichier de langues ;
Variante du Factory pour la création des vagues ;
Variante du Poids Mouche pour les textures.
Livrables
Les livrables suivants seront remis au commanditaire du projet, M. MAVROMATIS :
Les codes source du jeu, avec les textures ;
Un zip avec le jeu, compilé en JAR et les ressources ;
Un fichier d’installation, dit setup, pour Windows® réalisé avec InstallShield Wizard, avec
création automatique de raccourci sur le bureau et dans le menu démarrer, création d’un
désinstalleur (ajout d’une entrée dans le panneau de configuration), et vérification de la
présence de la JVM version 1.8.x avant le lancement de l’application.
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 21
Bilan de la réalisation
Critères du cahier des charges
Dans cette partie, nous allons voir quelles étaient les exigences du cahier des charges, et si notre
projet rempli bien les critères imposés par celui-ci.
Critère du cahier des charges Projet (version Release Candidate 1)
Un jeu de Tower Defense sans labyrinthe OUI
Au moins 3 types de monstres OUI
Au moins 3 types de tours OUI
Des projectiles OUI
Livrables OUI
Utilisation de Java et de ses spécificités OUI
Interface graphique OUI
Performances OUI, sur les machines testées
Le cahier des charges a donc été respecté.
Diagramme de Gantt prévu et réel
Vous trouverez ci-dessous les plannings prévisionnel et réel pour le développement de ce
projet.
Pour résumer, il s’est avéré que le projet a été terminé deux semaines avant l’échéance que nous
nous étions fixés.
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 22
Diagramme de Gantt prévisionnel
Diagramme de Gantt effectif
Difficultés rencontrées
Lors de la conception et la réalisation de ce projet, nous avons dû faire face à quelques
difficultés :
La difficulté du projet
En effet, nous avons pensé un diagramme de classe assez simple en conception, et nous
nous sommes rapidement rendu compte que le fonctionnement d'un tel projet était plus
complexe qu'il n'y paraissait.
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 23
Les textures
Les textures ont été longues à produire, et ont demandé un temps de prise en main du
logiciel Gimp.
Notre emploi du temps
Notre planning de cours étant chargé, il nous a été difficile de travailler en semaine, si ce
n’est les midis et quelques vides dans l’emploi du temps.
De plus, avec les vacances de Noël et les partiels, il a été assez difficile de concilier
éloignement, révisions et projet.
POLY DEFENSE – RAPPORT FINAL VERSION 8 DU 07/02/2015
DYLAN GALMICHE ET MAXENCE MOHR – IRM2016 24
Conclusion
Ce projet, dont le sujet a été libre, nous a énormément motivés et appris. En effet, il est très
intéressant et formateur de réaliser un projet de jeu vidéo. Nous avons été tellement motivés que
nous l’avons fini en avance, poussés par l’envie de pouvoir jouer sur notre propre jeu vidéo !
Nous pensons, dans le futur et sur notre temps de libre, pousser notre projet plus loin : il reste
quelques pistes d’améliorations, proposés par des testeurs anonymes : une gestion du son et un
système de stockage et de présentation de High Score, par exemple.