Soutenance 2 .pdf



Nom original: Soutenance_2_.pdfTitre: rapport de projet 2Auteur: Thomas Lafforgue

Ce document au format PDF 1.4 a été généré par PDFCreator Free 3.4.1, et a été envoyé sur fichier-pdf.fr le 17/05/2019 à 09:53, depuis l'adresse IP 86.201.x.x. La présente page de téléchargement du fichier a été vue 243 fois.
Taille du document: 1.3 Mo (19 pages).
Confidentialité: fichier public


Aperçu du document


Pandemonium
Rapport de soutenance n°2

Groupe P1H

VLTP Corp’ :
Thomas LAFFORGUE
Joseph PREDIGNAC
Théo TINTI
Timothée VATTIER

1

Table des matières

1.

Introduction ..................................................................................................................................... 3

2.

A propos du cahier des charges....................................................................................................... 3

3.

Avancement par partie .................................................................................................................... 4
3.1

Intelligence artificielle ............................................................................................................ 4

3.2

Création des personnages ........................................................................................................ 7

3.3

Création des décors ................................................................................................................. 7

3.4

Animation des personnages .................................................................................................... 8

3.5

Animation des décors .............................................................................................................. 9

3.6

Les collisions ........................................................................................................................ 10

3.7

Economie .............................................................................................................................. 11

3.8

Interface ................................................................................................................................ 12

3.9

Création des niveaux ............................................................................................................. 15

3.10

Site Web ................................................................................................................................ 16

3.11

Son ........................................................................................................................................ 18

4.

Avancement et retard .................................................................................................................... 18

5.

Conclusion .................................................................................................................................... 19

6.

Annexes......................................................................................................................................... 19

2

1. Introduction
Les bases ayant été posées à la soutenance précédente, nous devions désormais faire avancer
le projet en rendant des concepts abstraits tels qu’une IA ou bien une génération de niveau
aléatoire concrets. Le but était donc de faire avancer grandement chaque partie afin de plus
tard pouvoir les assembler et obtenir un rendu final.

2. A propos du cahier des charges
Par rapport au cahier des charges que nous avons complété au début du projet, nous n’avons
effectué aucune modification. Nous nous tenons toujours aux mêmes objectifs en prévision
de chaque soutenance, et nous respectons pour le moment nos dates limites.

Figure 1

3

A l’aide de ce tableau, nous savions précisément quelles parties devaient être travaillées en
priorité, et nous pouvions donner à ces pourcentages une signification. Par exemple,
l’animation des personnages à 40% signifiait pour nous prendre en main les outils
d’animation et animer entièrement le personnage principal.

3. Avancement par partie
3.1 Intelligence artificielle
Pour cette seconde soutenance, en ce qui concerne l’IA, nous avons fait en sorte que le
monstre ennemi suive le joueur allié.
C’est-à-dire que lorsque le joueur entre dans le champ d’action d’un ennemi, l’ennemi se
rapproche suffisamment pour l’attaquer et si le joueur sort du champ d’action, l’ennemi
retourne à sa position de départ.
Cette idée est représentée par les images suivantes :

Figure 2

Figure 3

4

Figure 4
Pour y parvenir, nous avons eu à récupérer la position de l’ennemi et celle du joueur, puis
nous avons obtenu la distance qui les sépare en soustrayant les deux comme le montre le code
ci-dessous.

Figure 5
Nous nous sommes aussi occupé d’ajouter un compteur de vie au monstre ainsi qu’une
quantité de dégâts, gérés par le code suivant :

5

Figure 6
Ce code gère les combats entre le joueur et les monstres.
Prévisions pour la soutenance finale :
Nous prévoyons pour la soutenance finale de gérer le cas où un mur obstrue le passage du
monstre, auquel cas le monstre n’aura pas à considérer notre présence.
Un autre aspect à gérer est si une marche se retrouve sur le passage de l’ennemi, auquel cas il
devra sauter la marche afin de poursuivre le joueur ; et dans la situation inverse si en se
replaçant, il rencontre une marche.

6

3.2 Création des personnages
Nous avons utilisé Krita comme logiciel de dessin afin de finir les Personnages Non-Joueurs,
nous avons réalisé 2 PNJ, un archer squelette, qui pourra tirer de loin, un mage squelette, qui
pourra tirer à travers les murs, mais qui n’aura pas autant de vie que les autres ennemis, ainsi
qu’un boss (ennemi le plus puissant du niveau) afin de créer une fin de jeu.

Figure 7

Figure 8

Prévisions pour la soutenance finale : Nous allons plus que revoir certains détails, comme des
ombres par exemple et éventuellement créer un nouveau type d’ennemi s’ils paraissent trop
répétitifs lors de la partie.

3.3 Création des décors
Lors de la dernière soutenance, nous avions présenté les différents blocs de décors créés ainsi
que les éléments permettant de créer une ambiance de donjon, tel que des tonneaux ou un
arrière-plan sombre. Le but était alors de rajouter des éléments immersifs pouvant combler
l’aspect vide qu’avaient auparavant les niveaux de notre jeu.

Figure 9

Figure 10

7

Nous pouvons ici voir une chaîne pendant du plafond ainsi qu’un chandelier rappelant que le
lieu dans lequel évolue le joueur était autrefois un château, mais qui depuis a été laissé à
l’abandon et qu’il est devenu hostile.
Nous avions prévu de décomposer les dessins afin de faciliter l’animation. Cela n’a
finalement pas été nécessaire puisque l’animation sur Unity peut se faire à partir « d’os »
permettant le déplacement de parties de l’objet sur des axes.
Prévisions pour la soutenance finale :
Tous les décors ont quasiment été faits, il ne reste plus qu’à rajouter des détails donnants un
peu plus de vie à l’univers de ce jeu.

3.4 Animation des personnages
Pour l’instant nous n’avons animé que le personnage principal pour cette soutenance. Au
début nous avions quelques problèmes pour importer l’image avec tous ses membres
détachés, mais une fois cela fait, l’animation s’est passée sans aucun problème. Nous
pouvons constater sur l’image ci-dessous qu’il y a de nombreuses couleurs, en effet, celles-ci
correspondent à chaque zone du corp qui est dirigée par chacun des os de la même couleur,
donc si nous prenons l’os orange, nous pouvons voir qu’il anime le bas du bras gauche ainsi
que l’épée.

Figure 11
Nous avons aussi créé des animations de saut et de course, qui a été très agréable à faire,
puisque Unity a un système d’animation déjà intégré, et il est très simple à utiliser une fois
que tous les os sont bien mis à leur place. Comme nous pouvons le voir ci-dessous, il y a
différentes positions que le personnage peut prendre notamment grâce au déplacement des os

8

Figure 12

Figure 13

Prévisions pour la soutenance finale : Comme nous avons bien compris le fonctionnement de
l’animation dans Unity, nous ne pensons pas avoir beaucoup de problèmes pour finir les
autres personnages

3.5 Animation des décors
Prévisions pour la soutenance finale :
Nous avions décidé de ne pas nous occuper de l’animation des décors, cela représentant un
détail trop peu important pour qu’il figure en tête de nos objectifs. Nous avons tout de même
commencé à animer une chaine qui bougerait en arrière-plan. Cette réalisation, quoique
minime, permettra au joueur d’évoluer dans monde plus vivant, permettant une immersion
plus importante. Les animations seront focalisées sur d’autres détails : faire vaciller la
flamme d’une lampe, ou bien créer des animations quand le personnage joueur détruit des
éléments du décor.

9

3.6 Les collisions
Précédemment nous avons eu un problème avec les collisions, en effet le personnage
principal collait aux parois du jeu comme montré ci-dessous :

Figure 14
Le problème a pu être corrigé grâce à l’ajout d’un “Physic Material 2D” en effet nous en
avons créé un appelé “Slippery” (glissant) et nous lui avons appliqué une friction de 0.

Figure 15
Ensuite nous l’avons glissé dans l’emplacement prévu à cet effet dans la boîte de collision de
notre sprite :

Figure 16

10

3.7 Economie
L’objectif de cette partie est de gérer l’aspect financier du jeu.
Nous avons réfléchi aux différents aspects à gérer, le premier étant de ramasser une pièce
lorsque l’on passe dessus.
Cependant afin de ramasser la pièce, nous devons la faire disparaître du terrain, puis
incrémenter notre butin en fonction de la valeur de celle-ci.
Cette partie est celle que nous avons géré pour cette soutenance
Le code ci-dessous en est l’illustration :

Figure 17
Nous avons donc évidemment créé un compteur global de notre monnaie, appelé money dans
le cas présent.
Prévisions pour la soutenance finale :
Nous prévoyons de gérer la boutique avec l’achat d’améliorations qui rend nos
armes/armures plus performantes (augmente les dégâts/la santé) et décrémente notre butin en
fonction de la valeur de l’amélioration.
Pour cela, le code sera ressemblant à celui pour récupérer une pièce en ajoutant la condition
de la quantité d’argent ainsi que celle de l’appui sur une touche confirmant notre souhait
d’achat.

11

3.8 Interface
Barre de vie :

Figure 18
Lors de la soutenance précédente, nous avons réfléchis à l’interface que pourrait prendre
notre jeu. A présent nous avons pu implanter une barre de vie.
Pour créer la barre de vie il a fallu utiliser un “Canvas” ce dernier sert à ajouter différents
éléments sur l’écran du joueur comme par exemple des boutons ou tout autre élément ne
faisant pas partie du décor.

Figure 19
A l’intérieur du Canvas nous pouvons voir “HealthBar” et “Health” qui correspondent
respectivement au cadre de la barre de vie qui est un “panel” et à la vie qu’il y a à l’intérieur
qui est une image.
A présent il nous fallait pouvoir agir sur cette barre de vie pour la faire rétrécir ou s’agrandir
sans dépasser son cadre.

12

Figure 20
Pour se faire nous avons commencé par passer l’image “Health” en type “Filled“ vers
l’Horizontal en partant de la gauche. Cela permet de pouvoir faire rétrécir l’image juste en
affectant la jauge “Fill Amount” qui gère simplement le fait de rétrécir plus ou moins
l’image, à 1 l’image n’est pas affectée, à 0 elle devient invisible car elle est tout à fait rétrécie
vers la gauche.
Après avoir trouvé un moyen de faire bouger la barre, il fallait trouver un algorithme capable
de s’en charger.

Figure 21
L’image “Health” est donc appelée ici “Barre”, “max” correspond au max de notre barre de
vie, “Valeur” est une variable privée qui correspond à la valeur de vie à l'intérieur de notre
barre nous pourrons accéder à cette valeur grâce au getteur “valeur”.
“Set” permet d’attribuer un changement de valeur à notre barre de vie la “Valeur” prendra
alors une nouvelle valeur déterminée par “value”. Évidemment, la valeur de vie ne peut pas

13

descendre en dessous de 0 ni dépasser le max de la barre de vie c’est pour ça que nous avons
utilisé la fonction “Mathf.Clamp”.
“Barre.fillAmount” permet d’accéder à la jauge présentée plus haut et donc de faire varier la
barre. Ensuite il a fallu faire quelques mathématiques pour adapter la jauge qui est comprise
entre 0 et 1 à notre barre de vie qui est comprise entre 0 et max.
Pour finir avec la barre de vie nous avons aussi rajouté un texte à l’intérieur de l’image qui
nous permet d’afficher la vie qui nous reste et la vie max sous ce format :

Figure 22
Nous avons fait ce choix plutôt qu’un pourcentage car comme le jeu est un Rogue-Like, la
vie du joueur sera donc plus élevée à chaque nouvelle partie, cela permet au joueur d’avoir
une petite idée de sa progression.
Le seul problème c’est que nous n’avons pas encore trouvé la solution pour détecter un
dommage causé par l’ennemi.
Nous avons aussi pensé à finaliser le menu principal et de le rendre fonctionnel, nous
pouvons donc voir que lorsque nous passons la souris au-dessus d’un des boutons, il devient
plus foncé, et nous pouvons bien sûr appuyer dessus pour avoir l’effet voulu.

Figure 23
De plus, nous avons créé un début de menu d’options avec seulement le volume pour
l’instant, et nous allons peut-être rajouter d’autres options comme la résolution ou le fait de
pouvoir changer entre le mode fenêtré et le mode plein écran.

14

Figure 24
Pour la soutenance finale nous voulons faire un compteur de pièces. Les pièces seront
attribuées après avoir tué un ennemi.

3.9 Création des niveaux
La solution que nous avions choisie avant la soutenance précédente était de générer un monde
à partir de « tuiles » (rectangle dans lequel le personnage évolue) déjà existantes. Le but était
alors de les assembler entre elles de manière aléatoire tout en gardant un ensemble cohérent.
Le fait de ne relier des niveaux entre eux que s’ils possédaient une entrée / sortie commune
était un premier objectif dans cette génération de monde. Il fallait alors assigner aux
différents niveaux créés le fait qu’ils possédaient une sortie en haut, en bas, etc…

A l’aide d’un booléen, il était alors possible à tout moment de vérifier si la salle possédait ou
non une porte sur un des côtés. Nous avons ensuite créé des images afin de représenter le
niveau où l’on apparaît et les niveaux créés autour.
Enfin, le dernier objectif était de fixer un nombre de niveaux à agencer, pour créer une taille
standard de monde, et pour éviter ainsi des mondes trop petits ou bien trop grands. La
contrainte était alors de fixer cette limite tout en ayant des bordures de monde cohérentes,
sans sortie ne donnant nulle part.

15

Figure 25
Nous voyons ici un monde avec un nombre de niveaux fixé à vingt. Le niveau affiché en vert
est celui de départ. Les chemins possibles sont donc nombreux, permettant une exploration
poussée. La limite de niveaux peut bien évidemment être augmentée pour par exemple créer
un monde plus vaste et donc plus difficile pour le joueur. Enfin, le programme peut à tout
moment recharger un nouveau monde aléatoirement pour rendre l’expérience de jeu de la
personne plus intéressante.
De plus, les déplacements du personnage à travers le jeu sont fluides et relativement complets
nous avons un double saut fonctionnel et un dash, nous ne pensons pas ajouter de nouveau
type de déplacements.
Prévisions pour la prochaine soutenance :
Tous ces différents niveaux représentés par des carrés blancs devront être assignés à des
niveaux fabriqués au préalable. Il faudra donc créer un nombre conséquent de niveaux
différents.

3.10

Site Web

En ce qui concerne le site internet, nous l’avions réalisé pour la première soutenance
uniquement en html, ce qui le rendait peu esthétique et peu professionnel.
Nous avons pour cette soutenance nous avons ajouté du CSS, ce qui améliore grandement
l’effet produit ; comme nous pouvons le constater sur ce avant/après.

16

Avant

Figure 26
Après

Figure 27

17

Effectivement le second rend mieux, avec un logo en guise de nom de site et possède un
menu composé de bouton cliquables.
Pour mélanger le CSS et le HTML, nous avons simplement eu à ajouter dans le code en
HTML la ligne suivante :

qui renvoie à un fichier en CSS permettant de gérer la mise en page.
Nous avons donc simplement utilisé des balises HTML et des propriétés CSS afin de coder le
site internet.
Par exemple le changement d’aspect lorsque l’on passe sur une case cliquable du menu est
codé de la manière suivante :

Il s’agit ensuite de balises et de propriétés standards pour le codage du site.
Prévisions pour la soutenance finale :
Nous prévoyons de légèrement modifier le contenu (texte) du site et d'ajouter le lien de
téléchargement du jeu.

3.11

Son

Nous ne devions pas encore commencer à travailler sur le son, cependant nous avons déjà
trouvé le style de musique qu’il y aurait en arrière-plan. Il s’agira de musique plutôt
électronique, très rythmée, parfaitement adaptée pour un jeu nerveux où chaque déplacement
doit être millimétré.
Prévisions pour la soutenance finale :
Tout reste encore à faire, entre les bruitages et la musique d’ambiance (ou les musiques
d’ambiance si nous en faisons plusieurs adaptées à la situation, tel qu’un combat ou un
moment plus calme).

4. Avancement et retard
Nous avons continué à suivre notre calendrier à la lettre et tout se déroule au mieux. Chaque
partie avance bien, aucun retard n’a été pris, mis à part pour l’animation des décors mais que
nous considérions déjà comme une partie secondaire, car moins importante que les autres.
Désormais, nous devons finir toutes les parties pour la soutenance finale, plus aucun retard ne
sera toléré, et nous allons donc continuer au même rythme que nous avons commencé.

18

5. Conclusion
Notre système de binômes avait bien fonctionné jusqu’à maintenant, c’est pourquoi nous
avons décidé de continuer ainsi. Les réunions quotidiennes sur un serveur vocal nous ont
permis de savoir comment chacun avançait, s’il celui-ci avait besoin d’aide, et où nous
devions concentrer nos efforts.
Pour avancer efficacement nous faisons chacun notre travail puis nous le mettons en commun
sur un projet Unity. Cela évite de devoir toujours travailler sur le même projet.

6. Annexes
Figure 1 : Tableau d’organisation du travail
Figures 2,3,4 : Illustrations du fonctionnement de l’IA
Figures 5,6 : Lignes de code faisant fonctionner l’IA
Figures 7,8 : Squelette mage et boss final
Figures 9,10 : Chandelier et chaine comme éléments de décors
Figure 11 : Mise en place des os du personnage
Figures 12,13 : Personnage dans différentes positions lors d’un saut
Figures 14,15,16 : Aperçus du code des déplacements
Figure 17 : Code de l’argent
Figures 18,19,20,21,22 : Code de la barre de vie
Figures 23,24 : Le menu principal
Figure 25 : Génération aléatoire des niveaux
Figures 26,27 : Le site web avant et après l’amélioration

19


Aperçu du document Soutenance_2_.pdf - page 1/19
 
Soutenance_2_.pdf - page 2/19
Soutenance_2_.pdf - page 3/19
Soutenance_2_.pdf - page 4/19
Soutenance_2_.pdf - page 5/19
Soutenance_2_.pdf - page 6/19
 




Télécharger le fichier (PDF)


Soutenance_2_.pdf (PDF, 1.3 Mo)

Télécharger
Formats alternatifs: ZIP



Documents similaires


soutenance2
soutenancefinale
dossier du jeu de la vie
tactics rulebook fr
rendon camille memoire monstre hybride test3
rapportdesoutenance 1

Sur le même sujet..