Fichier PDF

Partage, hébergement, conversion et archivage facile de documents au format PDF

Partager un fichier Mes fichiers Convertir un fichier Boite à outils PDF Recherche PDF Aide Contact



Rapport de Soutenance Finale .pdf



Nom original: Rapport de Soutenance Finale.pdf

Ce document au format PDF 1.5 a été généré par TeX / MiKTeX pdfTeX-1.40.14, et a été envoyé sur fichier-pdf.fr le 17/06/2014 à 14:12, depuis l'adresse IP 86.71.x.x. La présente page de téléchargement du fichier a été vue 410 fois.
Taille du document: 318 Ko (32 pages).
Confidentialité: fichier public




Télécharger le fichier (PDF)









Aperçu du document


Noob Stompin’
Un jeu d’action créé par le
groupe Cthulhu

Nicolas "Péon" TIBI (tibi_n)
Eymeric "Phanel" TABOU (tabou_e)
Erwann "Myriks" TREHU (trehu_e)
Guillaume "Magou" BUISSON (buisso_g)
Chef de projet : Nicolas TIBI

Projet d’info-sup — EPITA promotion 2018
Rapport de soutenance finale
12 juin 2014

Cthulhu

Noob Stompin’

Sommaire
1

Introduction

4

2

Le groupe Cthulhu
2.1 Formation du groupe . . . . . . . . . .
2.2 Présentation des membres du groupe . .
2.2.1 Nicolas "Péon" TIBI . . . . . .
2.2.2 Eymeric "Phanel" TABOU . .
2.2.3 Erwann "Myriks" TREHU . .
2.2.4 Guillaume "Magou" BUISSON
2.3 Choix du sujet . . . . . . . . . . . . . .

.
.
.
.
.
.
.

5
5
6
6
6
6
7
7

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

8
9
9
9
9
10
11
12
13
14
15
15
16
17
18
21
21
21
21
22
22
23

3

4

Découpage du projet
3.1 Gestion du jeu . . . . . . . .
3.1.1 Game . . . . . . . .
3.1.2 Game Manager . . .
3.2 Caméra . . . . . . . . . . .
3.3 Personnages . . . . . . . . .
3.3.1 Sprite . . . . . . . .
3.3.2 Personnage . . . . .
3.3.3 Personnage jouable .
3.4 Bot . . . . . . . . . . . . . .
3.5 Plateau de jeu . . . . . . . .
3.6 Particules . . . . . . . . . .
3.6.1 Moteur à particules
3.6.2 Sang . . . . . . . .
3.6.3 Attaque . . . . . . .
3.7 HUD . . . . . . . . . . . .
3.7.1 Menu . . . . . . . .
3.7.2 Options . . . . . . .
3.7.3 FPS . . . . . . . . .
3.7.4 Curseur . . . . . . .
3.8 Audio . . . . . . . . . . . .
3.9 Site web . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Rendu final
24
4.1 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.2 Comparaison résultats-objectifs . . . . . . . . . . . . . . . . . 25

Info Sup

2

Epita 2018

Cthulhu
5

6

Noob Stompin’

Conclusion
5.1 Conclusions personnelles . . . . . . . . .
5.1.1 Nicolas « Paspot » TIBI . . . . .
5.1.2 Eymeric « Phanel » TABOU . . .
5.1.3 Guillaume « Magou » BUISSON
5.1.4 Erwann « Myriks » TREHU . .
5.2 Conclusion globale . . . . . . . . . . . .
Webographie

Info Sup

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

26
26
26
27
28
29
30
31

3

Epita 2018

Cthulhu

Noob Stompin’

1 Introduction
Dans le cadre de notre première année de cycle préparatoire à
EPITA, nous devons créer un projet permettant de mettre en œuvre
les enseignements de cette année d’info-sup. Parmi les possibilités qui
s’offraient à nous, nous avons choisi à l’unanimité de développer un
jeu vidéo, plus particulièrement un jeu d’action, orienté arcade, en 2
dimensions (2D) vue du dessus.
L’objectif principal de ce projet est, outre la validation des connaissances de cette première année à EPITA, d’apprendre à s’adapter au
mode de travail professionnel en équipe. De plus, ce projet est l’occasion d’acquérir une grande autonomie dans le travail.
A partir de ces éléments nous allons donc développer en langage C
SHARP un jeu d’action orienté arcade en 2D vu du dessus remplissant les conditions imposées par le cahier des charges établi en accord
avec nos professeurs.
Afin de comprendre nos démarches pour mener ce projet à son
terme, notre rapport se structure de la façon suivante :
Dans un premier temps, nous présenterons le groupe, sa formation,
les profils de chacun de ses membres. Puis, dans une seconde partie,
nous détaillerons le développement du projet. Enfin nous décrirons
le rendu final et étudierons la concordance des résultats par rapport
aux objectifs initiaux.

Info Sup

4

Epita 2018

Cthulhu

Noob Stompin’

2 Le groupe Cthulhu
2.1

Formation du groupe

Pour réaliser ce projet, les étudiants d’info-sup d’EPITA devaient
se regrouper en groupes de 4 membres, avec qui ils devaient travailler
toute l’année. Les groupes devaient être formés avant le 10 janvier
2014, ils se devaient d’avoir un nom, un sujet de projet, sans oublier,
un chef de projet.
Notre groupe a une histoire particulière. En effet, chacun a, dans
un premier temps, créé son propre groupe, Nicolas et Eymeric étaient
dans le même groupe, une amitié s’étant rapidement créée entre eux.
Guillaume et Erwann ont alors eu des problèmes avec leur groupe respectif, ils se sont donc tournés vers le duo déjà existant pour former
un groupe très hétérogène ; Nicolas étant le seul à avoir programmé
avant d’intégrer EPITA. En dépit de nos différences, nous partageons
une volonté commune de mener à bien ce projet et d’avoir le meilleur
résultat possible.
Cependant, nous avons eu encore plus de difficultés à trouver un
sujet de projet. Si l’idée d’un jeu vidéo était évidente, le type et le
nom du jeu l’étaient beaucoup moins. Nous nous sommes alors inspirés des jeux auxquels nous jouions, et nous avons pensé à Noob
Stompin’. Un jeu dans lequel deux joueurs (ou un joueur et une intelligence artificielle) s’affrontent, un personnage avançant dans un
niveau, et son adversaire essayant de l’écraser en faisant tomber différents objets.
Le nom du groupe est alors apparu comme une évidence, Cthulhu,
une créature de fiction, un monstre humanoïde gigantesque, qui possède des tentacules. L’entité parfaite pour lancer les objets sur le personnage au sol.
Notre groupe Cthulhu composé de Guillaume Buisson, Eymeric Tabou, Nicolas Tibi et Erwann Tréhu allait donc réaliser le jeu Noob
Stompin’.

Info Sup

5

Epita 2018

Cthulhu

2.2
2.2.1

Noob Stompin’

Présentation des membres du groupe
Nicolas "Péon" TIBI

Il y a 3-4 ans, j’ai découvert l’informatique et tout ce qui y touche,
j’ai commencé à coder en C et ça m’a tout de suite intéressé. EPITA
m’a donc tout de suite attiré de par son enseignement à la fois généraliste et pratique. Je compte sur ce projet pour découvrir plus amplement le C SHARP, que j’avais un peu expérimenté auparavant, et
enfin m’impliquer dans un projet de grande envergure.
2.2.2

Eymeric "Phanel" TABOU

Passionné de jeux vidéo depuis l’âge de 3 ans, j’ai passé de nombreuses années à connaître les jeux vidéo sans connaître l’informatique. Mon intérêt pour l’informatique est tout récent, mais ses possibilités presque illimitées me captivent à chaque instant, d’où ma
venue à EPITA. N’ayant jamais programmé avant cette année, je suis
conscient de mes lacunes mais ce projet est plus que jamais l’occasion
pour moi d’apprendre, la réalisation d’un jeu vidéo étant une grande
motivation.
2.2.3

Erwann "Myriks" TREHU

Ayant un père informaticien, j’ai vite été mis en relation avec l’informatique et les ordinateurs ; néanmoins je ne m’y suis jamais vraiment intéressé. Il y a deux ans je me suis fait pirater mon ordinateur
ce qui m’a donné envie de me spécialiser plus tard dans la sécurité informatique. Mise à part cette histoire, je suis un grand fan des jeux vidéo depuis l’âge de 5 ans, lorsque mes cousins m’ont mis une console
entre les mains. Je n’ai pris connaissance de l’existence d’EPITA que
très récemment (3 ans) et j’ai su après de nombreuses visites que cette
école regroupait tout ce que je voulais apprendre pour arriver à mon
but. Malgré ma motivation j’ai vite pris conscience de mes lacunes et
je compte bien les surmonter au cours de ces années de cycle préparatoire.

Info Sup

6

Epita 2018

Cthulhu
2.2.4

Noob Stompin’

Guillaume "Magou" BUISSON

Débutant en informatique et souffre-douleur du Caml, je considère
ce projet comme une chance d’acquérir les connaissances en informatique nécessaires pour la suite de mes études au sein d’EPITA. Ayant
moi-même comme projet futur de créer un MMORPG, je suis motivé
par la création de ce jeu qui me donnera une vision plus réaliste de
ce qu’est la réalisation d’un jeu vidéo.

2.3

Choix du sujet

Comme mentionné précédemment, notre groupe a rapidement ch
-oisi de créer un jeu vidéo, nous avions même trouvé quel jeu réaliser. Néanmoins durant la rédaction du cahier des charges que nous
devions rendre le 17 janvier 2014, nous nous sommes aperçus que
personne, au sein du groupe, n’avait la même vision du projet final.
Après en avoir débattu pendant des heures sans être parvenus à trouver un compromis satisfaisant, nous avons donc décidé de changer
notre projet.
Après une nouvelle séance de brainstorming passée à chercher
de nouvelles idées, nous avons trouvé le jeu que nous souhaitions
réaliser. Nous nous sommes alors inspirés de The Legend of Zelda
(1986) et Hotline Miami (2012). Le premier n’est plus à présenter, le
deuxième en revanche est un jeu d’action en vue aérienne dans lequel
on incarne un psychopathe qui massacre des malfrats.
Notre projet allait donc être un jeu d’action orienté arcade en 2D
vu du dessus. Le style de jeu se caractérise par la progression du
personnage à travers différents niveaux remplis d’ennemis. Le joueur
doit éliminer chaque ennemi pour progresser au niveau suivant. Il
choisit néanmoins son propre style de jeu par ses actions : il peut être
plutôt duelliste et éliminer les ennemis un par un, ou foncer la tête la
première dans la mêlée de manière sauvage et brutale.

Info Sup

7

Epita 2018

Cthulhu

Noob Stompin’

Pour parvenir à son but, le personnage peut utiliser plusieurs
armes qu’il obtiendra aléatoirement au début des niveaux. Il existe
différents styles d’armes : des armes de poing (couteau, batte, barre
de fer, katana etc...) très puissantes et plus adaptées à la furtivité, des
armes à feu avec munitions limitées, tirant de loin, mais en contrepartie un peu moins puissante. Nous avons choisi de réaliser un jeu
de ce genre car il possède un gameplay dynamique mêlant réflexes et
réflexion.
Question jouabilité, le contrôle du personnage se fait au ZQSD,
WASD, Touches directionnelles ou éventuellement une manette, et
la visée se fait à la souris ou au joystick. Pour l’ambiance du jeu,
nous avons pensé à un design assez coloré, pour aller avec l’univers
amusant et excentrique du jeu.

3 Découpage du projet
Pour réaliser un jeu, il faut créer de nombreux éléments précis et
distincts. Pour cette raison, nous avons découpé notre projet en plusieurs parties (en programmation orientée objet, on parle de classe).
Ces parties, bien que distinctes, vont remplir différentes fonctions
telles qu’afficher un personnage, ou encore générer une traînée de
sang sur le plateau de jeu lorsqu’un ennemi sera éliminé. Nous allons
donc maintenant décrire en détails chacune de ces parties.

Info Sup

8

Epita 2018

Cthulhu

3.1
3.1.1

Noob Stompin’

Gestion du jeu
Game

C’est le cerveau du programme, la partie « Game » demande
toutes les informations au « Game Manager » et lance les bonnes
fonctions, d’affichage, de calcul, de chargement de textures, d’initialisation de variables du « Game Manager ». C’est la partie de base de
tous les jeux faits sous XNA.
3.1.2

Game Manager

Cette partie est celle qui a tout le contenu du jeu, d’où son nom
Game Manager = Gestionnaire de Jeu. Il contient toutes les données,
et les liens vers toutes les fonctions du jeu, c’est en quelque sorte le
corps du programme, contrôlé par la classe « Game ».

3.2

Caméra

Nous avons choisi d’implémenter un effet de caméra dans notre
jeu vu du dessus. Pour créer ce fameux rendu de caméra, nous avons
opté pour un rendu matriciel, c’est-à-dire que tout le jeu est calculé
et affiché normalement, mais le spritebatch (un spritebatch permet à
un groupe de sprites d’être dessiné en utilisant les mêmes paramètres)
doit prendre en argument une matrice de transformation, générée par
la classe caméra, en fonction de sa position, son degré de rotation, et
son facteur de zoom. Tout le jeu est donc affiché, mais on ne peut voir
que ce que la matrice de la caméra autorise, et avec une rotation et un
zoom demandés.
Par contre, tous les éléments du jeu ne sont pas affichés sous le
rendu de cette caméra, car cela donnerait un curseur qui bouge selon
notre souris et selon les mouvements de caméra, ainsi qu’un HUD
fixe par rapport au terrain du jeu. Il faut donc détacher le curseur
et le HUD du repère du jeu, pour le fixer sur le repère « écran »,
qui prend pour origine le coin haut-gauche de la fenêtre. De plus il
nous fallait des points fixes sur l’écran pour éviter l’effet de « motion
sickness » (mal de mer) qui peut arriver lorsqu’un jeu est joué en plein
écran dans de mauvaises conditions.

Info Sup

9

Epita 2018

Cthulhu

3.3

Noob Stompin’

Personnages

Qu’ils soient des ennemis ou contrôlé par le joueur, les personnages sont essentiels et indispensables à notre jeu. Nous devions donc
créer des personnages capables de se déplacer, mais aussi d’interagir
avec leur environnement.

Capture d’écran montrant tous les types de personnages

Info Sup

10

Epita 2018

Cthulhu
3.3.1

Noob Stompin’

Sprite

Un sprite est une image en 2 dimensions qui peut être déplacée
sur l’écran. Notre projet devait donc être capable d’afficher et de gérer des sprites, afin d’afficher, entre autres, nos personnages.
De ce fait, la classe « Sprite » est une des premières que nous avons
réalisées. Elle a de nombreuses fonctions de base :
-une fonction d’initialisation de la classe,
-une fonction de chargement de textures,
-une fonction de mise à jour des variables de la classe,
-une fonction d’affichage du sprite selon les paramètres de la classe.
Elle contient également une gestion des phases (pour les sprites
animés, les mouvements des bras et des jambes d’un personnage par
exemple), mais aussi une gestion de rotation des sprites. De plus, la
position du sprite est exprimée avec le point haut-gauche du terrain,
qui a pour abscisse (0 ; 0).
Cette classe permet d’ajouter facilement du contenu, en créant des
classes dérivées de « Sprite », comme par exemple le terrain de jeu, les
ennemis, les objets possédant une hitbox (nous reviendrons en détail
sur ce terme plus tard dans le rapport), voire des objets spéciaux.
Nous avons ensuite amélioré cette classe « Sprite » afin de pouvoir
gérer des collisions statiques. Nos sprites peuvent donc avoir plusieurs hitbox, soit des zones de collisions, pour avoir des collisions
précises avec les personnages ou les particules.

Info Sup

11

Epita 2018

Cthulhu
3.3.2

Noob Stompin’

Personnage

Qu’ils soient des ennemis ou contrôlé par le joueur, les personnages sont essentiels et indispensables à notre jeu. Nous avons donc
créé des personnages capables de se déplacer, mais aussi d’interagir
avec leur environnement.
La classe « Personnage » hérite de « Sprite », c’est-à-dire qu’elle
bénéficie des mêmes fonctions que la classe « Sprite ». Cependant un
personnage a besoin de quelques propriétés et fonctions supplémentaires, afin d’avoir, entre autres, une vitesse, des mouvements.
Notre personnage prend en argument de la fonction d’affichage
des coordonnées à regarder. Pour calculer la rotation du sprite sur lui
même, nous disposons d’un point central, qui se met à jour en fonction du point haut-gauche du sprite, et de la largeur du sprite. Nous
calculons ensuite l’angle convenu qui fait "regarder" le point demandé
à notre sprite. Pour cela nous utilisons des fonctions mathématiques.
Nous avons ensuite intégré à cette classe « Personnage » une gestion des collisions, les personnages créés par notre classe disposent
donc eux aussi de plusieurs hitbox dynamiques et d’un calcul de collisions segmenté, c’est-à-dire que si un mouvement du personnage
le ferait entrer en collision avec un élément, le mouvement n’est pas
annulé, mais un nouveau mouvement est calculé pour permettre au
personnage de s’approcher au maximum de l’élément.
Nous avons essayé d’implémenter le théorème de Jordan de séparation des surfaces dans les collisions, mais en raison de sa complexité
nous avons dû conserver notre système d’intersection des hitbox rectangulaires et circulaires.

Info Sup

12

Epita 2018

Cthulhu

Noob Stompin’

De plus nous avons ajouté d’autres fonctions à cette classe « Personage », qui permettent aux personnages de disposer d’armes de
tirer dans une direction quelconque. Ainsi qu’une période d’invincibilité, durant laquelle il est entouré d’un halo et ne peut prendre de
dégâts : elle est activée sur le personnage jouable pendant deux secondes après le début d’une partie, et une demi-seconde après avoir
été blessé.

3.3.3

Personnage jouable

Après avoir fait une classe « Personnage », nous avions besoin
d’une classe spécifique au personnage contrôlé par le joueur. Nous
avons donc fait une classe qui représente un personnage jouable, doté
d’une position et d’entrées clavier pour le contrôler. Son mouvement
est donc calculé en fonction des entrées clavier.

Capture d’écran de notre personnage en pleine action

Info Sup

13

Epita 2018

Cthulhu

3.4

Noob Stompin’

Bot

Nous avons un personnage jouable, mais pas d’ennemi, nous avons
donc ajouté un autre type de personnage, un bot (robot), il est comme
un peronnage normal, mais ses déplacements sont calculés par un
algorithme, et non pas par le joueur, Chaque bot se voit allouer un
personnage « cible », un tableau de mouvements.
Pour calculer ses déplacements, on lui définit un personnage « cible »,
et le tableau indiquant son nombre de passage sur chaque case du terrain, et lorsque sa cible passe sur une case du terrain, ce nombre est
mis a zéro.
Le jeu étant en deux dimensions, vu de haut, et sur un terrain divisé en cases, le bot a donc 4 directions, haut, bas, gauche et droite.
Le choix de direction se fera en un calcul du coup heuristique des
directions, en fonction du nombre de passage sur la case, moins la
distance pondérée entre le centre de cette case à l’ennemi.
La direction est celle qui a le coup heuristique le plus bas.
Pour les attaques, les bots font des dommages de corps-à-corps (contact)
avec leur cible, ils ne se blessent donc pas entre eux.

Capture d’écran de l’apparence des ennemis
Info Sup

14

Epita 2018

Cthulhu

3.5

Noob Stompin’

Plateau de jeu

Le plateau de jeu est un tableau a deux dimensions, contenant des
tiles (tuiles du jeu) possédant une hitbox, un type, par exemple mur
ou vide, ou coin...
Le système de collision est, comme expliqué plus haut, un système de
déplacements segmentés gérés par le personnage. Etant donné qu’un
terrain peut être très grand, pour éviter l’encombrement mémoire, les
textures des tiles ne sont pas chargées par la tile mais uniquement
référencées par la tile vers une fonction statique qui renvoie la texture
correspondante. Les terrains de jeu sont générés de façon procédurale
afin de découvrir un nouveau terrain à chaque partie.

3.6

Particules

Dans un jeu vidéo, les particules, et les moteurs à particules représentent un nombre incroyable de possibilités. En effet, les particules
peuvent créer des traînées de boue, de sang, des explosions, de la fumée, ou encore des projectiles d’armes à feu. De par leurs nombreuses
utilisations, les particules sont une vraie plus-value dans un jeu. Nous
avons donc décidé de les utiliser.
Une particule possède une direction, une vitesse, une vitesse angulaire, une couleur, et quelques autres propriétés.

Info Sup

15

Epita 2018

Cthulhu

Noob Stompin’

Capture d’écran de particules créées par le moteur à particules
3.6.1

Moteur à particules

Le moteur à particules gère un nombre de particules pour créer
un effet, comme une explosion, une traînée ou du sang. On peut voir
sur l’image ci-dessus l’effet que provoque ce moteur à particules. Ici,
il permet de créer des cercles dont on peut maîtriser la quantité. Il
faut noter que les particules prennent en compte les collisions et sont
"larguées" depuis un point précis.

Info Sup

16

Epita 2018

Cthulhu
3.6.2

Noob Stompin’

Sang

Pour rendre notre jeu plus authentique, nous avons décidé d’instaurer des effets sanguins quand une IA (intelligence artificielle) décède suite à un impact de balle. Cet effet n’est pas d’un grand intérêt
dans le "gameplay" mais il est, selon nous, indispensable pour rendre
le jeu plus vivant. Il est important pour nous de travailler dans les
détails pour que le résultat final puisse correspondre à nos attentes.
C’est pourquoi ce petit effet se doit d’apparaître dans notre jeu vidéo.
De plus, les effets de sang s’affichent pour les intelligences artificielles mais aussi pour notre personnage jouable. Cette traînée de
sang s’affiche après avoir subi une attaque.

Capture d’écran montrant une traînée de sang après avoir subi une
attaque

Info Sup

17

Epita 2018

Cthulhu
3.6.3

Noob Stompin’

Attaque

Les différents personnages de notre jeu, qu’ils soient des ennemis
ou le personnage que le joueur contrôle, doivent disposer d’un arsenal complet pour éliminer leurs adversaires. Nous avons donc créé
une classe « Attaque ».
La classe « Attaque » est une classe possédant un générateur de
tirs, qui sont des particules génératrices de particules. Nous pouvons
ainsi obtenir une balle, définie comme un particule, qui, grâce à sa
propre génération de particules, peut générer une traînée de la couleur, du type voulu, ainsi qu’une explosion lors de l’impact avec un
personnage. Nous pouvons également créer des armes de combat rapproché comme des armes blanches par exemple.

Capture d’écran de la première attaque

Info Sup

18

Epita 2018

Cthulhu

Noob Stompin’

Les différentes armes ainsi créées bénéficieront donc d’un système
de collision avec les unités ennemies et neutres (les ennemis du niveau mais aussi les murs donc).
Une arme est un générateur de balles, ces balles ont des dégâts,
une hitbox, et sont des générateurs de particules, pour produire une
traînée derrière la balle et une explosion à l’impact. Lorsqu’un personnage est touché, l’impact génère du sang projeté dans le sens du
projectile, ce qui produit un effet visuel intéressant. Les particules ont
ici un rôle primordial.
Une des attaques a une caractéristique très spécifique car elle peut
rebondir sur les murs et donc prendre en compte les collisions. Cette
arme bénéficie d’une autre caractéristique : on peut définir le nombre
de rebonds ; ce qui rend le jeu plus complexe et intéressant pour l’utilisateur.

Info Sup

19

Epita 2018

Cthulhu

Noob Stompin’

Capture d’écran de la deuxième attaque

Info Sup

20

Epita 2018

Cthulhu

3.7

Noob Stompin’

HUD

L’affichage tête haute (en anglais Head-up display – abrégé dans la
suite du rapport en HUD) est un ensemble d’informations affiché en
périphérie de l’écran et donnant des indications au joueur telles que
la santé du personnage, le nombre d’images par seconde ou encore
l’arme utilisée. Le HUD est fait tel que l’on puisse ajouter facilement
d’autres indications.
3.7.1

Menu

Au démarrage du jeu, nous avons accès à un menu qui offre différentes options utiles. Son style est très similaire à celui du jeu afin
d’assurer une cohérence pour l’utilisateur lorsque la partie se lance.
De plus, le menu est intuitif et réactif.
3.7.2

Options

Nous disposons également d’une série d’options accessibles par
des raccourcis, qui permettent de modifier la résolution, d’afficher
cette résolution. Nous pouvons également ajouter tous types d’options.
3.7.3

FPS

Nous possédons, par ailleurs, une classe « FPS » qui compte le
nombre d’actualisations de l’écran par seconde (frame per second en
anglais que nous abrégeons en FPS). Lors de chaque appel de la fonction d’affichage, on récupère la différence de temps entre cet appel et
le précédent, pour ainsi obtenir la vitesse d’actualisations en milliseconde.
En divisant 1000 par la durée ainsi obtenue, on connaît alors le nombre
d’images par seconde. Pour avoir une moyenne de FPS sans les variations soudaines, nous affichons une moyenne des 30 dernières valeurs
de FPS.
Connaître le nombre de FPS nous permet de réaliser des tests
concernant la fluidité de notre jeu, en fonction, par exemple, des éléments que nous affichons. Nous pouvons ainsi optimiser notre jeu
pour le rendre plus fluide et obtenir un rendu de la meilleur qualité
possible.

Info Sup

21

Epita 2018

Cthulhu
3.7.4

Noob Stompin’

Curseur

Comme précédemment expliqué dans ce rapport, notre personnage progresse dans les différents niveaux en éliminant tous les ennemis qui lui font face. Il faut donc pouvoir les viser. Nous avons
donc créé un Curseur.
Le curseur n’est pas géré comme un élément du jeu. De ce fait, il
ne doit pas être influencé par les mouvements de caméra, il est donc
dessiné dans un spritebatch à part. Ses coordonnées sont exprimées
par rapport au point haut-gauche de la fenêtre pour abscisse.
Dans le jeu final, la visée s’effectue par le curseur, le personnage
joué regarde donc vers le centre du curseur. Pour avoir la position du
curseur dans le jeu, le curseur possède aussi une position par rapport
au point haut-gauche du terrain, comme la plupart des éléments du
jeu.

3.8

Audio

Pour la gestion du son, nous avons une liste de sons créés par
notre groupe dans une classe dédiée à la gestion des sons. Les effets
sont appelés quand nécessaire par les méthodes de mise a jour des
éléments ayant du son à jouer.
Pour les sons d’ambiance et les musiques, nous utilisons la classe
« Mediaplayer » fournie par XNA, qui est très utile.

Info Sup

22

Epita 2018

Cthulhu

3.9

Noob Stompin’

Site web

Nous avons conscience de l’importance du pôle de la communication au sein d’un projet quel qu’il soit. C’est ainsi que nous avons
décidé de créer notre propre site internet afin de pouvoir mettre en
ligne certaines informations relatives à notre projet. Cette décision
n’est pas anodine ; en effet, nous pensons que c’est le meilleur moyen
pour le faire découvrir au grand public. La version finale du site est
dorénavant opérationelle et peut être visitée par tous. On peut y trouver tout type d’information que ce soit sur les membres du groupe,
sur le contenu ou encore des liens qui permettent de voir l’avancée
du projet à travers nos différents rapports. Il est, de toute évidence,
en adéquation avec notre jeu au niveau des couleurs et du thème pour
pouvoir affirmer notre "marque de fabrique".

Info Sup

23

Epita 2018

Cthulhu

Noob Stompin’

4 Rendu final
Après avoir travaillé durant toute cette année sur notre projet nous
sommes parvenus à un résultat final que nous allons détailler maintenant.

4.1

Résultats

Notre projet est aujourd’hui un jeu d’action orienté arcade en 2
dimensions vu du dessus comme prévu.
Au lancement du jeu, un menu s’affiche avec différentes options.
Parmi elles, la possibilité de changer la résolution du jeu, nous pourrons également changer la langue du jeu pour que le jeu soit en anglais. Une autre option disponible dans le menu est évidemment de
débuter une partie.
Lorsqu’on débute une partie, le personnage contrôlé par le joueur
se retrouve au milieu d’un niveau, avec une ou plusieurs armes aléatoires. Ces armes aléatoires peuvent être des armes à feu, des armes
de combat rapproché, voire une boule de feu surpuissante si le joueur
a de la chance. Il est alors encerclé d’ennemis, et doit très vite réagir
afin d’éliminer tous les ennemis sans mourir.
Les ennemis repèrent le joueur dès son arrivée dans le niveau et
se lancent immédiatement à sa poursuite afin de l’éliminer. Le joueur
peut, à tout moment, dé-zoomer ou effectuer des rotations de caméra
pour voir d’autres parties du niveau et donc d’autres ennemis et ainsi
choisir le meilleur itinéraire pour traverser le niveau.

Info Sup

24

Epita 2018

Cthulhu

Noob Stompin’

Les déplacements bien dosés accompagnés d’une grande fluidité
permettent une bonne jouabilité. Le personnage possède une bonne
réactivité par rapport aux déplacements souhaités. Les déplacements
des ennemis (dirigés par une intelligence artificielle) sont également
cohérents ; les ennemis ne restent pas bloqués contre des murs en essayant de passer à travers les murs pour atteindre le personnage joué.
En termes de graphisme, les personnages, le terrain de jeu et les
différents effets que nous avons créés sont sobres mais esthétiques.

4.2

Comparaison résultats-objectifs

Avant même de commencer à coder notre projet, nous avions tous
en tête une certaine idée de ce qu’allait être notre projet à son terme.
Nous avions tous notre propre vision du jeu final. Maintenant que le
projet est à son terme, il est temps de mettre en relief les différences,
mais aussi les points communs que notre projet final partage avec nos
objectifs initiaux.
Comme nous l’attendions au début de notre projet, notre jeu est
très dynamique, les déplacements sont très fluides et le jeu est, de ce
fait, rapide et nerveux. A travers la réalisation de ce jeu vidéo, nous
souhaitions que le "Gameplay" soit vraiment proche du modèle original. Nous avons oeuvré pour nous rapprocher au plus de nos attentes
et nous ne sommes pas peu fier du résultat.
Nous sommes finalement parvenus, à la limite du temps imparti,
à inclure tous les élements que nous souhaitions ajouter. Certes le
rendu graphique n’est pas identique à "Hotline Miami"(notre modèle
de base) car nous avons souhaité prendre quelques libertés. Les sons
ne sont, en effet, pas les mêmes car nous souhaitions ajouter notre
propre touche personelle de ce côté là. Notre map, notre personnage
et les IA ont été travaillés dans le but de rendre notre jeu le plus
agréable possible pour les utilisateurs ayant joué ou non à "Hotline
Miami". De plus le moteur à particules articule des effets spéciaux
uniques pour un rendu particulièrement esthétique.

Info Sup

25

Epita 2018

Cthulhu

Noob Stompin’

5 Conclusion
5.1
5.1.1

Conclusions personnelles
Nicolas « Paspot » TIBI

Ayant des compétences en programmation et une bonne organisation de travail, j’ai été désigné chef de projet par mes coéquipiers pour
ce projet de SUP. Au début, je ne savais pas si j’étais apte à diriger un
groupe. Il s’est avéré que j’ai pu mener à bien mes fonctions et être
un élément moteur pour mes coéquipiers.
Je savais que ce ne serait pas une mince affaire, étant donné qu’aucun membre du groupe n’avait de notion de programmation au début
de l’année, mais j’ai tout de même accepté de relever le défi. J’ai eu
beaucoup à faire sur le projet notamment superviser le travail fait par
les autres membres du groupe.
Ce fut une très bonne expérience, de voir qu’en dépit des envies,
difficultés et incertitudes de certains, on arrive tout de même à créer
quelque chose de solide. Beaucoup d’idées nous sont venues à l’esprit pour la réalisation de projet notamment pour trouver le thème de
notre jeu. Nous avions tous les 4 beaucoup apprécié le thème d’un jeu
vidéo et de ce fait, nous avons décidé de se baser sur ce dernier. Cela
nous a couté énormément de temps mais nous sommes satisfaits du
résultat final.
Certaines tâches semblent assez faciles et sont très chrononphages,
alors que d’autres, d’apparences compliquées, se réalisent assez vite.
Mais je me suis rendu compte qu’à force de réfléchir et de me documenter, j’ai presque toujours trouvé une solution aux problèmes
que posent la réalisation du jeu et j’ai pu réaliser des tâches que je
pensais trop compliquées pour moi. Au final, notre groupe aura été
très productif et très sympathique, ce qui donne envie de renouveler
l’expérience de travail en groupe sur un projet.

Info Sup

26

Epita 2018

Cthulhu
5.1.2

Noob Stompin’

Eymeric « Phanel » TABOU

En début d’année, je n’avais aucune idée de comment réaliser un
jeu vidéo. Ce projet colossal me paraissait très vaste et je n’avais pas
encore les outis en main pour parvenir au résulat final de notre jeu
vidéo.
J’ai dû accomplir de nombreuses tâches qui n’ont clairement pas
été une mince affaire. Bien évidemment, je n’ai jamais été seul pour
réaliser certaines de ces tâches notamment les plus compliquées. Je
me suis occupé avec Nicolas de la réalisation des moteurs à particules, et j’ai très vite été surpris, de la même manière que Nicolas, de
leur potentiel incroyable. Nous avons eu baucoup de travail, quelques
désaccords et au final nous sommes parvenus à un très bon résultat
dont nous sommes satisfaits.
J’ai eu d’autres tâches à accomplir qui étaient, certes moins compliquées, mais néanmoins honorables et cruciales dans le développement du projet. C’est en ce sens que je me suis attelé à tout ce qui
concerne la communication au sein de notre projet. Cette partie regroupe principalement la réalisation du site web ainsi que tout ce
qui touche au LaTeX et autres domaines relatifs à l’information et à
l’avancement du projet.
De ce fait, Guillaume et moi avons oeuvré ensemble pour donner
une certaine image de notre jeu vidéo à travers la réalisation de notre
site web. Il contient aujourd’hui toutes les informations nécessaires et
primordiales pour introduire notre jeu vidéo au grand public.
Nous savons à quel point cette partie est importante et c’est pourquoi nous avons voulu donner le meilleur de nous même.

Info Sup

27

Epita 2018

Cthulhu
5.1.3

Noob Stompin’

Guillaume « Magou » BUISSON

Comme beaucoup de personnes au sein d’EPITA, j’ai toujours été
passionné de jeux vidéo et de pouvoir enfin en réaliser un fut une expérience très intéressante. Je n’avais, au début, aucune connaissance
dans aucun langage de programmation et ce ne fut pas chose facile
pour ma part d’apprendre à m’en servir.
J’ai eu des équipiers très axés sur le travail d’équipe ce qui m’a permis
de ne jamais être seul face aux problèmes rencontrés. Malgré des difficultés en programmation, j’ai pu apprendre beaucoup grâce à cette
expérience unique.
N’ayant aucune expérience en PHP, je me suis très vite intéressé à
la création du site web de notre projet. Enrichissant rapidement mes
connaissances dans ce domaine, j’ai su produire un site fonctionnel
tel que nous l’avons présenté précédemment. Il possède tout ce qu’un
site doit posséder que se soit au niveau des informations relatifs au
jeu ou au niveau du site en tant que tel.
Je me suis beaucoup renseigné notamment sur le site du zéro pour
acquérir les bases de la programmation HTML. Je me suis très vite
rendu compte que l’esthétisme était primordial dans la réalisation. Il
a donc fallu se pencher sur un aspect différent et selon moi plus dur :
rendre beau le contenu avec une page d’édition supplémentaire en
extension ".css".
De plus, j’ai beaucoup été assisté par Eymeric pendant la création de
ce dernier, lui étant aussi très intéressé par cette partie du projet. Nous
nous sommes penchés ensemble sur tout ce qui concerne le design,
les couleurs et la présation du site. Même si nous avons eu quelques
désaccords, nous nous sommes tout de même rejoins sur un style bien
précis.
J’ai eu d’autres roles à jouer sur d’autres parties du projet et ce
fut un peu comme un challenge. Ayant un chef de projet informé
des compétences des uns et des autres, il a su m’aiguiller pendant la
réalisation de certaines étapes. J’ai du, par exemple, travailler sur les
collissions avec d’autres membres de l’équipe.
Cela fut une rude épreuve mais nous avons su tire parti des points
faibles/ forts de chacun et mettre sur un pied des collissions fonctionnelles.

Info Sup

28

Epita 2018

Cthulhu
5.1.4

Noob Stompin’

Erwann « Myriks » TREHU

Pour ma part je suis arrivé dans cette école alors que je ne connaissais absolument rien en code. Mon intérêt pour ce domaine est tout
récent. Au fil de l’année et de ce projet, j’ai pu enrichir mes connaissances en programmation.
Au début de ce projet, je ne m’investissais pas beaucoup au niveau du code car je n’avais pas les compétences nécessaires ; mais
avec l’aide de mes camarades, j’ai pu très vite faire partie du projet
comme je l’espérais depuis le début.
Je dirais que ce projet m’a apporté une idée bien précise sur le
travail en équipe. J’ai pu remarqué que malgré mes difficultés, le
reste de l’équipe était là pour me soutenir et m’aider à avancer. À
de nombreuses reprises, mes coéquipiers m’ont aidé dans les différentes tâches que je devais réaliser.
J’ai pu voir que tout était vraiment coordonné lorsque nous travaillions en équipe ; à chaque fois que le moral était au plus bas, les
membres du groupe sont là pour nous soutenir et nous aider à avancer. J’ai beaucoup apprécié l’ambiance fraternelle présente au sein du
groupe durant cette année. Nous étions dans une ambiance de travail soutenue en particulier à l’approche des soutenances car elles demandent beaucoup de préparation et un sérieux de la part de chaque
membre.
J’ai également été marqué par une chose pendant cette année : le
fait de pouvoir compter sur quelqu’un d’autre pendant les moments
difficiles. En arrivant dans cette école, je savais que ce serait compliqué pour moi mais j’ai décidé de rien lâcher et de donner le meilleur
de moi même jusqu’au bout.

Info Sup

29

Epita 2018

Cthulhu

5.2

Noob Stompin’

Conclusion globale

Ce projet fut très intéressant pour chaque membre du groupe : chacun a pu s’investir et mettre à la disposition du groupe ses connaissances, son savoir faire et surtout montrer à l’ensemble du groupe sa
motivation dans ce premier projet colossal. Nous avons pu, à travers
la réalisation avoir un avant goût de ce que pourrait être un travail de
groupe dans la vie active. De même nous avons eu des désaccords,
des moments difficiles en tant que groupe mais cela nous a permis de
voir les côtés réalistes d’un vrai projet que l’on pourrait qualifier de
professionel. Ce fut donc une très bonne expérience pendant laquelle,
chacun a pu découvrir, apprendre ou obtenir des connaissances dans
un domaine spécifique et complexe. Chacun en garde une image positive et nous sommes tous très fier de ce que nous avons accompli.

Info Sup

30

Epita 2018

Cthulhu

Noob Stompin’

6 Webographie
canardpc.com
Nous avons trouvé quelques pages du forum d’aide très intéressante
en tombant sur des problèmes similaires aux notres, nous avons pu
mettre à profit ces dialogues.
developpez.com
Ce forum contient aussi beaucoup d’aides quant au développement
de jeux vidéo.
duckduckgo.com
C’est un très bon moteur de recherche pour des aides en informatique
et programmation, il donne des informations importantes très rapidement.
dotnet-france.com
Forum concernant toutes les technologies .NET dont le C SHARP, il
apporte donc une aide importante quand aux fonctionnalitées particulières de ce framework.
dreamincode.net
Comprend une multitude de sujets de programmation pouvant être
d’une grande aide.
hardware.fr
C’est un site très orienté hardware, mais leur forum propose aussi
beaucoup d’aide sur le software.
jeuxvideo.com
Ce site bien connu ne comporte pas que des joueurs de jeux vidéo,
on peut y trouver des échanges entre développeurs fort intéressants à
propos de création de jeux vidéo.

Info Sup

31

Epita 2018

Cthulhu

Noob Stompin’

msdn.microsoft.com
Ce site est la base pour l’utilisateur d’un langage microsoft, il comporte des références et des explications sur tout le langage de façon
très approfondie.
openclassrooms.com
Très bon site sur l’apprentissage de l’informatique, on y trouve donc
d’excellents tutoriaux sur le C SHARP et la création de jeux vidéo.
riemers.net
Ce site comporte beaucoup de tutoriaux de très bonne qualité sur les
jeux vidéo utilisant XNA.
wikipedia.org
Site très connu donnant des informations autant générales que techniques sur presque tous les sujets, dont le C SHARP et la création de
jeux vidéo.
xna-connection.com
Site français regroupant une communauté de développeurs utilisant
XNA, nous y avons donc trouvé maintes informations utiles à notre
projet.
youtube.com
Site de partage de vidéos, nous sommes tombés sur quelques chaînes
de démonstrations et de tutoriaux sur les jeux vidéo très intéressantes.

Info Sup

32

Epita 2018


Documents similaires


cahier des charges
rapport de soutenance finale
rapportdesoutenance
cvipi3
astrophysique 1 notions et termes a maitriser
synthese donatien lege


Sur le même sujet..