2. EPITA 2016
Avant-propos La création d'un jeu vidéo relève d'un grand dé, que cela soit
d'un point de vue technique, logistique ou humain. Cependant les études à l'école
d'ingénierie EPITA nous orent d'incontestables de ressources et d'opportunités an
d'améliorer les capacités et compétences des membres du groupe ainsi que les possi-
bilités d'évolution pour ce projet. C'est dans cette optique que nous avons déni un
agenda hebdomadaire grâce auquel les membres bénéciaient d'une grande indépen-
dance et d'une forte autonomie, tout en s'assurant de la cohésion du groupe, car ce
projet doit se rapprocher d'un projet professionnel. Ce projet est une occasion unique
d'acquérir, dès notre première année, une expérience de développement proche des
projets professionnelle. Grâce également à l'apport des divers travaux pratiques de
l'école, qui sont une bonne base pour faire évoluer certaines de nos compétences, les
membres de l'équipe Jamps essaient de faire évoluer pas à pas le jeu CrossDivinity
en un jeu agréable et de qualité. A travers ce rapport, vous pourrez voir l'évolution
du projet CrossDivinity de l'équipe d'étudiants Jamps entre aujourd'hui et notre
dernière rencontre.
1 Jamps
4. 0.1 Introduction
Le projet Sup du groupe Jamps de la promotion 2016 de l'Epita est en bonne voie
de nalisation. 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.
cela, nous commencerons par un petit rappel de ce qu'était le jeu la dernière fois
que nous nous sommes vus, puis nous détaillerons les rouages internes des
nouveautés. Et enn nous dévoilerons ce que nous prévoyons comme jeu nal pour
la dernière soutenance.
5. EPITA 2016 TABLE DES MATIÈRES
0.2 Présentation du jeu
CrossDivinity développé par l'équipe Jamps est un projet de jeu de type RPG,
où le personnage vit des aventures inspirées des mangas des années 90, et dans le-
quel le joueur se trouve face à des choix où il peut faire évoluer son personnage à sa
guise. Le jeu débute sur cette scène : Survivant du naufrage de son navire, le héros
se retrouve seul sur une île inconnue ; grâce à l'aide qu'il demande au seigneur local
il découvre peu a peu tous les mystères qui entourent l'ile et ses habitants. Lors de la
soutenance de février, nous vous avions présenté les diverses -A revoir- composantes
de notre jeu : les déplacements, les divers menus et les interactions avec les objets,
ainsi qu'avec les personnages non joueurs. -Fin du revoir- .
4 Jamps
6. EPITA 2016 TABLE DES MATIÈRES
0.3 Le groupe
Malgré des passages diciles, le groupe a réussi a surmonter ses épreuves, et il
est toujours composé de :
0.3.1 Olivier
Au fur et à mesure que nous avançons dans le temps, nous nous rapprochons
à grand pas de la n de l'année, et ainsi du résultat nal de notre jeu. Cela nous
motive d'autant plus car l'idée de savoir que nous obtiendrons bientôt un aperçu
de la version nale est un sentiment d'accomplissement et de réussite. Durant cette
période précédant la troisième soutenance, ayant déjà mis en place de nombreuses
bases, nous nous sommes plus attardés sur des points stratégiques et importants
du jeu (les combats). Ce côté plus interactif m'a particulièrement plu car notre jeu
tourne principalement autour de ces systèmes de combats. Auparavant, nos tests se
résumaient à divers déplacements du personnage et de petites interactions avec les
objets, rien de plus. Maintenant que les combats sont implémentés, le jeu lui-même
devient plus intéressant pour ceux qui l'essaient comme pour nous qui le dévelop-
pons. Cela nous a permis d'avoir bien plus d'actions et le but concret de notre projet
ressort enn.
0.3.2 Stéphane
Cette période a été plus dicile à gérer que les deux précédentes. Même si nous
nous entendons toujours bien par ailleurs, quelques tensions sont apparues dans le
groupe. La réalité d'un travail de projet en groupe est bien diérente de la simple
entraide entre camarades de classe. Il faut réussir à équilibrer le travail de chaque
membre, et aussi que chacun se sente reconnu pour son travail. En tant que chef de
groupe, c'est un rôle à assumer. C'est nouveau pour moi et cette expérience a été
bien dicile. J'ai beaucoup appris mais je me rends compte qu'il me reste encore
beaucoup à apprendre. Heureusement, nous avons pris conscience de nos faiblesse et
décidé de suivre un planning rigoureux de suivi et d'échanges pour la prochaine et
dernière présentation.
0.3.3 Chemsi
Et voilà nous sommes arrivés à la troisième et avant-dernière soutenance. Hélas
je pense que cette soutenance a été plus dur que les autres dû a un manque de
coordination entre les membres du groupe ainsi qu'un relachement du travail de
ma part. Mais cette mésaventure m'a permis de me reprendre en main et cela m'a
remotivé pour la dernière soutenance pour laquelle je ne me laisserais pas decourager.
0.3.4 Johan
Cette 3ème période de préparation a été riche en émotions : Beaucoup de frus-
trations mais aussi des bons moments passés ensemble à les résoudre. Ainsi on a pu
5 Jamps
7. EPITA 2016 TABLE DES MATIÈRES
trouver des solutions pour franchir ces obstacles, mais qu'il reste, pour certains, en-
core à mettre en ÷uvre. Cela demandera certes de la volonté, mais les récompenses
sont à la hauteur.
6 Jamps
8. EPITA 2016 1 LES ÉVOLUTIONS ET AMÉLIORATIONS
1 Les évolutions et améliorations
Depuis la dernière présentation, l'équipe a travaillé sur diérentes nouveautés.
En voici une synthèse.
1.1 Amélioration des menus
Durant cette période précédant la troisième soutenance, nous avons décidé de
revoir certains points du Menu dans l'optique d'améliorer le rendu graphique et
d'autres notions tournant autour de nos diérents menus existants. Lors de la deuxième
soutenance, le rendu du Menu nous paraissait assez médiocre, et de nombreuses mo-
dications nous paraissaient nécessaires. Nous nous sommes donc décidés de le faire
pour la troisième soutenance.
Tout d'abord, un point qui nous paraissait particulièrement important était la sau-
vegarde de données en cours de jeu. Pouvoir jouer à un jeu est un bon début, mais
devoir le recommencer à chaque fois que nous le quittons est un poil plus contrai-
gnant. C'est pour cela que nous avons pensé que la sauvegarde était indispensable.
Dans la suite de ce rapport, nous vous expliquerons un peu plus en détail le fonc-
tionnement de notre système de sauvegarde.
D'autre part, nous nous sommes tous mis d'accord sur une font pour éviter de chan-
ger à nouveau car la font de base n'était pas vraiment au goût de tout le monde. Du
point de vue esthétique sur le Menu, nous avons amélioré le cadre et mis en place
des noms pour chaque grand menu que nous possédons.
1.2 Conception des personnages de notre jeu
1.2.1 La Classe Person
Lorsque nous avons commencé notre projet, la première classe que nous avions
codée fut la classe Person. Cette classe Person est en fait la classe qui détermine
les caractéristiques de tous les personnages vivants de notre jeu, que ce soit
un monstre, un personnage non-jouable ou nos personnages jouables. Cette classe
permet de donner à ces êtres vivants des statistiques comme le nombre de points de
vie qu'ils possèdent, leur force, leur endurance ainsi que leur niveau d'expérience.
C'est donc à partir de cette classe que nous avons créé tous les êtres vivants présents
dans notre jeu.
7 Jamps
9. EPITA 2016 1 LES ÉVOLUTIONS ET AMÉLIORATIONS
1.2.2 La Classe Hero
Cette classe est celle qui nous permet de créer tous les personnages du jeu ca-
pables de s'équiper d'objets comme des armes ou des armures. Elle nous permettra
donc de créer les quatre personnages principaux ainsi que le méchant de l'histoire
mais aussi tous les personnages non-jouables qui devront s'équiper d'objets. Elle
ne prendra donc pas en compte les monstres, car ceux ne s'équipent pas d'objets.
Cette classe nous permettra aussi de connaître les statistiques de nos personnages
dans le Menu Personnages en prenant en compte les armes et armures qui équipent
ceux-ci. Nous permettant de créer les personnages capables de s'équiper d'objets,
cette classe gère également l'équipement des personnages, c'est-à-dire leur capacité
à s'équiper et se déséquiper d'armes et d'armures et ainsi gérer les variations dans
les statistiques des personnages.
person.JPEG
8 Jamps
10. EPITA 2016 1 LES ÉVOLUTIONS ET AMÉLIORATIONS
1.2.3 La Classe Stu
Cette classe Stu est la classe nécéssaire à la création de nouveaux objets dans
notre jeu. Cette classe détérmine diérent caractéristiques des objets créés comme
leur nom, leur quantitémais aussi leur prix de vente.De cette classe sont dérivés deux
autres sous classe qui utilisent les caractéristiques fournis dans la classe Stu. Pre-
mièrement, la classe Consumable. Elle comprend tout les objets que les personnages
peuvent consommés, c'est-à-dire, à usage unique. Une fois utilisé ces objets dispa-
raissent. Cette classe comprendra donc tout les objets comme les potions de vie, de
magie. La deuxième classe est la classe Equipement. Cette classe comprend tout les
objets que les personnages sont capable d'équipé comme les armes et les armures.
Il exsite trois types d'armure (casque, plastron et chaussure) ainsi que deux types
d'armes (arme main gauche et arme main droite). Chaque equipement possède ses
propres caractéristiques de force, de dégats, d'endurance et de points de vie qui sont
ensuite ajoutés aux caracteristiques des personnages qui équipent ces objets. Ces
points de caractéristiques sont ajoutés en tant que bonus puis sont comptabilisés
dans les caracteristiques totales à l'aide de la classe Hero.
9 Jamps
11. EPITA 2016 1 LES ÉVOLUTIONS ET AMÉLIORATIONS
1.3 Conception de l'univers
1.3.1 Les dialogues
L'écriture des dialogues fut une activité a part, n'ayant ni les contraintes gra-
phiques du jeu ni ses contraintes techniques.// L'écriture des dialogues est néanmoins
un travail complexe avec ses règles et méthodes, tout en ayant une grande exibilité.
La diérence majeure avec les dialogues de livres ou de cinéma est que le joueur
peut interagir, et il faut donc imaginer l'ensemble des réponses appropriées en étant
clair et concis.//
1.3.2 Les quêtes
Pour cette troisième soutenance les quêtes disponibles seront simples et option-
nelles. Nous pourrons proposer trois choix : -Quête pour le prêtre au temple du
village : Il a besoin de plantes pour faire un antidote pour un villageois malade. On
trouve ces plantes en tant que tribut sur les ennemis des plaines. -Quête pour le
maire, qui demande de l'aider ainsi que ses villageois en faisant fuir une meute de
trois loups qui monopolise le point d'eau local dans les forets et menace la survie
du village. -Quête pour le forgeron qui demande d'aller chercher du minerai sur les
falaises, pour en faire une cotte de mailles an d'équiper un des héros du joueur. Les
quêtes n'ont aucun lien avec l'histoire principale mais aident le joueur et son équipe
à poursuivre leurs péripéties avec plus de facilité.
10 Jamps
12. EPITA 2016 1 LES ÉVOLUTIONS ET AMÉLIORATIONS
1.4 Les combats
1.4.1 Notre système de combat nal
Pour cette soutenance, l'équipe Jamps a décidé de commencer la mise de place
du système de combat de notre jeu.
Pour rappel, le système de combat de notre projet sera un système au tour par tour,
où le joueur et les monstres ennemis eectuent leurs actions les uns après les autres :
Lorsque tous les personnages contrôlés par le joueur ont eectué leurs actions durant
le tour, c'est au tour de l'ennemi d'eectuer toutes les siennes.
Pour notre mode de combat, le joueur disposera de plusieurs choix tactiques
comme lancer une attaque à l'aide de l'arme équipée, lancer des sorts (pour les ma-
giciens et sorciers) an de soigner ses alliés ou de blesser ses ennemis. Le joueur aura
aussi la possibilité d'utiliser des objets qu'il aura soit acquis auprès de marchands
(PNJ), soit trouvé dans des cores, ou encore obtenu en tuant des monstres. La
dernière option tactique oerte au joueur est la fuite. Celle-ci lui permettra d'échap-
per à certains combats, qu'il juge trop ardus ou même trop dangereux. Il sera bien
entendu impossible d'utiliser l'option fuite contre les boss du jeu.
La mort de tous les alliés ou de tous les ennemis entraînera la n du combat.
D'autres objectifs seront à remplir pour mettre n à des combats spéciaux, comme
ceux de certains boss.
Les combats permettront donc d'obtenir des objets spéciques, tels que les objets
nécessaires à l'accomplissement de certaines quêtes, mais aussi d'obtenir des armes
et équipements, plus ou moins rares. Certains équipements ne seront accessibles
qu'auprès de certains de monstres.
Les combats, comme les quêtes, sont un bon moyen d'obtenir de l'expérience et de
l'argent an de faire évoluer ses personnages et de les rendre plus forts.
11 Jamps
13. EPITA 2016 1 LES ÉVOLUTIONS ET AMÉLIORATIONS
1.4.2 Le fonctionnement de notre système de combat
Les combats, un menu particulier Comme prévu dans notre cahier des charges,
le système de combat est un menu particulier. En eet, notre système de combat
utilise le même principe que notre système de menu et y ajoute quelques particula-
rités.
Comment notre système de combat fonctionne t-il ?
Tout notre jeu est basé sur le fonctionnement d'une pile. Lorsque le joueur lance
le jeu, on empile le jeu en premier puis le menu principal. Lorsqu'on démarre une
partie on dépile le menu principal ce qui met la partie lancée au sommet de la pile.
Le système de combat se base sur le même principe. Lorsque le joueur rencontre un
ennemi on empile notre Menu Combat, ce qui a pour eet de changer le sommet
de la pile et ainsi de faire apparaitre à l'écran notre système de combat.
Ressources utilisées lors du déroulement du combat Lors du lancement
d'un combat, trois listes distinctes sont créées.
- Une liste de monstres : elle contient l'équipe de monstres que le joueur va de-
voir aronter lors du combat. Cette liste permettra de sélectionner la cible que le
personnage du joueur va attaquer lors de sa phase d'action. Si tous les monstres
appartenant à cette liste sont morts, le combat est gagné par le joueur.
- Une liste de personnages alliés : cette liste contient tous les membres de l'équipe
du joueur. Elle permettra de gérer les interactions entre les diérents membres de
l'équipe lors du combat (utilisation d'un objet sur un allié, de sorts de soins ...). Si
tous les personnages appartenant à cette liste sont morts, le combat est perdu par
le joueur.
- Une liste regroupant monstres et alliés : elle permet de gérer correctement les
tours lors du combat entre les monstres et le joueur. Si un monstre est tué, il est
supprimé de la liste. Si un allié est mort, son tour est passé (l'élément n'est pas
parcouru) jusqu'à ce que le personnage soit ressuscité par ses alliés.
Pour l'aspect graphique, ce menu est divisé en deux parties : La première, en
partie supérieure de l'écran, permet d'acher les monstres présents durant le com-
bat et la deuxième, en partie inférieure, ache les statistiques de l'équipe (points de
vie ...) ainsi que les diérentes actions disponibles pour le personnage actuellement
en cours d'action.
12 Jamps
14. EPITA 2016 1 LES ÉVOLUTIONS ET AMÉLIORATIONS
Gestion des diérentes couches du menu Notre menu combat est construit
à l'aide de trois couches :
- La première est la couche principale. Elle comporte quatre boutons situés en
bas à gauche de l'écran. Le premier bouton Attaquer est un bouton permettant
l'empilement d'un autre sous-menu. Comme son nom l'indique ce bouton permettra
d'attaquer le monstre ciblé avec l'arme qui équipe actuellement le personnage. Le
second Magie et le troisième Objet permettent de mettre au somment de la pile
un menu intermédiaire qui aboutira nalement au même sous menu que Attaquer.
Le dernier bouton est le bouton Fuir. Il permet de quitter le combat en dépilant
la couche principale ce qui remet le jeu au sommet de la pile.
- La deuxième couche est une couche intermédiaire. Elle permettra de sélection-
ner la magie ou l'objet que l'on veut utiliser. Elle sera donc composée de diérents
boutons qui empileront la dernière couche du menu.
- La troisième couche du menu permet de sélectionner la cible de l'action à eectuer.
Pour les magies oensives ou les attaques, les cibles seront les monstres ennemis. An
de permettre au joueur de sélectionner sa cible, des boutons marqueurs (représentés
dans le jeu par des X) sont placés au dessus de la représentation du monstre. Cha-
cun de ces boutons marqueurs représente en réalité un monstre contenu dans la liste
monstre et inige les dégâts liés à l'action du joueur vis à vis monstre sélectionné.
Lorsqu'un monstre est tué, le marqueur n'apparait plus et l'image du monstre dispa-
rait. Ce même système est appliqué pour l'utilisation d'objets et de magies curatives,
où les marqueurs sont situés à côté des alliés.
1.4.3 Ce qui sera fait lors de la prochaine soutenance
Pour la prochaine et dernière soutenance, les combats seront complets. Les ma-
gies oensives et curatives seront ajoutées et des animations y seront liées, de même
pour les objets. La n des combats entraînera l'obtention d'expérience en fonction
des monstres tués. Cette expérience permettra au personnage du joueur de monter
de niveau permettant l'augmentation des statistiques du personnage.
Ces combats seront aussi l'occasion d'obtenir de l'or an d'acheter diérents ob-
jets et aussi d'obtenir des armes et armures uniques ainsi que divers objets de quêtes.
Des monstres à dicultés variées seront ajoutés ainsi que des boss qui obligeront
le joueur à rééchir et à agir prudemment an de défaire ces ennemis très particuliers.
13 Jamps
15. EPITA 2016 1 LES ÉVOLUTIONS ET AMÉLIORATIONS
1.5 Les sauvegardes
1.5.1 Dénition
Dénissons d'abord ce quel est notre objectif avec ce système de sauvegarde :
nous voulons un seul chier de sauvegarde avec toutes les informations importantes
à l'intérieur. Un seul chier que l'utilisateur réutilisera et écrasera par la suite en
sauvegardant. C'est certes extrêmement limité, mais c'est une ébauche pour ensuite
construire un système bien plus complexe. Donc, dans les grandes lignes, si un joueur
Lambda lance le jeu une première fois, et qu'il veut enregistrer son chier, il peut le
faire. Il n'a juste qu'à appuyer sur le bouton sauvegarder et c'est ni. Puis plus
tard il revient et veut réutiliser sa dernière sauvegarde, il appuie sur charger et
c'est aussi simple que cela. Par contre il ne pourra pas avoir plusieurs sauvegardes
en parallèle, s'il sauvegarde à nouveau, il perdra la sauvegarde initiale au second
lancement. Avec cette idée en poche, nous pouvons désormais dénir les autres as-
pects.
1.5.2 Contenu
Le format de sauvegarde est un point important. Dans un jeu, nous ne voulons
pas que le joueur puisse rentrer et modier toutes les informations an de pouvoir
tricher aisément. Dans ce cas, le jeu perdrait toute sa crédibilité (bien que cet aspect
soit très peu abordé dans les diérents jeux vidéo). Dans un programme de traite-
ment de texte, il faut savoir si nous voulons que le format soit lisible par d'autres
logiciels ou alors tout garder pour nous et obtenir de nombreuses informations sur
le dos du consommateur avec un format unique que personne d'autre n'utilise. Tout
dépend de l'application derrière mais pour simplier la démarche, nous sommes pas-
sés par le format XML.
Reste ensuite à dénir ce que nous souhaitons sauvegarder. En l'occurrence dans
notre jeu vidéo, tout devra être sauvegardé au moment X car une fois que nous
rechargeons le chier, il est préférable de retrouver tous les éléments du décor et non
avoir qu'une seule partie qui a été sauvegardée et une autre qui a été réinitialisée.
1.5.3 Réalisation
Cette année nous avons pu avoir un petit aperçu sur le fonctionnement de la
sérialisation et de la désérialisation, grâce à un court TP très instructif. J'ai pu
réutiliser des notions pour réaliser une partie de la sauvegarde au sein de notre jeu.
Cependant, il a fallu réaliser de nombreuses améliorations car la sérialisation du
TP ne correspondait pas parfaitement à ce que nous recherchions pour notre projet.
Nous avons ajouté diérents éléments, notamment celui concernant le graphisme. La
sérialisation de base ne permet pas d'enregistrer tout type de format. Les images, les
modèles, tout ce qui est en rapport avec le graphisme ne se stockait pas forcément
de la même façon.
14 Jamps
16. EPITA 2016 1 LES ÉVOLUTIONS ET AMÉLIORATIONS
1.6 La partie réseau
1.6.1 Principe de la partie réseau
Dans un jeu de type RPG non axé multi-joueurs, il n'est pas évident de faire in-
teragir plusieurs personnages sur la même carte, à moins d'avoir prévu spécialement
un mode pour le multi-joueurs, ce qui n'est pas notre cas. Nous avons donc décidé
que la partie réseau sera axée sur la communauté du jeu. Pour cette soutenance nous
avons décidé que les monstres tués par le joueur seront entrés dans un tableau qui
sera visible sur notre site web.
1.6.2 Fonctionnement du multi-joueurs
Lors du téléchargement du jeu sur notre page web, il est demandé au joueur
d'entrer son nom de personnage. Celui ci sera utilisé lors de l'aventure et sera né-
cessaire pour envoyer au serveur une requête de mise à jour du tableau indiquant
le nom du joueur et les monstres qu'il a tués. Le serveur en PHP se met donc à
jour automatiquement et ache de façon claire les informations utiles au joueur. Le
joueur peut aussi jouer en local ce qui n'impacte pas ses performances.
1.6.3 Évolutions possibles
Il y a de nombreuses possibilités d'évolution à partir de cette base, nous en pré-
senterons trois.
La première consiste à faire évoluer le système de compteur en un système de sau-
vegarde en ligne pour pouvoir jouer sa partie quel que soit l'ordinateur utilisé.
La deuxième est la modication du jeu et de ses diérents niveaux an qu'il accepte
un mode multi-joueurs à la fois amusant et captivant. Ce multi-joueurs n'est pas
implantable sur un seul écran à cause de la proximité de la caméra. En eet, faire
un dé-zoom réduirait considérablement la partie du jeu liée à la découverte du
monde.
Enn la troisième des options liée à l'évolution du multi-joueurs est de plus simple-
ment intégrer un système de chat type IRC dans le menu principal du jeu ou dans
un endroit spécique comme une taverne ou une auberge.
15 Jamps
17. EPITA 2016 2 CONCLUSIONS
2 Conclusions
2.0.4 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'acher 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 conants quant à l'avenir de notre projet et la motivation
grandit d'autant que ce dernier progresse.
16 Jamps
18. EPITA 2016 2 CONCLUSIONS
Toute l'équipe espère que cette présentation vous aura plu
17 Jamps