SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Rapport de soutenance




      Cross Divinity
      04/01/2012
 lefebv_k        dossan_j
   do_o          benoth_c
Table des matiĂšres
1 Présentation du jeu                                                                                                                  3

2 Moral du groupe                                                                                                                      3
  2.1 Le menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                      4
  2.2 Les cartes et les tuiles . . . . . . . . . . . . . . . . . . . . . . . . . .                                                     5
  2.3 Le site internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                     5

3 Moteur graphique, la cartographie par tuiles                                                                                         6
  3.1 Création de la classe Sprite . . . . . . . . . . . . . . . .                                    .   .   .   .   .   .   .   .    6
      3.1.1 Détermination de la position dessinée . . . . . .                                         .   .   .   .   .   .   .   .    7
      3.1.2 La méthode Dessiner . . . . . . . . . . . . . . .                                         .   .   .   .   .   .   .   .    9
      3.1.3 La méthode Actualiser . . . . . . . . . . . . . .                                         .   .   .   .   .   .   .   .    9
  3.2 Conversion d’un ïŹchier texte en une matrice de sprite.                                          .   .   .   .   .   .   .   .   10
      3.2.1 La fonction statique Associer . . . . . . . . . .                                         .   .   .   .   .   .   .   .   10
      3.2.2 La fonction RemplirMatrice . . . . . . . . . . .                                          .   .   .   .   .   .   .   .   10
  3.3 Utilisation de la matrice dans la Carte . . . . . . . . .                                       .   .   .   .   .   .   .   .   11
      3.3.1 Charger les contenus . . . . . . . . . . . . . . .                                        .   .   .   .   .   .   .   .   11
      3.3.2 Dessiner la carte . . . . . . . . . . . . . . . . .                                       .   .   .   .   .   .   .   .   11
      3.3.3 Actualiser la carte . . . . . . . . . . . . . . . .                                       .   .   .   .   .   .   .   .   12

4 Moteur son                                                                                                                          12

5 Les logiciels que nous avons       utilisés                                        13
  5.1 Visual Studio et XNA . .       . . . . . . . . . . . . . . . . . . . . . . . . 13
       5.1.1 SVN . . . . . . . .     . . . . . . . . . . . . . . . . . . . . . . . . 13
       5.1.2 Gimp et Paint . . .     . . . . . . . . . . . . . . . . . . . . . . . . 13

6 Conclusions                                                                                                                         14
      6.0.3 Chemsi . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14
      6.0.4 Olivier . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14
      6.0.5 Stéphane . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14
      6.0.6 Johan . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
      6.0.7 Conclusion générale           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
Le projet Sup du groupe Jamps de la promotion 2016 de l’Epita est lancĂ©. Notre
crĂ©ation avance avec enthousiasme et nous allons prĂ©senter l’état d’avancement de
   notre travail. Ce compte-rendu détaillera ce qui était prévu dans le cahier des
   charges : Le RPG « Cross Divinity », qui correspondra aux critÚres que nous
                     avions énoncés ainsi que quelques "bonus".
   commencerons par une présentation du jeu, puis nous montrerons les rouages
  internes. Et enïŹn nous dĂ©voilerons ce que nous avons utilisĂ© comme outils pour
                                arriver à ce résultat.
EPITA 2016                                                2 MORAL DU GROUPE


1    Présentation du jeu
    Pour ce projet nous avons dĂ©cidĂ© de rĂ©aliser un RPG au tour par tour s’inspirant
essentiellement des RPG japonais comme Final Fantasy, Persona, Valkyrie ProïŹle,
et autres « japonaiseries » mais aussi de jeux occidentaux comme Fallout et Morro-
wind.
Le systùme de combat sera semblable aux premiers Final Fantasy, c’est-à-dire un
systĂšme de combat au tour par tour oĂč l’on contrĂŽle quatre personnages que l’on
fait agir les uns aprĂšs les autres avant (ou aprĂšs) nos opposants. Ce systĂšme implique
que les combats et les phases d’exploration soient des phases distinctes pendant le
jeu.

    Les phases d’explorations seront faites en 2D isomĂ©triques (Fallout 2, Age of Em-
pire I , II). Durant ces phases, des énigmes seront proposées au joueur. La résolution
de ces Ă©nigmes sera nĂ©cessaire aïŹn de pouvoir continuer la progression dans le jeu.
Les monstres ou autres ennemis seront visibles Ă  l’écran et un contact avec ceux-
ci entrainera le lancement du combat. Ce systĂšme permettra au joueur de pouvoir
choisir ou non de lancer un combat.

   Et l’histoire ? Pour le moment aucun scĂ©nario prĂ©cis n’a Ă©tĂ© dĂ©cidĂ© par le groupe.
Beaucoup d’idĂ©es ont Ă©tĂ© proposĂ©es par tous les membres du groupe mais aucune
ne nous satisfait tous. Seul le monde dans lequel l’histoire se dĂ©roulera a Ă©tĂ© dĂ©cidĂ©.
L’histoire se passera donc sur une üle.



2    Moral du groupe
    Avant l’entrĂ©e dans l’Epita, seuls deux des membres du groupe se connaissaient,
le groupe s’est principalement formĂ© en prĂ©-rentrĂ©e de mathĂ©matiques. Mais ce n’est
que lorsque la création de groupe devenait nécessaire que le groupe a commencé à
fonctionner réellement. Ce projet nous a donc permis de faire de nouvelles connais-
sances. Le courant entre nous passe plutĂŽt bien, mĂȘme trĂšs bien. Tous les membres
sont trÚs motivés pour coder le jeu : De longues journées (pendant les vacances) de
codage intensif se sont dĂ©roulĂ©es dans la joie et la bonne humeur. AïŹn de renforcer
nos liens et permettre une meilleure cohésion au sein du groupe, il fut décidé de faire
une activitĂ© extrascolaire, car nous ne nous connaissions que dans l’Epita et nos rap-
ports n’étaient que sur le plan du travail. Une sortie dans un bar ou se dĂ©roulait un
concert fut organisée, les membres ont donc assisté à un concert de rock, une biÚre à
la main. Cependant la communication interne au groupe a nécessité quelques amé-
nagements. En eïŹ€et l’un des membres n’ayant pas de tĂ©lĂ©phone portable en dĂ©but
d’annĂ©e, il fut conclu un rendez-vous bihebdomadaire aïŹn que tout le groupe soit
mis au courant des derniÚres avancées.




                                          3                                     Jamps
EPITA 2016                                                 2 MORAL DU GROUPE


2.1    Le menu
    L’interface globale est un Ă©lĂ©ment indispensable au bon fonctionnement du logi-
ciel. Elle permettra en eïŹ€et Ă  l’utilisateur de manipuler plus facilement et rapidement
celui-ci. Il faut donc qu’elle soit complĂšte mais Ă©galement simple d’accĂšs. Elle s’or-
ganise autour du concept de l’écran : chaque partie du logiciel (comme le menu
principal, le menu des options, le jeu lui-mĂȘme) est gĂ©rĂ©e de maniĂšre graphique par
un Ă©cran, une surface qui prend toute la fenĂȘtre et qui capte toutes les interactions
de l’utilisateur.

Le fonctionnement des successions de ces Ă©crans est alors facilitĂ© par l’utilisation
d’une pile. En eïŹ€et, considĂ©rons une pile d’écrans dans laquelle seul l’écran au som-
met est aïŹƒchĂ© ; Ă  l’instant oĂč nous lançons le programme, cette pile est vide. Nous
empilons alors le menu principal qui donne ensuite l’ordre, selon le choix de l’utili-
sateur, d’empiler un autre Ă©cran (celui de jeu ou des options), ou de dĂ©piler, ce qui
terminerait alors l’exĂ©cution.

La conception du menu fut relativement simple Ă  imaginer mais sa rĂ©alisation s’avĂ©ra
complexe. En eïŹ€et, nous avons commencĂ© par penser Ă  toutes les classes d’une ma-
chine Ă  Ă©tat. Une machine Ă  Ă©tats est un modĂšle de comportement composĂ© d’un
nombre ïŹni d’états, de transitions entre ces Ă©tats, et d’actions : nous quittons un
Ă©tat particulier en eïŹ€ectuant une action qui va valider une transition. Par la suite,
nous avons couplĂ© ces diïŹ€Ă©rents Ă©tats Ă  l’adoption du langage C. Cela Ă©tait parfait
pour le menu, qui avait besoin de simplicité, et de rapidité et cela rejoignait donc
l’idĂ©e que nous nous Ă©tions faits sur l’interface globale. Il est simple Ă  utiliser pour
l’utilisateur, permet une utilisation intuitive et agrĂ©able mĂȘme s’il reste pas mal de
choses Ă  amĂ©liorer car pour le moment il est loin d’ĂȘtre totalement fonctionnel.

Pour ce qui est du menu à proprement parler, nous avons décidé de placer en fond
une image que nous avons réalisée par nos soins pour le rendre plus original et pour
ĂȘtre en cohĂ©rence avec l’univers qui rĂ©side dans notre jeu.

Les bases du jeu sont posées, il faut maintenant les consolider. Au sein de la partie
interface, pas mal de choses restent à ajouter. Nous nous sommes juste occupés du
menu pour le moment, l’interface utilisateur en jeu est en cours de construction et
le menu lui-mĂȘme est en phase d’amĂ©lioration. Nous rajouterons de nouvelles fonc-
tionnalités au menu, notamment dans la partie Options et Jouer de celui-ci. Dans
la partie « Options », des outils permettant de régler le volume correctement et
de modiïŹer la taille de l’écran seront ajoutĂ©s ; dans la partie « Jouer », un sous
menu avec de nouveaux icînes seraient envisageables pour permettre à l’utilisateur
de crĂ©er une nouvelle partie ou alors d’en charger une dĂ©jĂ  commencĂ©e. Pour ce qui
est de l’interface utilisateur, nous devrons rĂ©aliser un inventaire, et d’autres outils
facilitant la manipulation de notre jeu.




                                           4                                     Jamps
EPITA 2016                                                 2 MORAL DU GROUPE


2.2    Les cartes et les tuiles
    Le jeu se dĂ©roulera sur plusieurs emplacements, qui peuvent ĂȘtre structurĂ©s en
trois ensembles distincts :

-La carte intégrant la ville et les donjons, qui sera en 2D isométrique, et composée
de tuiles assemblĂ©es les unes aux autres, dans laquelle l’équipe du hĂ©ros, reprĂ©sentĂ©
par le personnage principal, se déplace et rencontre des personnages non joueurs.
-"La carte de combat", qui sera en 2D vue de cĂŽtĂ©, oĂč le joueur combat les diïŹ€Ă©rents
monstres qu’il rencontre. On y voit reprĂ©sentĂ©e l’équipe du joueur, les uns Ă  cĂŽtĂ© des
autres, face aux monstres. Dans cet emplacement le jeu se déroule au tour par tour.

-"La carte du monde", qui sera un simple dessin sur lequel les villes, les donjons et
les lieux visitables de l’ile seront placĂ©s et oĂč le joueur sera reprĂ©sentĂ© par un point
qui se déplace entre les lieux.
Lors de la phase de visite de la ville ou de donjons, la carte est générée à partir
d’un ïŹchier texte et de tuiles. Les tuiles sont crĂ©Ă©es avec gimp et paint. Leur taille
Ă©tant choisie arbitrairement, nous avons d’abord optĂ© pour une puissance de 2, la
128x64, Ă©tant plus facilement calculable par la carte graphique. Malheureusement
cette façon de procéder donnait des tuiles trop grandes ce qui nous mena à créer des
tuiles en 52x28.




2.3    Le site internet
    Les changement successifs de dessins ralentirent la création de la base de gra-
phismes. Les héros étant créés en pixel art, le changement tardif de norme de base a
remis à zéro les sprites des héros préexistants et la façon de les créer a été changée :
Les héros sont maintenant dessinés à la main sur papier, puis scannés et pixélisés à la
bonne taille. Une contrepartie inattendue s’en est dĂ©gagĂ©e, dessins sont en eïŹ€et aussi
utilisés pour maintenir le site web actif, en fournissant des artworks réguliÚrement a
la communauté potentielle.// Le site web, qui est notre vitrine à travers le monde,
a Ă©tĂ© conçu mais n’est pas encore disponible sur le web. Il est codĂ© en XHtml et en
CSS, le but Ă©tant Ă  terme d’y ajouter une base SQL et le rendre plus interactif Ă 
l’aide du PHP. Nous avons rencontrĂ© des problĂšmes dans la conception du site et
notamment dans la tentative d’instaurer une police personnalisĂ©e.//




                                           5                                     Jamps
EPITA 2016 3 MOTEUR GRAPHIQUE, LA CARTOGRAPHIE PAR TUILES


3     Moteur graphique, la cartographie par tuiles
    Pourquoi avoir choisi cette mĂ©thode ? Parce qu’elle permet, une fois que l’algo-
rithme est conçu, de crĂ©er rapidement et simplement des cartes. Ainsi Ă  partir d’un
ou plusieurs ïŹchiers textes (selon le nombre de couches) composĂ©s d’une suite de
lettres, nous obtenons une matrice de sprite disposant pour chacun d’entre eux de
toutes les informations nĂ©cessaires pour crĂ©er un environnement cohĂ©rent. EnïŹn les
méthodes pour dessiner et actualiser les attributs des tuiles seront faciles à réaliser
depuis la matrice.
Décomposons ce procédé en grandes étapes :

    1. Création de la classe sprite.
    2. Conversion d’un ïŹchier texte en une matrice de sprite.
    3. Utilisation de cette matrice créer une carte.

3.1     Création de la classe Sprite
    Un sprite Ă©tant tout ce que l’on va dessiner Ă  l’écran, c’est donc ce qui servira de
base Ă  tous les Ă©lĂ©ments graphiques, d’une part les tuiles, et d’autre part les dĂ©cors
et les personnages. Il devra disposer d’un certain nombre d’attributs dont ceux pour
dĂ©terminer la position oĂč elle sera dessinĂ©e et de mĂ©thodes telles que celles permet-
tant de le dessiner Ă  l’écran Ă  la position enregistrĂ©e.




                                           6                                     Jamps
EPITA 2016 3 MOTEUR GRAPHIQUE, LA CARTOGRAPHIE PAR TUILES


3.1.1   Détermination de la position dessinée
    Pour dĂ©terminer la position oĂč le sprite sera dessinĂ©, nous avons besoin d’un
certain nombre d’attributs intermĂ©diaires. En eïŹ€et nous ne disposons, au dĂ©but, que
d’un seul paramĂštre : la position matricielle qui demandera pour commencer d’ĂȘtre
convertie en position isométrique, ou position réelle.

    PositionIsometrique : Dépend uniquement des dimensions par défaut des tuiles
et de la position matricielle, l Ă©tant la ligne et c la colonne.
Soit H, la hauteur par dĂ©faut d’une tuile et L la largeur par dĂ©faut d’une tuile.




    BaseRectangle : Nous aurons nécessairement besoin de dessiner des sprites
plus larges et/ou plus profonds qu’une case, tels qu’une maison. Nous devons donc
calculer à partir de la position isométrique, la position de la base, ainsi que ses di-
mensions.
Soit h, la hauteur en nombre de cases et l la largeur en nombre de cases.




                                          7                                     Jamps
EPITA 2016 3 MOTEUR GRAPHIQUE, LA CARTOGRAPHIE PAR TUILES


   Position de dessin : EnïŹn, intĂ©ressons nous aux objets de dĂ©cors ou mĂȘme des
personnages qui dépasseraient en hauteur et/ou en largeur. Par exemple un arbre
en position (1,1) dans la matrice, doit Ă©videment avoir sa base confondue Ă  la tuile
en position (1,1). Or, si nous dessinons la texture Ă  la position de la base, nous
observerons un décalage. Ainsi nous devons calculer la position D, en fonction du
décalage en hauteur (decH) et en largeur (decL).

                                              baseX − decH
                    D(B, decH, decL) =
                                              baseY − decL

    Variations en fonction de la caméra : La caméra dispose principalement
d’une position en X ainsi que d’une position en Y. La camĂ©ra a deux modes de
dĂ©placement : le dĂ©placement libre avec les ïŹ‚Ăšches directionnelles, et un deuxiĂšme
qui permet de verrouiller la camĂ©ra sur le personnage principal. On peut passer d’un
mode Ă  l’autre grĂące Ă  la touche « L ».
Le premier modiïŹe simplement la position de la camĂ©ra en fonction de la touche
pressée. Le deuxiÚme fait varier la position en fonction de la position de la cible, sa
hauteur et la taille de l’écran (nĂ©cessaire pour centrer correctement).
Quelque soit la méthode choisie, la position de dessin de chaque sprite est actualisée
en fonction de la position de la caméra.




                                          8                                     Jamps
EPITA 2016 3 MOTEUR GRAPHIQUE, LA CARTOGRAPHIE PAR TUILES


3.1.2   La méthode Dessiner
    Nous pouvons dessiner Ă  l’écran Ă  l’aide de SpriteBatch, la texture (si non nulle)
à la position de dessin enregistrée.


3.1.3   La méthode Actualiser
   Si le sprite n’est pas en mouvement, nous n’aurons qu’à actualiser la position
dessinĂ©e en fonction de la camĂ©ra. Autrement, s’il est le personnage principal, mais
ne bouge pas, il faudra vĂ©riïŹer les entrĂ©es du clavier. EnïŹn s’il est en mouvement,
nous actualiserons son mouvement de translation.

VĂ©riïŹcation des entrĂ©es :En fonction de l’une des 8 directions entrĂ©e par le joueur,
le vecteur vitesse changera de valeur selon le sens de la translation qui pourra ĂȘtre
eïŹ€ectuĂ©. Nous vĂ©riïŹons ensuite si le mouvement dans ce sens est rĂ©alisable Ă  partir
de la position du personnage dans la matrice, et d’une matrice de boolĂ©en (plus de
dĂ©tail dans la partie CrĂ©ation de la Carte). S’il n’y a pas d’obstacle, nous calculons
sa destination.

Calcul de la destination :En fonction de la direction, nous trouvons la destination
matricielle que nous pouvons convertir en destination isométrique.

Mouvement du personnage :Tant que la position est diïŹ€Ă©rente de la destination,
la vitesse s’ajoute Ă  la position. Une fois que la translation est rĂ©alisĂ©e, la position
matricielle prend la valeur de la destination matricielle.




                                           9                                     Jamps
EPITA 2016 3 MOTEUR GRAPHIQUE, LA CARTOGRAPHIE PAR TUILES


3.2     Conversion d’un ïŹchier texte en une matrice de sprite.
   GrĂące Ă  XNA, nous avons pu nous servir de Stream Reader qui permet de lire
un ïŹchier texte externe.


3.2.1   La fonction statique Associer
   Cette fonction crĂ©e une nouvelle instance d’un sprite en fonction du caractĂšre
fourni en paramÚtre. Par exemple la lettre W créera un sprite de type Eau.


3.2.2   La fonction RemplirMatrice
    L’algorithme marche ainsi :
 1. Il crée une matrice de taille (le nombre de lignes, le nombre de caractÚres par
ligne).
 2. Ajoute Ă  la mĂȘme position dans la matrice le type de sprite associĂ© Ă  la lettre.




                                        10                                   Jamps
EPITA 2016 3 MOTEUR GRAPHIQUE, LA CARTOGRAPHIE PAR TUILES


3.3     Utilisation de la matrice dans la Carte
    Nous disposons désormais de toutes les méthodes nécessaires pour créer des ma-
trices de sprite. Nous pouvons donc nous en servir pour créer une carte disposant
de trois matrices, une pour les tuiles une autre pour la seconde couche (DĂ©cors et
personnages), la troisiĂšme est une simple matrice de boolĂ©en que l’on nommera Obs-
tacles.


3.3.1   Charger les contenus
     Pour chacune des matrices de sprite, nous commençons par charger les textures
adaptées en fonction du type de sprite rencontré dans la matrice. Ainsi, si le sprite
est de type , la texture de ce sprite chargera l’image de la tuile Eau. Nous chargeons
dans le mĂȘme temps certains attributs tels que le boolĂ©en estPassable qui indique
si l’on peut traverser ou non cet Ă©lĂ©ment, ou encore ceux dĂ©jĂ  expliquĂ©s prĂ©cĂ©dem-
ment : la longueur (l) et la profondeur (h) du sprite, et les décalages en hauteur et
en largeur.
Nous utilisons ensuite la fonction ChargerPositions, qui Ă  partir de la position ma-
tricielle et des calculs précédents, permet de déterminer la position dessinée.
EnïŹn nous remplissons Obstacles en fonction de la valeur d’EstPassable des sprites
de chacune des matrices. Si la position est franchissable, alors vrai sinon faux.


3.3.2   Dessiner la carte
   Dessiner la carte revient Ă  appeler la fonction Dessiner pour chacun des sprites
des deux matrices. Cependant l’ordre du parcours est important. En eïŹ€et c’est ce
qui dĂ©terminera si les objets sont aïŹƒchĂ©s devant ou derriĂšre les autres.




De cette maniÚre, les objets se superposeront de maniÚre cohérente, y compris lors
des déplacements.




                                         11                                    Jamps
EPITA 2016                                                         4 MOTEUR SON


3.3.3    Actualiser la carte
    Nous distinguons deux cas pour actualiser un Ă©lĂ©ment d’une matrice de sprite :
S’il est en mouvement ou non. S’il ne bouge pas, nous appellerons la mĂ©thode d’ac-
tualisation en fonction de la caméra. Ce sera le cas pour toutes les tuiles, mais
pas pour la seconde couche contenant Ă©galement les personnages. S’il bouge, nous
modiïŹons sa position dans la matrice puis nous actualisons sa translation.


4       Moteur son
    Le son est une des caractéristiques primordiales dans un RPG. Il permet de créer
une ambiance en fonction de la situation et une meilleure immersion du joueur dans
le jeu.
Le moteur son a donc Ă©tĂ© commencĂ© pour la premiĂšre soutenance. Pour l’instant ce
moteur gÚre uniquement des musiques, qui seront jouées pendant la phase de jeu.
Deux musiques sont disponibles dans le jeu. Il est possible de changer de musique
directement pendant le jeu en appuyant sur les touches "P" ou "M".
Il est aussi possible d’augmenter le son grñce à la touche "Numa 1" ou de le baisser
grĂące Ă  la touche "Numa 2". On peut aussi couper le son grĂące Ă  la touche "O".
Ces modiïŹcations sonores ne sont pas pour l’instant possibles dans le menu.
Il faudra désormais implémenter plusieurs musiques qui se lanceront automatique-
ment en fonction de la situation et du lieu oĂč le joueur se trouvera. Il faudra que l’on
puisse modiïŹer le volume sonore directement dans le menu. Des sons complĂ©men-
taires seront aussi implĂ©mentĂ©s aïŹn de rendre le jeu plus rĂ©aliste (bruits de coups
lors des combats, son d’ambiance etc..)




                                          12                                     Jamps
EPITA 2016                     5 LES LOGICIELS QUE NOUS AVONS UTILISÉS


5       Les logiciels que nous avons utilisés
5.1      Visual Studio et XNA
    Microsoft Visual Studio est une suite de logiciels de développement pour Win-
dows conçue par Microsoft. La derniùre version en date s’appelle Visual Studio 2010,
celle que nous utilisons pour la réalisation du projet.
Visual Studio est un ensemble complet d’outils de dĂ©veloppement permettant de gĂ©-
nérer de nombreuses fonctionnalités notamment des applications Web, des Services
Web XML et des applications mobiles. Visual C, l’outil de programmation que nous
avons pu dĂ©couvrir grĂące Ă  notre projet, utilise le mĂȘme environnement de dĂ©velop-
pement intégré (IDE, Integrated Development Environment) que les autres langages
fonctionnant sous Visual Studio. Cela leur permet de partager des outils et facilite
la création de solutions faisant appel à plusieurs langages.
XNA dĂ©signe une sĂ©rie d’outils fournis gratuitement par Microsoft qui facilite les dĂ©-
veloppements de jeux pour les plates-formes Windows, Windows Phone 7, et Xbox
360 en rĂ©unissant un maximum d’outils en provenance de Microsoft et de ses parte-
naires (DirectX, Visual Studio).
Par conséquent, le logiciel Microsoft XNA nous a principalement permis de repré-
senter notre jeu vidĂ©o sous Windows. GrĂące Ă  ce dernier, nous pouvons aïŹƒcher tout
le contenu de nos travaux rĂ©alisĂ©s en C Ă  l’écran.
L’environnement de dĂ©veloppement intĂ©grĂ© utilisĂ© est Visual Studio, un programme
que nous allons dĂ©ïŹnir ci-dessous.


5.1.1    SVN
   Suite aux diïŹ€Ă©rentes confĂ©rences faites par les promotions prĂ©cĂ©dentes, nous
avons décidé de choisir SVN comme logiciel de gestion de versions. Jusque là, aucun
de nous n’avait entendu parler de ce type de logiciel, nous Ă©tions encore Ă  l’époque
des clĂ©s de stockage. Il nous a pas mal facilitĂ© la vie, nous n’avons plus Ă  nous soucier
des problÚmes de pertes des clés. En plus de cela, SVN nous permet de travailler à
plusieurs simultanĂ©ment sur le mĂȘme projet sans qu’il n’y ait aucun conïŹ‚it entre les
uns et les autres. Suite à cet avantage là, nous avons pu consacrer le temps gagné à
approfondir d’autres tñches du projet qui nous paraissaient plus complexes.


5.1.2    Gimp et Paint
    Bien que photoshop est Ă  la disposition des Ă©lĂšves, le groupe utilise le logiciel
Gimp pour crĂ©er l’univers graphique, et paint vient faciliter la dĂ©marche de crĂ©a-
tion, le but Ă©tant de se crĂ©er un style graphique diïŹ€Ă©rentiable des autres jeux et de
controler parfaitement ce qui est aïŹƒchĂ© a l’écran




                                           13                                     Jamps
EPITA 2016                                                       6 CONCLUSIONS


6       Conclusions
6.0.3    Chemsi
    Avant de commencer Ă  coder notre projet, j’apprĂ©hendais un peu cette Ă©tape. En
eïŹ€et c’était la premiĂšre fois de ma vie que j’allais coder un projet concret et je n’y
connaissais rien du tout je ne connaissais rien au C et Ă  XNA. J’ai donc commencĂ©
par apprendre tout seul les bases du C grĂące a Ă  des tutoriels sur internet. Cette
Ă©tape n’était vraiment pas motivante. Mais le fait de coder en mĂȘme temps que
les autres membres du groupe et de voir que ce que j’avais appris se concrĂ©tisait
m’a grandement motivĂ©. Ce n’est que le dĂ©but du projet mais je pense que celui-
ci va beaucoup m’apporter au niveau intellectuel et aussi me donner une vĂ©ritable
expérience dans la programmation.



6.0.4    Olivier
    Depuis la rĂ©daction du cahier des charges, nous nous sommes rĂ©parti les diïŹ€Ă©-
rentes tùches pour le projet. Personnellement je me suis chargé de la partie « Menu
» de notre jeu. Dans cette partie lĂ , le dĂ©but Ă©tait fort diïŹƒcile d’autant plus que je
ne comprenais pas grand-chose au C et en plus de cela il fallait apprendre les bases
d’XNA. Savoir par quoi et oĂč commencer le codage du menu n’a pas Ă©tĂ© simple pour
ma part. J’ai parcouru pas mal de chemin avant de trouver un assez bon tutoriel
qui m’aura pas mal aidĂ©. A l’aide de ce dernier, j’ai pu rĂ©aliser des choses que je ne
concevais mĂȘme pas de faire avant un certain temps. Le fait d’avoir enïŹn rĂ©ussi Ă 
apporter quelque chose de concret au groupe et au projet m’a complĂštement boostĂ©.
Cela me rĂ©jouissait Ă  l’idĂ©e de devoir continuer sur cette voie lĂ  et faire progresser
le projet jusqu’à son terme ïŹnal.



6.0.5    Stéphane
    Ce projet est pour moi l’occasion d’une double expĂ©rience : la crĂ©ation d’un jeu
et la gestion d’un groupe pour le mener vers la rĂ©ussite. L’ensemble n’est pas une
chose facile, car ce sont deux domaines dans lesquels je n’ai pas ou peu d’expĂ©rience :
Je n’ai en eïŹ€et jamais participĂ© Ă  la crĂ©ation d’un jeu en groupe et bien qu’ayant
déjà acquis quelques compétences en code au collÚge et au lycée, la programmation
orientĂ©e objet ainsi que la maitrise C ne m’étaient pas connues. Je me suis chargĂ© de
la partie du graphisme du jeu, car j’aime Ă©galement dessiner, et du site web. C’est
Ă©galement la premiĂšre fois que je dois gĂ©rer l’organisation du travail d’un groupe, et
c’est peut-ĂȘtre la partie qui me paraĂźt la plus compliquĂ©e. Mes camarades sont trĂšs
motivĂ©s, mais il s’agit d’essayer de structurer l’ensemble, aïŹn de prĂ©senter un travail
cohĂ©rent. Ceci est une partie diïŹƒcile, qui ne m’est pas familiĂšre.




                                          14                                    Jamps
EPITA 2016                                                        6 CONCLUSIONS


6.0.6   Johan
    La premiÚre partie de ce projet a été trÚs plaisant pour moi. Ayant déjà un peu
d’expĂ©rience en algorithmique, je n’ai pas eu peur de me jeter Ă  l’eau le premier.
Ainsi, j’ai appris les bases du C directement sur le terrain, puisque j’ai commencĂ©
par notre moteur jeu (que nous commencerons à exploiter qu’à partir de la 2ùme
soutenance). Cela m’a permis d’apprendre beaucoup sur la programmation orien-
tĂ©e objet. Mais ceci m’a Ă©galement fait prendre de l’avance sur le reste du groupe,
qui n’avançait pas au mĂȘme rythme que moi. Pour que ces acquis nous soient fa-
vorables à tous, nous avons décidé de nous réunir pour coder ensemble, ce qui ne
fĂ»t pas chose aisĂ©e Ă  cause de nos horaires de cours diïŹ€Ă©rents (nous sommes de 3
classes diïŹ€Ă©rentes). Nous avons alors pu partager nos connaissances et ainsi rĂ©ajuster
les inĂ©galitĂ©s. A partir de ce moment, j’ai senti un intĂ©rĂȘt croissant chez les autres
membres du groupe. C’est ce qui me rend conïŹant pour le reste de l’aventure.


6.0.7   Conclusion générale
    Pour cette premiĂšre soutenance nous sommes parvenus Ă  accomplir tous les ob-
jectifs que nous nous Ă©tions ïŹxĂ©s dans le cahier des charges. Nous sommes capables
d’aïŹƒcher diïŹ€Ă©rents types de "texture au sol" (eau, sable, herbe) et des dĂ©cors comme
des arbres. Notre moteur physique gÚre les collisions avec les éléments du décor
(arbres pour l’instant), et il est impossible pour le personnage de passer sur des tex-
tures qui sont inaccessibles, comme l’eau. De plus, Ă©tant en 2D isomĂ©triques, notre
personnage est positionnĂ© derriĂšre le dĂ©cor quand il doit l’ĂȘtre (si le personnage passe
derriùre un arbre il n’est plus visible). Nous disposons aussi d’un scrolling qui permet
Ă  la camĂ©ra de suivre notre personnage au fur et Ă  mesure qu’il se dĂ©place sur la
carte. Nous sommes donc conïŹants quant Ă  l’avenir de notre projet et la motivation
grandit d’autant que ce dernier progresse.




                                          15                                     Jamps
EPITA 2016                                                6 CONCLUSIONS




             L’image d’introduction et de menu, fait sous Gimp




                          Une image de notre jeu



                                    16                            Jamps
EPITA 2016                                                 6 CONCLUSIONS




      Des fois les choses ne se passent pas aussi simplement que voulu




                      Une image de l’ébauche du site




                                    17                                   Jamps
EPITA 2016                                                6 CONCLUSIONS




        Toute l’équipe espĂšre que cette prĂ©sentation vous aura plu




                                   18                                Jamps

Weitere Àhnliche Inhalte

Andere mochten auch

Shop cctv camera in dallas
Shop cctv camera in dallasShop cctv camera in dallas
Shop cctv camera in dallasDynapost
 
Résumé maths
Résumé mathsRésumé maths
Résumé mathsChennoufi Med
 
Question 3- The Magazine Advert
Question 3- The Magazine AdvertQuestion 3- The Magazine Advert
Question 3- The Magazine Advertemmasnow14
 
SENIOR SERIES FLYER ABSOLUTE FINAL
SENIOR SERIES FLYER ABSOLUTE FINALSENIOR SERIES FLYER ABSOLUTE FINAL
SENIOR SERIES FLYER ABSOLUTE FINALEmilee Smith
 
IOM and CILT Merger
IOM and CILT MergerIOM and CILT Merger
IOM and CILT MergerPeter Karran
 
Assignments at Fujitsu
Assignments at FujitsuAssignments at Fujitsu
Assignments at FujitsuPeter Karran
 
April 26 2016 geneva 2020 steering committee meeting
April 26 2016 geneva 2020 steering committee meetingApril 26 2016 geneva 2020 steering committee meeting
April 26 2016 geneva 2020 steering committee meetingGeneva2020
 
Intermediate public transport (ipt)
Intermediate public transport (ipt)Intermediate public transport (ipt)
Intermediate public transport (ipt)abdul fattah barakzai
 
01. Pengantar Metodologi Desain - What is Design?
01. Pengantar Metodologi Desain - What is Design?01. Pengantar Metodologi Desain - What is Design?
01. Pengantar Metodologi Desain - What is Design?Aditya Sasongko
 
Question 2 Media Evaluation
Question 2 Media EvaluationQuestion 2 Media Evaluation
Question 2 Media EvaluationHollie15
 

Andere mochten auch (11)

Shop cctv camera in dallas
Shop cctv camera in dallasShop cctv camera in dallas
Shop cctv camera in dallas
 
Résumé maths
Résumé mathsRésumé maths
Résumé maths
 
Question 3- The Magazine Advert
Question 3- The Magazine AdvertQuestion 3- The Magazine Advert
Question 3- The Magazine Advert
 
SENIOR SERIES FLYER ABSOLUTE FINAL
SENIOR SERIES FLYER ABSOLUTE FINALSENIOR SERIES FLYER ABSOLUTE FINAL
SENIOR SERIES FLYER ABSOLUTE FINAL
 
IOM and CILT Merger
IOM and CILT MergerIOM and CILT Merger
IOM and CILT Merger
 
Assignments at Fujitsu
Assignments at FujitsuAssignments at Fujitsu
Assignments at Fujitsu
 
April 26 2016 geneva 2020 steering committee meeting
April 26 2016 geneva 2020 steering committee meetingApril 26 2016 geneva 2020 steering committee meeting
April 26 2016 geneva 2020 steering committee meeting
 
Intermediate public transport (ipt)
Intermediate public transport (ipt)Intermediate public transport (ipt)
Intermediate public transport (ipt)
 
El valor de la unidad
El valor de la unidadEl valor de la unidad
El valor de la unidad
 
01. Pengantar Metodologi Desain - What is Design?
01. Pengantar Metodologi Desain - What is Design?01. Pengantar Metodologi Desain - What is Design?
01. Pengantar Metodologi Desain - What is Design?
 
Question 2 Media Evaluation
Question 2 Media EvaluationQuestion 2 Media Evaluation
Question 2 Media Evaluation
 

Ähnlich wie Rapport de Soutenance 1

Rapport de Soutenance 3
Rapport de Soutenance 3Rapport de Soutenance 3
Rapport de Soutenance 3BartOunay
 
Sout3
Sout3Sout3
Sout33on
 
Chip_Ninja____Rapport_soutenance_finale
Chip_Ninja____Rapport_soutenance_finaleChip_Ninja____Rapport_soutenance_finale
Chip_Ninja____Rapport_soutenance_finaleChady Dimachkie
 
Memoire_final
Memoire_finalMemoire_final
Memoire_finalThanh Vu Le
 
S2_Projet_-_Groupe_18_-_Cahier_des_charges.pdf
S2_Projet_-_Groupe_18_-_Cahier_des_charges.pdfS2_Projet_-_Groupe_18_-_Cahier_des_charges.pdf
S2_Projet_-_Groupe_18_-_Cahier_des_charges.pdflouise645546
 
Guide utilisateur IPAQ 3715
Guide utilisateur IPAQ 3715Guide utilisateur IPAQ 3715
Guide utilisateur IPAQ 3715Esserentais
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)safwenbenfredj
 
Rapport pfe isi_Big data Analytique
Rapport pfe isi_Big data AnalytiqueRapport pfe isi_Big data Analytique
Rapport pfe isi_Big data AnalytiqueYosra ADDALI
 
Rapport-ilovepdf-compressed
Rapport-ilovepdf-compressedRapport-ilovepdf-compressed
Rapport-ilovepdf-compressedArthur Cousseau
 
Rapport Sdec Pi64
Rapport Sdec Pi64Rapport Sdec Pi64
Rapport Sdec Pi64guestf223f9
 
Conception et implémentation d'un nouveau langage de programmation
Conception et implémentation d'un nouveau langage de programmationConception et implémentation d'un nouveau langage de programmation
Conception et implémentation d'un nouveau langage de programmationAymen Bouein
 
Object detection and recognition in digital images
Object detection and recognition in digital imagesObject detection and recognition in digital images
Object detection and recognition in digital imagesSakher BELOUADAH
 
Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2
Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2
Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2Sofien Benrhouma
 
Visualisation graphique R avec ggplot2
Visualisation graphique R avec ggplot2Visualisation graphique R avec ggplot2
Visualisation graphique R avec ggplot2Daname KOLANI
 
Rapport Sdec Pi64
Rapport Sdec Pi64Rapport Sdec Pi64
Rapport Sdec Pi64guestf223f9
 
Gestion des actifs applicatifs
Gestion des actifs applicatifsGestion des actifs applicatifs
Gestion des actifs applicatifsSafaAballagh
 
pfe_rapport_poste_licence_LFIG.pdf
pfe_rapport_poste_licence_LFIG.pdfpfe_rapport_poste_licence_LFIG.pdf
pfe_rapport_poste_licence_LFIG.pdfnesrine haloui
 
Lavorare con java 6
Lavorare con java 6Lavorare con java 6
Lavorare con java 6Pi Libri
 

Ähnlich wie Rapport de Soutenance 1 (20)

Rapport de Soutenance 3
Rapport de Soutenance 3Rapport de Soutenance 3
Rapport de Soutenance 3
 
Sout3
Sout3Sout3
Sout3
 
Chip_Ninja____Rapport_soutenance_finale
Chip_Ninja____Rapport_soutenance_finaleChip_Ninja____Rapport_soutenance_finale
Chip_Ninja____Rapport_soutenance_finale
 
Memoire_final
Memoire_finalMemoire_final
Memoire_final
 
Poly
PolyPoly
Poly
 
S2_Projet_-_Groupe_18_-_Cahier_des_charges.pdf
S2_Projet_-_Groupe_18_-_Cahier_des_charges.pdfS2_Projet_-_Groupe_18_-_Cahier_des_charges.pdf
S2_Projet_-_Groupe_18_-_Cahier_des_charges.pdf
 
Guide utilisateur IPAQ 3715
Guide utilisateur IPAQ 3715Guide utilisateur IPAQ 3715
Guide utilisateur IPAQ 3715
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
 
Rapport pfe isi_Big data Analytique
Rapport pfe isi_Big data AnalytiqueRapport pfe isi_Big data Analytique
Rapport pfe isi_Big data Analytique
 
Rapport-ilovepdf-compressed
Rapport-ilovepdf-compressedRapport-ilovepdf-compressed
Rapport-ilovepdf-compressed
 
Rapport Sdec Pi64
Rapport Sdec Pi64Rapport Sdec Pi64
Rapport Sdec Pi64
 
Conception et implémentation d'un nouveau langage de programmation
Conception et implémentation d'un nouveau langage de programmationConception et implémentation d'un nouveau langage de programmation
Conception et implémentation d'un nouveau langage de programmation
 
Object detection and recognition in digital images
Object detection and recognition in digital imagesObject detection and recognition in digital images
Object detection and recognition in digital images
 
Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2
Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2
Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2
 
Tutorial GGPlot2
Tutorial GGPlot2Tutorial GGPlot2
Tutorial GGPlot2
 
Visualisation graphique R avec ggplot2
Visualisation graphique R avec ggplot2Visualisation graphique R avec ggplot2
Visualisation graphique R avec ggplot2
 
Rapport Sdec Pi64
Rapport Sdec Pi64Rapport Sdec Pi64
Rapport Sdec Pi64
 
Gestion des actifs applicatifs
Gestion des actifs applicatifsGestion des actifs applicatifs
Gestion des actifs applicatifs
 
pfe_rapport_poste_licence_LFIG.pdf
pfe_rapport_poste_licence_LFIG.pdfpfe_rapport_poste_licence_LFIG.pdf
pfe_rapport_poste_licence_LFIG.pdf
 
Lavorare con java 6
Lavorare con java 6Lavorare con java 6
Lavorare con java 6
 

Rapport de Soutenance 1

  • 1. Rapport de soutenance Cross Divinity 04/01/2012 lefebv_k dossan_j do_o benoth_c
  • 2. Table des matiĂšres 1 PrĂ©sentation du jeu 3 2 Moral du groupe 3 2.1 Le menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 Les cartes et les tuiles . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3 Le site internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3 Moteur graphique, la cartographie par tuiles 6 3.1 CrĂ©ation de la classe Sprite . . . . . . . . . . . . . . . . . . . . . . . . 6 3.1.1 DĂ©termination de la position dessinĂ©e . . . . . . . . . . . . . . 7 3.1.2 La mĂ©thode Dessiner . . . . . . . . . . . . . . . . . . . . . . . 9 3.1.3 La mĂ©thode Actualiser . . . . . . . . . . . . . . . . . . . . . . 9 3.2 Conversion d’un ïŹchier texte en une matrice de sprite. . . . . . . . . 10 3.2.1 La fonction statique Associer . . . . . . . . . . . . . . . . . . 10 3.2.2 La fonction RemplirMatrice . . . . . . . . . . . . . . . . . . . 10 3.3 Utilisation de la matrice dans la Carte . . . . . . . . . . . . . . . . . 11 3.3.1 Charger les contenus . . . . . . . . . . . . . . . . . . . . . . . 11 3.3.2 Dessiner la carte . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3.3 Actualiser la carte . . . . . . . . . . . . . . . . . . . . . . . . 12 4 Moteur son 12 5 Les logiciels que nous avons utilisĂ©s 13 5.1 Visual Studio et XNA . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.1.1 SVN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.1.2 Gimp et Paint . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 6 Conclusions 14 6.0.3 Chemsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6.0.4 Olivier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6.0.5 StĂ©phane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6.0.6 Johan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 6.0.7 Conclusion gĂ©nĂ©rale . . . . . . . . . . . . . . . . . . . . . . . 15
  • 3. Le projet Sup du groupe Jamps de la promotion 2016 de l’Epita est lancĂ©. Notre crĂ©ation avance avec enthousiasme et nous allons prĂ©senter l’état d’avancement de notre travail. Ce compte-rendu dĂ©taillera ce qui Ă©tait prĂ©vu dans le cahier des charges : Le RPG « Cross Divinity », qui correspondra aux critĂšres que nous avions Ă©noncĂ©s ainsi que quelques "bonus". commencerons par une prĂ©sentation du jeu, puis nous montrerons les rouages internes. Et enïŹn nous dĂ©voilerons ce que nous avons utilisĂ© comme outils pour arriver Ă  ce rĂ©sultat.
  • 4. EPITA 2016 2 MORAL DU GROUPE 1 PrĂ©sentation du jeu Pour ce projet nous avons dĂ©cidĂ© de rĂ©aliser un RPG au tour par tour s’inspirant essentiellement des RPG japonais comme Final Fantasy, Persona, Valkyrie ProïŹle, et autres « japonaiseries » mais aussi de jeux occidentaux comme Fallout et Morro- wind. Le systĂšme de combat sera semblable aux premiers Final Fantasy, c’est-Ă -dire un systĂšme de combat au tour par tour oĂč l’on contrĂŽle quatre personnages que l’on fait agir les uns aprĂšs les autres avant (ou aprĂšs) nos opposants. Ce systĂšme implique que les combats et les phases d’exploration soient des phases distinctes pendant le jeu. Les phases d’explorations seront faites en 2D isomĂ©triques (Fallout 2, Age of Em- pire I , II). Durant ces phases, des Ă©nigmes seront proposĂ©es au joueur. La rĂ©solution de ces Ă©nigmes sera nĂ©cessaire aïŹn de pouvoir continuer la progression dans le jeu. Les monstres ou autres ennemis seront visibles Ă  l’écran et un contact avec ceux- ci entrainera le lancement du combat. Ce systĂšme permettra au joueur de pouvoir choisir ou non de lancer un combat. Et l’histoire ? Pour le moment aucun scĂ©nario prĂ©cis n’a Ă©tĂ© dĂ©cidĂ© par le groupe. Beaucoup d’idĂ©es ont Ă©tĂ© proposĂ©es par tous les membres du groupe mais aucune ne nous satisfait tous. Seul le monde dans lequel l’histoire se dĂ©roulera a Ă©tĂ© dĂ©cidĂ©. L’histoire se passera donc sur une Ăźle. 2 Moral du groupe Avant l’entrĂ©e dans l’Epita, seuls deux des membres du groupe se connaissaient, le groupe s’est principalement formĂ© en prĂ©-rentrĂ©e de mathĂ©matiques. Mais ce n’est que lorsque la crĂ©ation de groupe devenait nĂ©cessaire que le groupe a commencĂ© Ă  fonctionner rĂ©ellement. Ce projet nous a donc permis de faire de nouvelles connais- sances. Le courant entre nous passe plutĂŽt bien, mĂȘme trĂšs bien. Tous les membres sont trĂšs motivĂ©s pour coder le jeu : De longues journĂ©es (pendant les vacances) de codage intensif se sont dĂ©roulĂ©es dans la joie et la bonne humeur. AïŹn de renforcer nos liens et permettre une meilleure cohĂ©sion au sein du groupe, il fut dĂ©cidĂ© de faire une activitĂ© extrascolaire, car nous ne nous connaissions que dans l’Epita et nos rap- ports n’étaient que sur le plan du travail. Une sortie dans un bar ou se dĂ©roulait un concert fut organisĂ©e, les membres ont donc assistĂ© Ă  un concert de rock, une biĂšre Ă  la main. Cependant la communication interne au groupe a nĂ©cessitĂ© quelques amĂ©- nagements. En eïŹ€et l’un des membres n’ayant pas de tĂ©lĂ©phone portable en dĂ©but d’annĂ©e, il fut conclu un rendez-vous bihebdomadaire aïŹn que tout le groupe soit mis au courant des derniĂšres avancĂ©es. 3 Jamps
  • 5. EPITA 2016 2 MORAL DU GROUPE 2.1 Le menu L’interface globale est un Ă©lĂ©ment indispensable au bon fonctionnement du logi- ciel. Elle permettra en eïŹ€et Ă  l’utilisateur de manipuler plus facilement et rapidement celui-ci. Il faut donc qu’elle soit complĂšte mais Ă©galement simple d’accĂšs. Elle s’or- ganise autour du concept de l’écran : chaque partie du logiciel (comme le menu principal, le menu des options, le jeu lui-mĂȘme) est gĂ©rĂ©e de maniĂšre graphique par un Ă©cran, une surface qui prend toute la fenĂȘtre et qui capte toutes les interactions de l’utilisateur. Le fonctionnement des successions de ces Ă©crans est alors facilitĂ© par l’utilisation d’une pile. En eïŹ€et, considĂ©rons une pile d’écrans dans laquelle seul l’écran au som- met est aïŹƒchĂ© ; Ă  l’instant oĂč nous lançons le programme, cette pile est vide. Nous empilons alors le menu principal qui donne ensuite l’ordre, selon le choix de l’utili- sateur, d’empiler un autre Ă©cran (celui de jeu ou des options), ou de dĂ©piler, ce qui terminerait alors l’exĂ©cution. La conception du menu fut relativement simple Ă  imaginer mais sa rĂ©alisation s’avĂ©ra complexe. En eïŹ€et, nous avons commencĂ© par penser Ă  toutes les classes d’une ma- chine Ă  Ă©tat. Une machine Ă  Ă©tats est un modĂšle de comportement composĂ© d’un nombre ïŹni d’états, de transitions entre ces Ă©tats, et d’actions : nous quittons un Ă©tat particulier en eïŹ€ectuant une action qui va valider une transition. Par la suite, nous avons couplĂ© ces diïŹ€Ă©rents Ă©tats Ă  l’adoption du langage C. Cela Ă©tait parfait pour le menu, qui avait besoin de simplicitĂ©, et de rapiditĂ© et cela rejoignait donc l’idĂ©e que nous nous Ă©tions faits sur l’interface globale. Il est simple Ă  utiliser pour l’utilisateur, permet une utilisation intuitive et agrĂ©able mĂȘme s’il reste pas mal de choses Ă  amĂ©liorer car pour le moment il est loin d’ĂȘtre totalement fonctionnel. Pour ce qui est du menu Ă  proprement parler, nous avons dĂ©cidĂ© de placer en fond une image que nous avons rĂ©alisĂ©e par nos soins pour le rendre plus original et pour ĂȘtre en cohĂ©rence avec l’univers qui rĂ©side dans notre jeu. Les bases du jeu sont posĂ©es, il faut maintenant les consolider. Au sein de la partie interface, pas mal de choses restent Ă  ajouter. Nous nous sommes juste occupĂ©s du menu pour le moment, l’interface utilisateur en jeu est en cours de construction et le menu lui-mĂȘme est en phase d’amĂ©lioration. Nous rajouterons de nouvelles fonc- tionnalitĂ©s au menu, notamment dans la partie Options et Jouer de celui-ci. Dans la partie « Options », des outils permettant de rĂ©gler le volume correctement et de modiïŹer la taille de l’écran seront ajoutĂ©s ; dans la partie « Jouer », un sous menu avec de nouveaux icĂŽnes seraient envisageables pour permettre Ă  l’utilisateur de crĂ©er une nouvelle partie ou alors d’en charger une dĂ©jĂ  commencĂ©e. Pour ce qui est de l’interface utilisateur, nous devrons rĂ©aliser un inventaire, et d’autres outils facilitant la manipulation de notre jeu. 4 Jamps
  • 6. EPITA 2016 2 MORAL DU GROUPE 2.2 Les cartes et les tuiles Le jeu se dĂ©roulera sur plusieurs emplacements, qui peuvent ĂȘtre structurĂ©s en trois ensembles distincts : -La carte intĂ©grant la ville et les donjons, qui sera en 2D isomĂ©trique, et composĂ©e de tuiles assemblĂ©es les unes aux autres, dans laquelle l’équipe du hĂ©ros, reprĂ©sentĂ© par le personnage principal, se dĂ©place et rencontre des personnages non joueurs. -"La carte de combat", qui sera en 2D vue de cĂŽtĂ©, oĂč le joueur combat les diïŹ€Ă©rents monstres qu’il rencontre. On y voit reprĂ©sentĂ©e l’équipe du joueur, les uns Ă  cĂŽtĂ© des autres, face aux monstres. Dans cet emplacement le jeu se dĂ©roule au tour par tour. -"La carte du monde", qui sera un simple dessin sur lequel les villes, les donjons et les lieux visitables de l’ile seront placĂ©s et oĂč le joueur sera reprĂ©sentĂ© par un point qui se dĂ©place entre les lieux. Lors de la phase de visite de la ville ou de donjons, la carte est gĂ©nĂ©rĂ©e Ă  partir d’un ïŹchier texte et de tuiles. Les tuiles sont crĂ©Ă©es avec gimp et paint. Leur taille Ă©tant choisie arbitrairement, nous avons d’abord optĂ© pour une puissance de 2, la 128x64, Ă©tant plus facilement calculable par la carte graphique. Malheureusement cette façon de procĂ©der donnait des tuiles trop grandes ce qui nous mena Ă  crĂ©er des tuiles en 52x28. 2.3 Le site internet Les changement successifs de dessins ralentirent la crĂ©ation de la base de gra- phismes. Les hĂ©ros Ă©tant crĂ©Ă©s en pixel art, le changement tardif de norme de base a remis Ă  zĂ©ro les sprites des hĂ©ros prĂ©existants et la façon de les crĂ©er a Ă©tĂ© changĂ©e : Les hĂ©ros sont maintenant dessinĂ©s Ă  la main sur papier, puis scannĂ©s et pixĂ©lisĂ©s Ă  la bonne taille. Une contrepartie inattendue s’en est dĂ©gagĂ©e, dessins sont en eïŹ€et aussi utilisĂ©s pour maintenir le site web actif, en fournissant des artworks rĂ©guliĂšrement a la communautĂ© potentielle.// Le site web, qui est notre vitrine Ă  travers le monde, a Ă©tĂ© conçu mais n’est pas encore disponible sur le web. Il est codĂ© en XHtml et en CSS, le but Ă©tant Ă  terme d’y ajouter une base SQL et le rendre plus interactif Ă  l’aide du PHP. Nous avons rencontrĂ© des problĂšmes dans la conception du site et notamment dans la tentative d’instaurer une police personnalisĂ©e.// 5 Jamps
  • 7. EPITA 2016 3 MOTEUR GRAPHIQUE, LA CARTOGRAPHIE PAR TUILES 3 Moteur graphique, la cartographie par tuiles Pourquoi avoir choisi cette mĂ©thode ? Parce qu’elle permet, une fois que l’algo- rithme est conçu, de crĂ©er rapidement et simplement des cartes. Ainsi Ă  partir d’un ou plusieurs ïŹchiers textes (selon le nombre de couches) composĂ©s d’une suite de lettres, nous obtenons une matrice de sprite disposant pour chacun d’entre eux de toutes les informations nĂ©cessaires pour crĂ©er un environnement cohĂ©rent. EnïŹn les mĂ©thodes pour dessiner et actualiser les attributs des tuiles seront faciles Ă  rĂ©aliser depuis la matrice. DĂ©composons ce procĂ©dĂ© en grandes Ă©tapes : 1. CrĂ©ation de la classe sprite. 2. Conversion d’un ïŹchier texte en une matrice de sprite. 3. Utilisation de cette matrice crĂ©er une carte. 3.1 CrĂ©ation de la classe Sprite Un sprite Ă©tant tout ce que l’on va dessiner Ă  l’écran, c’est donc ce qui servira de base Ă  tous les Ă©lĂ©ments graphiques, d’une part les tuiles, et d’autre part les dĂ©cors et les personnages. Il devra disposer d’un certain nombre d’attributs dont ceux pour dĂ©terminer la position oĂč elle sera dessinĂ©e et de mĂ©thodes telles que celles permet- tant de le dessiner Ă  l’écran Ă  la position enregistrĂ©e. 6 Jamps
  • 8. EPITA 2016 3 MOTEUR GRAPHIQUE, LA CARTOGRAPHIE PAR TUILES 3.1.1 DĂ©termination de la position dessinĂ©e Pour dĂ©terminer la position oĂč le sprite sera dessinĂ©, nous avons besoin d’un certain nombre d’attributs intermĂ©diaires. En eïŹ€et nous ne disposons, au dĂ©but, que d’un seul paramĂštre : la position matricielle qui demandera pour commencer d’ĂȘtre convertie en position isomĂ©trique, ou position rĂ©elle. PositionIsometrique : DĂ©pend uniquement des dimensions par dĂ©faut des tuiles et de la position matricielle, l Ă©tant la ligne et c la colonne. Soit H, la hauteur par dĂ©faut d’une tuile et L la largeur par dĂ©faut d’une tuile. BaseRectangle : Nous aurons nĂ©cessairement besoin de dessiner des sprites plus larges et/ou plus profonds qu’une case, tels qu’une maison. Nous devons donc calculer Ă  partir de la position isomĂ©trique, la position de la base, ainsi que ses di- mensions. Soit h, la hauteur en nombre de cases et l la largeur en nombre de cases. 7 Jamps
  • 9. EPITA 2016 3 MOTEUR GRAPHIQUE, LA CARTOGRAPHIE PAR TUILES Position de dessin : EnïŹn, intĂ©ressons nous aux objets de dĂ©cors ou mĂȘme des personnages qui dĂ©passeraient en hauteur et/ou en largeur. Par exemple un arbre en position (1,1) dans la matrice, doit Ă©videment avoir sa base confondue Ă  la tuile en position (1,1). Or, si nous dessinons la texture Ă  la position de la base, nous observerons un dĂ©calage. Ainsi nous devons calculer la position D, en fonction du dĂ©calage en hauteur (decH) et en largeur (decL). baseX − decH D(B, decH, decL) = baseY − decL Variations en fonction de la camĂ©ra : La camĂ©ra dispose principalement d’une position en X ainsi que d’une position en Y. La camĂ©ra a deux modes de dĂ©placement : le dĂ©placement libre avec les ïŹ‚Ăšches directionnelles, et un deuxiĂšme qui permet de verrouiller la camĂ©ra sur le personnage principal. On peut passer d’un mode Ă  l’autre grĂące Ă  la touche « L ». Le premier modiïŹe simplement la position de la camĂ©ra en fonction de la touche pressĂ©e. Le deuxiĂšme fait varier la position en fonction de la position de la cible, sa hauteur et la taille de l’écran (nĂ©cessaire pour centrer correctement). Quelque soit la mĂ©thode choisie, la position de dessin de chaque sprite est actualisĂ©e en fonction de la position de la camĂ©ra. 8 Jamps
  • 10. EPITA 2016 3 MOTEUR GRAPHIQUE, LA CARTOGRAPHIE PAR TUILES 3.1.2 La mĂ©thode Dessiner Nous pouvons dessiner Ă  l’écran Ă  l’aide de SpriteBatch, la texture (si non nulle) Ă  la position de dessin enregistrĂ©e. 3.1.3 La mĂ©thode Actualiser Si le sprite n’est pas en mouvement, nous n’aurons qu’à actualiser la position dessinĂ©e en fonction de la camĂ©ra. Autrement, s’il est le personnage principal, mais ne bouge pas, il faudra vĂ©riïŹer les entrĂ©es du clavier. EnïŹn s’il est en mouvement, nous actualiserons son mouvement de translation. VĂ©riïŹcation des entrĂ©es :En fonction de l’une des 8 directions entrĂ©e par le joueur, le vecteur vitesse changera de valeur selon le sens de la translation qui pourra ĂȘtre eïŹ€ectuĂ©. Nous vĂ©riïŹons ensuite si le mouvement dans ce sens est rĂ©alisable Ă  partir de la position du personnage dans la matrice, et d’une matrice de boolĂ©en (plus de dĂ©tail dans la partie CrĂ©ation de la Carte). S’il n’y a pas d’obstacle, nous calculons sa destination. Calcul de la destination :En fonction de la direction, nous trouvons la destination matricielle que nous pouvons convertir en destination isomĂ©trique. Mouvement du personnage :Tant que la position est diïŹ€Ă©rente de la destination, la vitesse s’ajoute Ă  la position. Une fois que la translation est rĂ©alisĂ©e, la position matricielle prend la valeur de la destination matricielle. 9 Jamps
  • 11. EPITA 2016 3 MOTEUR GRAPHIQUE, LA CARTOGRAPHIE PAR TUILES 3.2 Conversion d’un ïŹchier texte en une matrice de sprite. GrĂące Ă  XNA, nous avons pu nous servir de Stream Reader qui permet de lire un ïŹchier texte externe. 3.2.1 La fonction statique Associer Cette fonction crĂ©e une nouvelle instance d’un sprite en fonction du caractĂšre fourni en paramĂštre. Par exemple la lettre W crĂ©era un sprite de type Eau. 3.2.2 La fonction RemplirMatrice L’algorithme marche ainsi : 1. Il crĂ©e une matrice de taille (le nombre de lignes, le nombre de caractĂšres par ligne). 2. Ajoute Ă  la mĂȘme position dans la matrice le type de sprite associĂ© Ă  la lettre. 10 Jamps
  • 12. EPITA 2016 3 MOTEUR GRAPHIQUE, LA CARTOGRAPHIE PAR TUILES 3.3 Utilisation de la matrice dans la Carte Nous disposons dĂ©sormais de toutes les mĂ©thodes nĂ©cessaires pour crĂ©er des ma- trices de sprite. Nous pouvons donc nous en servir pour crĂ©er une carte disposant de trois matrices, une pour les tuiles une autre pour la seconde couche (DĂ©cors et personnages), la troisiĂšme est une simple matrice de boolĂ©en que l’on nommera Obs- tacles. 3.3.1 Charger les contenus Pour chacune des matrices de sprite, nous commençons par charger les textures adaptĂ©es en fonction du type de sprite rencontrĂ© dans la matrice. Ainsi, si le sprite est de type , la texture de ce sprite chargera l’image de la tuile Eau. Nous chargeons dans le mĂȘme temps certains attributs tels que le boolĂ©en estPassable qui indique si l’on peut traverser ou non cet Ă©lĂ©ment, ou encore ceux dĂ©jĂ  expliquĂ©s prĂ©cĂ©dem- ment : la longueur (l) et la profondeur (h) du sprite, et les dĂ©calages en hauteur et en largeur. Nous utilisons ensuite la fonction ChargerPositions, qui Ă  partir de la position ma- tricielle et des calculs prĂ©cĂ©dents, permet de dĂ©terminer la position dessinĂ©e. EnïŹn nous remplissons Obstacles en fonction de la valeur d’EstPassable des sprites de chacune des matrices. Si la position est franchissable, alors vrai sinon faux. 3.3.2 Dessiner la carte Dessiner la carte revient Ă  appeler la fonction Dessiner pour chacun des sprites des deux matrices. Cependant l’ordre du parcours est important. En eïŹ€et c’est ce qui dĂ©terminera si les objets sont aïŹƒchĂ©s devant ou derriĂšre les autres. De cette maniĂšre, les objets se superposeront de maniĂšre cohĂ©rente, y compris lors des dĂ©placements. 11 Jamps
  • 13. EPITA 2016 4 MOTEUR SON 3.3.3 Actualiser la carte Nous distinguons deux cas pour actualiser un Ă©lĂ©ment d’une matrice de sprite : S’il est en mouvement ou non. S’il ne bouge pas, nous appellerons la mĂ©thode d’ac- tualisation en fonction de la camĂ©ra. Ce sera le cas pour toutes les tuiles, mais pas pour la seconde couche contenant Ă©galement les personnages. S’il bouge, nous modiïŹons sa position dans la matrice puis nous actualisons sa translation. 4 Moteur son Le son est une des caractĂ©ristiques primordiales dans un RPG. Il permet de crĂ©er une ambiance en fonction de la situation et une meilleure immersion du joueur dans le jeu. Le moteur son a donc Ă©tĂ© commencĂ© pour la premiĂšre soutenance. Pour l’instant ce moteur gĂšre uniquement des musiques, qui seront jouĂ©es pendant la phase de jeu. Deux musiques sont disponibles dans le jeu. Il est possible de changer de musique directement pendant le jeu en appuyant sur les touches "P" ou "M". Il est aussi possible d’augmenter le son grĂące Ă  la touche "Numa 1" ou de le baisser grĂące Ă  la touche "Numa 2". On peut aussi couper le son grĂące Ă  la touche "O". Ces modiïŹcations sonores ne sont pas pour l’instant possibles dans le menu. Il faudra dĂ©sormais implĂ©menter plusieurs musiques qui se lanceront automatique- ment en fonction de la situation et du lieu oĂč le joueur se trouvera. Il faudra que l’on puisse modiïŹer le volume sonore directement dans le menu. Des sons complĂ©men- taires seront aussi implĂ©mentĂ©s aïŹn de rendre le jeu plus rĂ©aliste (bruits de coups lors des combats, son d’ambiance etc..) 12 Jamps
  • 14. EPITA 2016 5 LES LOGICIELS QUE NOUS AVONS UTILISÉS 5 Les logiciels que nous avons utilisĂ©s 5.1 Visual Studio et XNA Microsoft Visual Studio est une suite de logiciels de dĂ©veloppement pour Win- dows conçue par Microsoft. La derniĂšre version en date s’appelle Visual Studio 2010, celle que nous utilisons pour la rĂ©alisation du projet. Visual Studio est un ensemble complet d’outils de dĂ©veloppement permettant de gĂ©- nĂ©rer de nombreuses fonctionnalitĂ©s notamment des applications Web, des Services Web XML et des applications mobiles. Visual C, l’outil de programmation que nous avons pu dĂ©couvrir grĂące Ă  notre projet, utilise le mĂȘme environnement de dĂ©velop- pement intĂ©grĂ© (IDE, Integrated Development Environment) que les autres langages fonctionnant sous Visual Studio. Cela leur permet de partager des outils et facilite la crĂ©ation de solutions faisant appel Ă  plusieurs langages. XNA dĂ©signe une sĂ©rie d’outils fournis gratuitement par Microsoft qui facilite les dĂ©- veloppements de jeux pour les plates-formes Windows, Windows Phone 7, et Xbox 360 en rĂ©unissant un maximum d’outils en provenance de Microsoft et de ses parte- naires (DirectX, Visual Studio). Par consĂ©quent, le logiciel Microsoft XNA nous a principalement permis de reprĂ©- senter notre jeu vidĂ©o sous Windows. GrĂące Ă  ce dernier, nous pouvons aïŹƒcher tout le contenu de nos travaux rĂ©alisĂ©s en C Ă  l’écran. L’environnement de dĂ©veloppement intĂ©grĂ© utilisĂ© est Visual Studio, un programme que nous allons dĂ©ïŹnir ci-dessous. 5.1.1 SVN Suite aux diïŹ€Ă©rentes confĂ©rences faites par les promotions prĂ©cĂ©dentes, nous avons dĂ©cidĂ© de choisir SVN comme logiciel de gestion de versions. Jusque lĂ , aucun de nous n’avait entendu parler de ce type de logiciel, nous Ă©tions encore Ă  l’époque des clĂ©s de stockage. Il nous a pas mal facilitĂ© la vie, nous n’avons plus Ă  nous soucier des problĂšmes de pertes des clĂ©s. En plus de cela, SVN nous permet de travailler Ă  plusieurs simultanĂ©ment sur le mĂȘme projet sans qu’il n’y ait aucun conïŹ‚it entre les uns et les autres. Suite Ă  cet avantage lĂ , nous avons pu consacrer le temps gagnĂ© Ă  approfondir d’autres tĂąches du projet qui nous paraissaient plus complexes. 5.1.2 Gimp et Paint Bien que photoshop est Ă  la disposition des Ă©lĂšves, le groupe utilise le logiciel Gimp pour crĂ©er l’univers graphique, et paint vient faciliter la dĂ©marche de crĂ©a- tion, le but Ă©tant de se crĂ©er un style graphique diïŹ€Ă©rentiable des autres jeux et de controler parfaitement ce qui est aïŹƒchĂ© a l’écran 13 Jamps
  • 15. EPITA 2016 6 CONCLUSIONS 6 Conclusions 6.0.3 Chemsi Avant de commencer Ă  coder notre projet, j’apprĂ©hendais un peu cette Ă©tape. En eïŹ€et c’était la premiĂšre fois de ma vie que j’allais coder un projet concret et je n’y connaissais rien du tout je ne connaissais rien au C et Ă  XNA. J’ai donc commencĂ© par apprendre tout seul les bases du C grĂące a Ă  des tutoriels sur internet. Cette Ă©tape n’était vraiment pas motivante. Mais le fait de coder en mĂȘme temps que les autres membres du groupe et de voir que ce que j’avais appris se concrĂ©tisait m’a grandement motivĂ©. Ce n’est que le dĂ©but du projet mais je pense que celui- ci va beaucoup m’apporter au niveau intellectuel et aussi me donner une vĂ©ritable expĂ©rience dans la programmation. 6.0.4 Olivier Depuis la rĂ©daction du cahier des charges, nous nous sommes rĂ©parti les diïŹ€Ă©- rentes tĂąches pour le projet. Personnellement je me suis chargĂ© de la partie « Menu » de notre jeu. Dans cette partie lĂ , le dĂ©but Ă©tait fort diïŹƒcile d’autant plus que je ne comprenais pas grand-chose au C et en plus de cela il fallait apprendre les bases d’XNA. Savoir par quoi et oĂč commencer le codage du menu n’a pas Ă©tĂ© simple pour ma part. J’ai parcouru pas mal de chemin avant de trouver un assez bon tutoriel qui m’aura pas mal aidĂ©. A l’aide de ce dernier, j’ai pu rĂ©aliser des choses que je ne concevais mĂȘme pas de faire avant un certain temps. Le fait d’avoir enïŹn rĂ©ussi Ă  apporter quelque chose de concret au groupe et au projet m’a complĂštement boostĂ©. Cela me rĂ©jouissait Ă  l’idĂ©e de devoir continuer sur cette voie lĂ  et faire progresser le projet jusqu’à son terme ïŹnal. 6.0.5 StĂ©phane Ce projet est pour moi l’occasion d’une double expĂ©rience : la crĂ©ation d’un jeu et la gestion d’un groupe pour le mener vers la rĂ©ussite. L’ensemble n’est pas une chose facile, car ce sont deux domaines dans lesquels je n’ai pas ou peu d’expĂ©rience : Je n’ai en eïŹ€et jamais participĂ© Ă  la crĂ©ation d’un jeu en groupe et bien qu’ayant dĂ©jĂ  acquis quelques compĂ©tences en code au collĂšge et au lycĂ©e, la programmation orientĂ©e objet ainsi que la maitrise C ne m’étaient pas connues. Je me suis chargĂ© de la partie du graphisme du jeu, car j’aime Ă©galement dessiner, et du site web. C’est Ă©galement la premiĂšre fois que je dois gĂ©rer l’organisation du travail d’un groupe, et c’est peut-ĂȘtre la partie qui me paraĂźt la plus compliquĂ©e. Mes camarades sont trĂšs motivĂ©s, mais il s’agit d’essayer de structurer l’ensemble, aïŹn de prĂ©senter un travail cohĂ©rent. Ceci est une partie diïŹƒcile, qui ne m’est pas familiĂšre. 14 Jamps
  • 16. EPITA 2016 6 CONCLUSIONS 6.0.6 Johan La premiĂšre partie de ce projet a Ă©tĂ© trĂšs plaisant pour moi. Ayant dĂ©jĂ  un peu d’expĂ©rience en algorithmique, je n’ai pas eu peur de me jeter Ă  l’eau le premier. Ainsi, j’ai appris les bases du C directement sur le terrain, puisque j’ai commencĂ© par notre moteur jeu (que nous commencerons Ă  exploiter qu’à partir de la 2Ăšme soutenance). Cela m’a permis d’apprendre beaucoup sur la programmation orien- tĂ©e objet. Mais ceci m’a Ă©galement fait prendre de l’avance sur le reste du groupe, qui n’avançait pas au mĂȘme rythme que moi. Pour que ces acquis nous soient fa- vorables Ă  tous, nous avons dĂ©cidĂ© de nous rĂ©unir pour coder ensemble, ce qui ne fĂ»t pas chose aisĂ©e Ă  cause de nos horaires de cours diïŹ€Ă©rents (nous sommes de 3 classes diïŹ€Ă©rentes). Nous avons alors pu partager nos connaissances et ainsi rĂ©ajuster les inĂ©galitĂ©s. A partir de ce moment, j’ai senti un intĂ©rĂȘt croissant chez les autres membres du groupe. C’est ce qui me rend conïŹant pour le reste de l’aventure. 6.0.7 Conclusion gĂ©nĂ©rale Pour cette premiĂšre soutenance nous sommes parvenus Ă  accomplir tous les ob- jectifs que nous nous Ă©tions ïŹxĂ©s dans le cahier des charges. Nous sommes capables d’aïŹƒcher diïŹ€Ă©rents types de "texture au sol" (eau, sable, herbe) et des dĂ©cors comme des arbres. Notre moteur physique gĂšre les collisions avec les Ă©lĂ©ments du dĂ©cor (arbres pour l’instant), et il est impossible pour le personnage de passer sur des tex- tures qui sont inaccessibles, comme l’eau. De plus, Ă©tant en 2D isomĂ©triques, notre personnage est positionnĂ© derriĂšre le dĂ©cor quand il doit l’ĂȘtre (si le personnage passe derriĂšre un arbre il n’est plus visible). Nous disposons aussi d’un scrolling qui permet Ă  la camĂ©ra de suivre notre personnage au fur et Ă  mesure qu’il se dĂ©place sur la carte. Nous sommes donc conïŹants quant Ă  l’avenir de notre projet et la motivation grandit d’autant que ce dernier progresse. 15 Jamps
  • 17. EPITA 2016 6 CONCLUSIONS L’image d’introduction et de menu, fait sous Gimp Une image de notre jeu 16 Jamps
  • 18. EPITA 2016 6 CONCLUSIONS Des fois les choses ne se passent pas aussi simplement que voulu Une image de l’ébauche du site 17 Jamps
  • 19. EPITA 2016 6 CONCLUSIONS Toute l’équipe espĂšre que cette prĂ©sentation vous aura plu 18 Jamps