projet xion | rapport de soutenance 3destruxion.kawie.fr/datas/soutenance3/soutenance3... ·...

28
Projet Xion — Rapport de soutenance 3 Mickael Mogmi Bidon (bidon m) Pierre-Marie PMdomine de Rodat (de-rod p) Adrien Cookieslover Conrath (conrat a) Julien Sn00ze92 Lehuen (lehuen j) 1

Upload: others

Post on 13-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Projet Xion — Rapport de soutenance 3

Mickael Mogmi Bidon (bidon m)Pierre-Marie PMdomine de Rodat (de-rod p)

Adrien Cookieslover Conrath (conrat a)Julien Sn00ze92 Lehuen (lehuen j)

1

A-Xion Projet Xion

Table des matieres

1 Introduction 31.1 DestruXion : un jeu, une equipe . . . . . . . . . . . . . . . . . . . . . . . 31.2 Resume de la deuxieme soutenance . . . . . . . . . . . . . . . . . . . . . 31.3 Le planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Bilan 52.1 Le moteur physique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.1.1 Gestion des armes . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.2 Les particules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.2 Le moteur graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2.1 L’eau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2.2 Les fontaines de particules . . . . . . . . . . . . . . . . . . . . . . 92.2.3 Indicateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2.4 Les resolutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.3 Le gameplay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.3.1 Les nouvelles armes . . . . . . . . . . . . . . . . . . . . . . . . . 142.3.2 Les munitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.3.3 Les caisses bonus . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.3.4 Les statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.4 Le reseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.4.1 Sacree histoire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.4.2 Deux modules flambant neufs ! . . . . . . . . . . . . . . . . . . . 202.4.3 Premiere integration du reseau dans le jeu . . . . . . . . . . . . . 202.4.4 Travail restant . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.5 L’intelligence artificielle . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.5.1 La liste des ennemis . . . . . . . . . . . . . . . . . . . . . . . . . 212.5.2 Une structure qui rend l’IA realiste . . . . . . . . . . . . . . . . . 212.5.3 L’evaluation des risques de blesser un coequipier . . . . . . . . . 222.5.4 La gestion des tirs courbes . . . . . . . . . . . . . . . . . . . . . . 222.5.5 A venir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.6 Le moteur de sons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.6.1 Les voix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.7 Marketing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.7.1 Publicite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.7.2 Le site Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.7.3 Manuel de jeu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3 Conclusion 283.1 Pour la presentation finale . . . . . . . . . . . . . . . . . . . . . . . . . . 283.2 Le mot de la fin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2 Rapport de soutenance 3

A-Xion Projet Xion

1 Introduction

1.1 DestruXion : un jeu, une equipe

Vous commencez sans doute a etre au courant, mais il est tout de meme necessairede faire un bref rappel sur notre projet. DestruXion est donc notre projet de premiereannee a l’EPITA. Nous avons choisi de realiser un jeu qui se presente sous la forme d’unWorms-like, c’est-a-dire un jeu en deux dimensions, vue de cote, presentant plusieursequipes de Xions faisant la guerre sur une multitude de niveau et ce, au moyen d’armesdiverses et variees.

Figure 1 – DestruXion

Au sein de notre equipe, aucun conflit n’a eclate, le chef de projet remplissantparfaitement son role assume de punching ball. Tout le monde fait ce qu’il est censefaire et aucun enervement n’est necessaire. Le travail se fait donc dans des conditionsoptimales.

1.2 Resume de la deuxieme soutenance

Lors de notre dernier rendu de travail, nous avons presente une version amelioree denotre jeu. Nous etions alors en mesure d’afficher plusieurs equipes/unites sur la carte,le tout etant parametrable depuis un ecran de configuration. Nous pouvions egalement

3 Rapport de soutenance 3

A-Xion Projet Xion

infliger des dommages a nos chers petits Xions. Ils etaient d’ailleurs capables de reflechira leurs actions grace a l’apparition d’une IA et de communiquer entre eux par messagesvia un reseau balbutiant.

Mais nous ne nous sommes pas arretes en si bon chemin, nous allons donc vousexposer toutes les nouveautes que nous proposons pour cette version.

1.3 Le planning

Encore une fois, le planning que nous nous etions fixe nous convient plutot bien.Voici ce que nous avions prevu d’obtenir pour cette troisieme soutenance :

Mogmi PMdomine Cookieslover Sn00ze92Site web 100 % 100 %Moteur physique 90 % 90 %Moteur reseau 70 % 70 %Moteur graphique 70 % 90 %Sons 100 %IA 70 % 70 %

Nous pensons avoir atteint les buts que nous nous etions fixes pour cette soute-nance dans tous les domaines. Nous allons donc maintenant detailler l’ensemble deschangements de ce troisieme cru de DestruXion.

4 Rapport de soutenance 3

A-Xion Projet Xion

2 Bilan

2.1 Le moteur physique

2.1.1 Gestion des armes

Les armes representent un aspect essentiel de notre jeu. Cependant, lors de notreprecedente presentation, nous ne disposions que d’un unique type d’arme, plus precisementdes armes auxquelles on donne un angle et une puissance initiale variable. Nous avionsainsi un arc, un bazooka, une grenade etc. Mais cela est en fait bien trop restreint. Parexemple, pour realiser un pistolet, la puissance initiale est fixe et, pour un raid aerienil faut simplement lancer l’assaut. Nous avons donc cree quatre categories d’armes :

Les armes de proximite Comme leur nom l’indique, ces armes sont utiles unique-ment au corps a corps. On ne peut pas gerer leur puissance et la direction n’influeque peu sur son efficacite, mais l’utilisation de ces armes sont sures pour le lan-ceur. Exemple : la batte de baseball

Les armes angulaires Ces armes ne permettent pas de gerer la puissance, en re-vanche la direction de l’arme est ici beaucoup plus importante que pour unearme de proximite.Exemple : le pistolet

Les armes de force Ces armes sont les plus difficiles a manier, mais egalement cellesqui permettent le plus large panel d’actions. En effet, on peut gerer a la fois ladirection et la puissance du tir de l’arme. On peut alors en principe tirer ou l’onveut.Exemple : le bazooka

Les armes rectangulaires Comme leur nom ne l’indique pas, ces armes sont en faitles plus simples a utiliser, puisqu’il suffit de selectionner un endroit sur la cartevia la souris ou le clavier pour la declencher.Exemple : le teleporteur

Nous pouvons des lors realiser � simplement �une multitude d’armes. Les nouvellesarmes disponibles sont presentees plus loin dans ce rapport.

2.1.2 Les particules

Afin de rendre le jeu plus vivant, il etait necessaire d’y ajouter un moteur departicules. Le but etait de pouvoir ajouter facilement et a n’importe quel moment unefontaine de particules afin de creer de la fumee, des etincelles, des gouttes d’eau. . . laseule limite est notre imagination !

5 Rapport de soutenance 3

A-Xion Projet Xion

Diverses raisons nous ont pousse a developper nous-meme ce moteur plutot qued’utiliser un moteur deja existant :

– Tout d’abord, nous voulions un systeme simple et leger, qui s’integre facilementa la structure de notre jeu ;

– Ensuite, son developpement est tres interessant car il touche plusieurs domainesdifferents : la representation en memoire des particules, leur comportement phy-sique et leur affichage graphique.

Une fontaine de particule est constituee de diverses proprietes listees ci-dessous :

– On definit la position et le rayon du centre du cercle a partir duquel les particulessont emises.Soit C(x, y) le centre d’emission et R le rayon.A chaque nouvelle particule creee, on calcule un angle aleatoire a compris entre0 et 360 degres et un rayon r compris entre 0 et R. Alors la position initiale p decette particule est :

px = Cx + r ∗ cos(a)py = Cy + r ∗ sin(a)

Figure 2 – On peut faire varier le rayon du centre d’emission

– On peut egalement definir une vitesse d’ejection des particules ainsi qu’uneacceleration. En faisant varier ces parametres, on peut choisir dans quel sensles particules sont emises et dans quel sens elles ont tendance a se diriger.Pour changer la vitesse et la position au cours du temps, on utilise la methoded’Euler :

~v(t + dt) = ~v(t) + ~a(t + dt) · dt et ~OM(t + dt) = ~OM(t) + ~v(t + dt) · dt

avec ~OM la position de la particule et ~v sa vitesse au cours du temps.– On peut faire varier l’angle de la vitesse d’emission. Il est ainsi possible de choisir

l’epaisseur du faisceau de particules cree.Soit ~V la vitesse initiale et A l’angle avec lequel elle varie. On calcule alors unangle aleatoire a compris entre −A et A et on effectue une rotation de ~V avec

6 Rapport de soutenance 3

A-Xion Projet Xion

Figure 3 – On peut faire varier la vitesse initiale et l’acceleration

cet angle, donnee par la formule :

vx := Vx ∗ cos(a) − Vy ∗ sin(a)

vy := Vx ∗ sin(a) + Vy ∗ cos(a)

La nouvelle particule creee a pour vitesse initiale ~v.

Figure 4 – On peut choisir la variation angulaire de la vitesse d’emission

– Il est possible de faire varier la quantite de particules emises par secondes ;– On peut egalement determiner la duree de vie ainsi qu’un degre de variation

aleatoire de celle-ci afin d’eviter que les particules disparaissent brutalement aumeme endroit ;

– La taille des particules est egalement modifiable ;– On peut enfin attribuer une vitesse au centre d’emission si l’on souhaite que notre

fontaine ne soit pas immobile.

Pour stocker en memoire les differentes particules d’une fontaine, nous avons optepour une liste chaınee. Cette representation correspond parfaitement a nos besoins, carelle nous permet d’ajouter et supprimer des particules sans difficulte. De plus, notremoteur de particules peut gerer plusieurs fontaines en meme temps. En effet, chaquefontaine est stockee dans une liste chaınee pour les memes raisons.

Comme nous l’avons dit, l’interet de notre moteur reside dans sa simplicite d’utili-sation. Lorsqu’un certain module du jeu a besoin de creer une fontaine, il appelle une

7 Rapport de soutenance 3

A-Xion Projet Xion

methode qui lui renvoie un pointeur vers celle-ci. Il peut ainsi changer les parametresqu’il souhaite et decider de la detruire au moment voulu. Le moteur de gestion desprojectiles peut donc creer une fontaine de fumee lors de l’ejection d’un projectile,actualiser la position de son centre d’emission pendant le vol de celui-ci et la detruirelors de son impact avec la carte !

2.2 Le moteur graphique

2.2.1 L’eau

Lors de notre precedent rendu, nous avions fait en sorte que les projectiles et lesXions puissent sortir de la carte par le haut et par les cotes, ce afin d’etendre d’unepart le domaine de jeu et egalement de rendre le jeu un peu plus � realiste �(les flechesqui se plantent dans le ciel ca fait ne pas tres serieux). Il restait alors le cas du bas del’ecran. Nous nous sommes inspires du jeu original Worms, dont l’idee etait a la foissimple et esthetique : remplir le bas de l’ecran d’eau. Ainsi lorsqu’un element tombe,il finit a l’eau).

Pour la rendre realiste, nous avons separe l’eau en deux couches. La premiere couchese situe devant la carte, au premier plan et la seconde se trouve en arriere plan.

Figure 5 – L’eau

Pour donner l’impression que cette eau est en mouvement, la couche en arriereplan est legerement remontee par rapport a la premiere et chacune se deplace dans unedirection opposee.

Figure 6 – L’eau semble etre en mouvement

Il est bien sur possible de changer le niveau de l’eau au cours de la partie. Nous

8 Rapport de soutenance 3

A-Xion Projet Xion

envisageons de creer une attaque speciale faisant monter son niveau et noyant tous lesXions qui ont le malheur d’etre recouverts !

Nous utilisons deux images quasiment identiques pour l’affichage. Leur forme per-met de donner l’illusion d’une bande continue une fois collees les unes a cote des autres.

Figure 7 – Image utilisee pour l’eau

2.2.2 Les fontaines de particules

Les fontaines de particules ont permis d’ameliorer la qualite graphique de Des-truXion. Un systeme de gestion des animations pour les particules a ete cree. Ainsi,on peut remplacer le simple carre rouge par une succession d’images.

Figure 8 – L’animation des particules de fumee

Les differentes frames de cette animation sont rassemblees dans une image, commec’est le cas pour les explosions ou l’animation des jambes des Xions. On peut definirle temps entre plusieurs frames ainsi que le nombre de repetitions de l’animation. Lapremiere application de ces fontaines de particules fut la fumee derriere les roquettesdu bazooka.

2.2.3 Indicateurs

Depuis la derniere soutenance, nous avons procede a quelques ameliorations gra-phiques. Celles-ci ont pour but d’ameliorer l’esthetique et l’ergonomie de DestruXion !Toutes ces ameliorations rendent notre jeu plus agreable a jouer.

- Pointeur de Xion actif

La gestion des equipes et des Xions par notre moteur physique etant totalementfonctionnelle, nous nous devions de rendre cette gestion la plus claire possible pourl’utilisateur. Ainsi, en plus des drapeaux qui permettent de bien differencier les Xions

9 Rapport de soutenance 3

A-Xion Projet Xion

Figure 9 – La fumee derriere les roquettes du bazooka

d’une meme equipe, nous avons mis en place un pointeur au-dessus du Xion actif, quipermet au joueur de savoir laquelle de ses unites est selectionnee.

Figure 10 – Pointeur de Xion actif

Afin de rendre ce marqueur plus visible, nous l’avons anime de haut en bas au-dessus du Xion. Ceci est plus esthetique et plus visible qu’une fleche statique.

- Nouveau curseur de souris

Nous avons egalement decide de personnaliser le curseur de la souris. Il existequelques fonctions de la bibliotheque SDL qui permettent cette personnalisation. Mal-heureusement, ces fonctions on beau permettre de changer le curseur, leurs possibilitessont tres limitees. En effet, nous ne pouvions faire un curseur qu’en deux couleurs etavec des formes simples. . .

Nous avons donc opte pour une methode bien plus radicale. Au lancement du jeu,on masque le curseur de base. De plus, on cree une nouvelle surface SDL qui contient lecurseur personnalise qui peut etre n’importe quelle image – avec les couleurs, la taille,la forme. . . que l’on souhaite ! Pendant le jeu, il ne reste qu’a recuperer la position dela souris grace a une autre fonction de la bibliotheque SDL, afin d’actualiser la positionde la surface correspondant au curseur.

10 Rapport de soutenance 3

A-Xion Projet Xion

Figure 11 – Nouveau curseur

Cette methode est relativement simple et elle apporte une nouvelle touche de per-sonnalisation au jeu sans pour autant en alterer les performances !

Ces ameliorations ont commence a rendre DestruXion plus agreable, mais la teamA-Xion ne pouvait pas s’en tenir a ca ! Nous avons egalement decide d’apporter quelquesnouveautes au moteur graphique, toujours dans l’optique d’une meilleure esthetique etergonomie du jeu.

- Indicateurs de sorties au-dessus du champs de vision

Pour la deuxieme soutenance, une des nouveautes de notre moteur physique etaitde gerer les sorties d’ecran. Ainsi, un projectile pouvait etre lance au-dessus du champde vision, poursuivre sa trajectoire et retomber dans le champ de vision plus tard.Malheureusement, notre moteur graphique n’etait pas suffisamment adapte a cettenouveaute. C’est desormais choses faite ! Lorsque l’ordonnee d’un projectile corres-pond a une sortie au-dessus de l’ecran, nous affichons une fleche en haut de l’affichageindiquant que le projectile est au-dessus du champ de vision, a la verticale de cettefleche. Ainsi, il est plus simple de suivre la trajectoire du projectile hors du champ devision.

Figure 12 – Indicateur de sortie de carte

- Altitude au-dessus du champ de vision

Cet indicateur s’est revele tres pratique et tout a fait efficace, mais nous avonsdecide de faire encore mieux ! Quitte a calculer une altitude afin de savoir si le projectileest sorti du champ, nous avons decide d’afficher cette altitude sous la fleche indiquantsa position.

11 Rapport de soutenance 3

A-Xion Projet Xion

Figure 13 – Indicateur d’altitude

Desormais, nous avons donc un indicateur tout a fait fonctionnel qui permet desuivre parfaitement les trajectoires des projectiles qui sortent de l’ecran.

- Indicateur de degats

Les barres de vie sont utiles car elles renseignent d’un simple coup d’oeil, de par sacouleur et sa longueur, sur la sante de tous les Xions presents. Cependant, lorsque l’onsouhaite comparer les degats infliges par une arme par rapport a une autre, les barresne sont pas pertinentes. C’est pourquoi nous avons ajoute un simple indicateur dedegats : lorsqu’une unite est blessee d’une quelconque maniere, un nombre apparait au-dessus d’elle pour indiquer le nombre de dommages qui lui ont ete infliges. Nous avonsegalement ajoute le fait qu’un signe � − �est ajoute si le Xion recoit des dommageset au contraire un signe � + �si le Xion se soigne.

Figure 14 – Indicateur de degats

- Indicateur d’EmoXion

Pour agrementer les parties, nous avons ajoute au jeu bon nombre d’effets visuels etauditifs (particules, voix, etc). Mais pour rendre nos cheres bebetes plus interessantes,nous avons egalement ajoute un affichage de l’humeur du Xion en cours. Pour afficherces emoticones, nous disposons d’une image representant une bulle vide. Au centre decelle-ci, nous y collons l’image representant l’emotion. Pour l’instant, nous n’indiquonsque lorsque l’IA est entree en phase de refleXion. Mais nous reflechissons a plusieursautres utilisations, comme par exemple envoyer des emoticones entre les joueurs lorsde parties en reseau.

12 Rapport de soutenance 3

A-Xion Projet Xion

Figure 15 – Indicateur d’EmoXion

2.2.4 Les resolutions

Depuis le debut du projet, l’interface graphique n’etait disponible, que ce soit enmode plein ecran ou en mode fenetre, qu’a une dimension possible (800 par 600 pixels).C’etait jouable, mais il etait facile d’imaginer les joueurs qui disposent d’un grand ecranfrustres de ne pas pouvoir en profiter.

Nous avons donc adapte la gestion de l’affichage pour que les joueurs puissent choisirla resolution du jeu. Celle-ci etant determinee par deux constantes, nous n’avons paseu beaucoup de mal a remplacer ces deux constantes par des preferences reglablesgrace a un nouveau widget dans le panneau des preferences du jeu. Concretement, onpeut maintenant choisir une resolution parmi celles proposees dans les options : enmode plein ecran, la resolution demandee est appliquee et en mode fenetre, la fenetreprend les dimensions correspondantes. De plus nous proposons une grande quantite deresolutions (16 en tout, allant de 800 par 600 jusqu’a 2048 par 1536).

L’interface de parametrage du jeu n’est pas vraiment affectee : une bordure noirecomble le vide laisse par l’agrandissement, ceci pour des raisons de simplicite et d’uti-lite. En effet, le reel changement profite a l’interface de jeu : il est possible, en aug-mentant la resolution de visualiser une plus grande portion de la carte sans devoir sedeplacer dessus ; la vue globale est meilleure et il est bien plus pratique de viser ainsiquand les ennemis sont eloignes !

Les deux seuls inconvenients sont tout d’abord le ralentissement du a la gestiond’une plus grande surface a remplir et afficher, mais cela ne depend pas vraiment dujeu : � on a rien sans rien ! �. La seconde gene intervient au niveau des cartes pluspetites que la resolution utilisees : des zones noires apparaissent alors a l’ecran autourde la carte ; mais ca ne gene pas le jeu en pratique, de plus il est possible a tout momentdu jeu de changer la resolution.

Au final, la gestion des resolutions est un investissement rentable : le cout en termede developpement (temps et efforts) n’a pas ete exorbitant alors que le resultat esttres pratique, bien fait et peu genant pour le reste de l’application. Nous avons prevud’ameliorer encore cette gestion des resolutions, en ameliorant la gestion de l’affichaged’une carte plus petite que la resolution de l’ecran. Nous pensons egalement remplacerle cadre noir autour des menus par une image de la taille de la plus grande resolution

13 Rapport de soutenance 3

A-Xion Projet Xion

Figure 16 – Jeu en basse resolution

Figure 17 – Jeu en haute resolution

que nous pourrions recentrer automatiquement en fonction de la resolution.

2.3 Le gameplay

2.3.1 Les nouvelles armes

Figure 18 – Le gun

Le gun Le gun est la premiere arme de type angulaire de DestruXion. Le joueurne peut donc que choisir l’orientation de l’arme. C’est une arme a la puissancemoderee, mais etant donne sa vitesse, elle a une trajectoire quasiment rectiligne,

14 Rapport de soutenance 3

A-Xion Projet Xion

ce qui facilite enormement la visee. Elle n’est, de plus, pas influencee par le vent.

Figure 19 – La batte

La batte Des fourmis qui se fracassent les antennes a coup de battes de baseball,vous en reviez ? DestruXion l’a fait. Premiere nee des armes de proximite, labatte possede une puissance nettement superieure aux autres armes. Et en plusde provoquer d’enormes degats, elle projettera l’ennemi au loin. Par contre, vousdevrez evidemment aller au corps a corps pour pouvoir l’utiliser.

Figure 20 – Le BombarXion

Le BombarXion Le BombarXion est le premier representant de la toute nouvellecategorie des armes dites rectangulaires. Il permet d’indiquer un endroit precissur la carte (grace a la souris ou au clavier) et un avion viendra purement et sim-plement y loger trois missiles. Simple, precise et efficace, cette arme est neanmoinsinutile sur un niveau ou les combats se deroulent sous la surface.

Figure 21 – Le BombarXion en aXion

Le Krisboul de granit Le Krisboul de granit est le tout dernier cri en ce qui concernela demolition massive de cartes et l’aplatissement sans pitie de Xions. L’essayer,c’est l’adopter. Par contre, il vous faudra de la chance pour l’obtenir, car c’estune arme rare.

15 Rapport de soutenance 3

A-Xion Projet Xion

Figure 22 – Le Krisboul de granit

Figure 23 – Le Krisboul de granit en aXion

A noter que toutes les armes ont vu leur icone dans le menu de selection refaite. Ace sujet justement, le nombre d’arme augmentant de plus en plus, une liste de selectionva vite devenir un moyen de selection bien trop long et peu efficace. Nous avons doncajoute deux moyens en plus du menu pour selectionner une arme : l’utilisation de lamolette de la souris et la combinaison de touche Alt + fleches haut/bas. Nous pensonsegalement proposer un menu plus esthetique qui se presentera sous la forme d’untableau d’icones directement cliquables.

2.3.2 Les munitions

Etant donne l’augmentation continue du nombre d’armes et notamment l’appari-tion des armes puissantes, nous avons ete rapidement confronte a un souci majeur :l’utilisation unique et massive des armes les plus destructrices. Il nous fallait doncimplementer notre systeme de munitions pour pallier ce probleme. C’est chose faitepour cette soutenance.

Chaque equipe beneficie desormais d’un nombre de munition qui lui est propre,c’est-a-dire que si un Xion utilise la derniere munition du gun, plus aucun des Xion deson equipe ne pourra utiliser le gun.

Grace a cela, nous avons pu separer les armes en trois categories differentes :

16 Rapport de soutenance 3

A-Xion Projet Xion

Les armes a munitions illimitees Nous avons du choisir certaines armes qui se-raient utilisables un nombre infini de fois. Sans cela, on pourrait assister a desparties ou plus aucune equipe n’a de munitions et ce serait alors � Le premierqui se suicide qui a perdu �. De plus, d’un point de vue logique, une batte resteutilisable apres utilisation, a moins de tomber sur un Xion a la tete dure...

Les armes a munitions limitees Cette deuxieme categorie d’armes regroupe toutesles armes dont un certain nombre de munition est donne en debut de partie achacune des equipes. A chaque utilisation, ce nombre diminue. Arrive a zero,l’arme devient inutilisable.

Les armes a usage unique Cette derniere categorie d’armes concerne les armes dontla puissance est superieure a toutes les autres armes du jeu. Elles ne sont pasdisponibles directement en debut de partie, pour eviter une guerre nucleaire desle lancement.

Figure 24 – Les munitions

Mais evidemment, si on se contente de diminuer les stocks de munitions, les partiesrisquent de perdre rapidement de leur interet. Nous avons donc pense a un moyen deles augmenter : les caisses bonus.

2.3.3 Les caisses bonus

Comme tout jeu qui se respecte, il nous fallait absolument proposer quelque chosequi donnerait a chaque partie un deroulement unique et qui pourrait provoquer desrenversements de situation : des bonus. Dans ce jeu, la reponse etait toute trouvee : lesbonus se presentent sous la forme de caisses larguees au-dessus du champ de bataille.

Ces caisses sont indestructibles et sont soumises a leur poids (elles ne peuvent pasrester suspendues en l’air). Tout Xion passant sur une caisse la ramasse automatique-ment, ceci ne mettant pas fin a son tour. Seul le Xion qui est en train de jouer peutramasser des caisses (exemple : si une caisse tombe sur un Xion alors que ce n’est passon tour, celui-ci ne la prendra pas tant que ca ne sera pas a son tour de jouer).

17 Rapport de soutenance 3

A-Xion Projet Xion

Figure 25 – Les caisses bonus

On distingue deux types de caisses :

Figure 26 – Caisse de soin

Les caisses de soin Lorsqu’une caisse apparait sur la carte au debut d’un tour, il ya environ une chance sur deux pour qu’elle soit une caisse de soin. Comme leurnom l’indique, elles permettent au Xion qui s’en empare de faire remonter sajauge de vie, tout en etant limite par le nombre de points de vie maximal.

Figure 27 – Caisses surprises

Les caisses surprises Si la caisse qui apparait n’est pas une caisse de soin, alors c’estune caisse surprise. Dans la plupart des cas, elles contiennent une munition pourune arme bien precise. Grace a cela, les Xions peuvent se ravitailler au cours dela partie. Le contenu de la caisse est defini au moment ou elle apparait sur lacarte selon un principe simple : plus une arme est dite generique (peu puissanteet beaucoup de munitions au depart) et plus elle a de chances d’apparaitre. Decette facon les armes les plus destructrices seront plus rares.Et il existe egalement une probabilite pour que la caisse surprise soit en faitpiegee et qu’elle explose a la figure du pauvre Xion malchanceux. Cela rajouteune touche de hasard et de fun aux parties.

18 Rapport de soutenance 3

A-Xion Projet Xion

Grace a ce systeme, les parties deviennent bien plus strategiques, puisqu’il fautdesormais choisir entre attaquer, augmenter son stock d’armes ou se soigner. De plusil donne aux parties un petit cote aleatoire, puisque le contenu d’une caisse peut fairebasculer la victoire dans l’autre camp. Cela offre egalement un nouveau defi dans notreimplementation de l’intelligence artificielle.

2.3.4 Les statistiques

Tout au long du jeu, des statistiques sont etablies sur les differents evenementsconcernant les effets des armes sur les Xions. La difficulte concernant les calculs sesitue dans la detection de la cause d’une mort de Xion : un Xion qui meurt d’unechute apres avoir ete projete en l’air par l’explosion d’une roquette de bazooka est-ilvraiment compte comme une victime ? Et si oui, comment le detecter ?

Ces statistiques sont presentees aux joueurs en fin de partie. Bien que le calcul lui-meme des statistiques soit au point depuis quelques temps, nous n’avons decide de lesafficher que recemment. C’est ainsi que les joueurs peuvent les consulter sous la formede diagrammes a barre. A chaque equipe sont associees trois barres de progressionindiquant les pourcentages, dont les valeurs numeriques sont affichees lateralement :

– des Xions morts (c’est-a-dire tues par une autre equipe) par rapport au nombrede Xions par equipe ;

– des Xions tues (c’est-a-dire que l’equipe a tue) par rapport au nombre total deXions ;

– des Xions suicides (c’est-a-dire des Xions de l’equipe tues directement par eux-memes ou par un autre membre de l’equipe) a cause par rapport au nombre deXions par equipe.

L’equipe gagnante, si elle existe, est signalee par une medaille ornant son drapeau !

2.4 Le reseau

2.4.1 Sacree histoire. . .

Certains s’en souviennent, le developpement du reseau ne nous avait pas reussi etpour preuve : notre serveur a plante mysterieusement au moment ou nous devions lepresenter lors de la seconde soutenance. En voulant comprendre cette erreur, nous enavons decouvert d’autres encore plus etranges et nous avons pris la sage decision derecommencer completement ce code que nous ne comprenions plus. . .

19 Rapport de soutenance 3

A-Xion Projet Xion

Figure 28 – Les statistiques

2.4.2 Deux modules flambant neufs !

Nous avons donc tout repris depuis le debut, en faisant tres attention et ceci nousa permis d’obtenir deux modules – client et serveur – permettant la transmissionde messages entre plusieurs clients connectes a un meme serveur. Tout ceci est enfinfonctionnel : les threads tournent tres bien et l’envoi et la reception se font parfaitement.

Cependant, il s’agit tout-de-meme du reseau et il nous reste donc quelques problemesa la deconneXion et a la fermeture du serveur. . .

Malgre tout, nous avons enfin obtenu deux modules que nous pouvons commencera integrer a DestruXion.

2.4.3 Premiere integration du reseau dans le jeu

Tous ces deboires nous ont coute un certain temps, mais pour tenir notre planningnous avons decide de reflechir serieusement a l’integration de notre tout nouveau Xio-Network au jeu. Nous avons donc decide de tester une premiere forme d’integrationdans une version � a part �du projet. Nous avons ainsi une version de DestruXionqui lance un serveur au lancement de la partie. Ce serveur se charge d’attendre laconnexion de clients.

Lorsqu’un client arrive, le serveur gere parfaitement l’envoi et la reception. Gracea un protocole que nous avons etabli rapidement, le client peut envoyer des ordres auserveur. Plusieurs clients peuvent se connecter en meme temps pour envoyer des ordresau serveur et le tout est tres bien gere !

20 Rapport de soutenance 3

A-Xion Projet Xion

2.4.4 Travail restant

Avant toute chose, il nous reste a resoudre les quelques erreurs qui ne veulent paslaisser nos modules tranquilles. . .

De plus, notre premiere integration ressemble plus a un clavier sans fil qu’a unveritable jeu multijoueur. Nous allons donc devoir adapter au mieux le protocole a lastructure du jeu, afin que notre XioNetwork permette de vraies parties multijoueurs !

2.5 L’intelligence artificielle

Lors de la seconde soutenance, nous vous avions presente comme nous voyions lastructure globale de l’Intelligence Artificielle. L’Intelligence est en effet basee sur deuxmoteurs : un moteur de deplacement et un moteur de tir.

Pour cette troisieme soutenance, nous avons principalement travaille sur le moteurde tir. Nous sommes passes d’une IA qui tire en ligne droite a une IA plus intelligente,capable de choisir sa cible plus astucieusement et de tirer avec beaucoup de precision.

2.5.1 La liste des ennemis

Afin de determiner rapidement la cible de l’IA, nous avons implemente une listedynamique chaınee de Xions ennemis. Cette liste est triee en fonction de leur proximiteavec le joueur.

On initialise cette liste lorsque l’IA commence a jouer et on la remet a jour a chaquefois qu’un Xion s’est deplace d’une certaine distance.

L’interet est de pouvoir parcourir cette liste a tout moment de maniere a ce que lapremiere cible potentielle soit la plus proche possible. Les calculs en resultant sont doncplus fiables et cela permet au joueur controle par l’IA d’etre eloigne de ses ennemis.

2.5.2 Une structure qui rend l’IA realiste

Le but de l’IA n’est pas seulement de trouver une solution. Il faut egalement donnerun maximum de vie a cette equipe virtuelle afin d’ameliorer le game play. Ainsi, il fautpouvoir simuler la reflexion et animer le bras du Xion pour le faire viser. Tout celanous est permis par la structure generale de notre IA.

De meme que le moteur physique, l’IA est divisee en plusieurs etats :

21 Rapport de soutenance 3

A-Xion Projet Xion

L’etat StateWait Durant cet etat, l’IA simule la reflexion. Un chronometre indiquele temps restant avant de passer a l’etat suivant ;

L’etat StateMove Lors de cet etat, c’est le moteur de deplacement qui intervient.On lui a assigne une position a atteindre pour recuperer un objet par exemple ;

L’etat StateThink Durant cet etat, l’IA effectue tout les calculs necessaires afin detrouver une cible. Elle peut egalement chercher la presence d’un objet proche etordonner le passage a l’etat StateMove pour aller le recuperer ;

L’etat StateTarget Cet etat correspond au moment ou le Xion controle par l’IA vise,apres avoir trouve une cible. Elle permet de simuler un joueur humain : le brasdu Xion est progressivement leve avec l’angle de tir. Une fois l’action terminee :on passe a l’etat StateWait puis a StateShoot au boot de quelques secondes ;

L’etat StateShoot Lorsqu’on arrive a cet etat, une cible a ete trouvee et les pa-rametres de tir ont ete calcules. L’IA appelle alors la routine du moteur physiquequi se charge de tirer.

Une telle structure permet une bonne liaison entre les deux moteurs principaux. Lemoteur de tir peut a tout moment ordonner de passer a l’etat StateMove apres avoirassigne un point a atteindre au moteur de deplacements.

2.5.3 L’evaluation des risques de blesser un coequipier

L’Ia doit pouvoir eviter de blesser ses coequipiers dans le cas ou elle tire dans unedirection.

Ainsi, une fonction permettant de connaıtre le nombre de Xions amis dans un cerclede centre et de rayon donnes e ete codee

Cette fonction peut donc etre appelee pour savoir si un coequipier se trouve pres dela cible que l’on a selectionnee. Mais elle peut aussi servir a determiner si la trajectoirede tir calculee coupe un Xion amis.

Afin de rendre cette IA encore plus intelligente, nous lui avons introduit la notionde sacrifice. Ainsi, au debut de son tour, elle compte le nombre de coequipiers qui luirestent. S’il se trouve qu’elle n’a pas trouve de cible n’en menacant aucun, elle peutdecider d’attaquer tout de meme si la victime est la seule representante de son equipe.

2.5.4 La gestion des tirs courbes

La grande nouveaute de l’IA pour cette troisieme soutenance est le calcul des tra-jectoires courbees. En effet, cet algorithme est le plus important et le plus utilise. Laprecision de L’IA entiere en depend.

22 Rapport de soutenance 3

A-Xion Projet Xion

Il consiste a calculer l’angle et la force de tir permettant de toucher un ennemi enprenant en compte la gravite et le vent. Il permet ainsi a l’IA de viser un Xion quin’est pas directement atteignable en ligne droite.

Soient– ~pi la position initiale, c’est-a-dire la position du Xion controle par l’IA– ~pf la position finale, ou la position du Xion cible– ~a = (g, w) le vecteur acceleration– ~vi le vecteur vitesse initial avec lequel il faut tirer.On recherche ~vi.

On sait que ~v(t) =∫

~a avec ~v(t), la vitesse du projectile en fonction du temps.

Donc ~v(t) = ~a ∗ t + C1 avec C1 constant.

Or ~v(0) = ~vi donc C1 = ~vi donc ~v(t) = ~a ∗ t + ~vi

Mais on a aussi

~p(t) =∫ ~v(t) avec ~p(t), la position du projectile en fonction du temps.

Donc ~p(t) = ~a ∗ t2

2 + ~vi ∗ t + C2 avec C2 constant.

On sait que ~p(0) = ~pi donc finalement ~p(t) = ~a ∗ t2

2 + ~vi ∗ t + ~pi.

On a ainsi determine l’equation de la trajectoire du projectile.

Nous allons premierement calculer la plus petite valeur de vi.y de maniere a ce quele projectile, une fois tire, passe au niveau de la hauteur du Xion ennemi.

On a donc pf .y = g ∗ t2

2 + vi.y ∗ t + pi.y

On peut passer pf .y a droite, ce qui donne :

g ∗ t2

2 + vi.y ∗ t + pi.y − pf .y = 0

23 Rapport de soutenance 3

A-Xion Projet Xion

On calcule le delta de cette equation du second degre :

∆ = vi.y2 − 4 ∗ g

2 ∗ (pi.y − pf .y) = vi.y2 − 2 ∗ g ∗ (pi.y − pf .y)

Pour que cette equation ait une solution, il faut que ∆ >= 0.

Ainsi, on a :

– Si 2 ∗ g ∗ (pi.y − pf .y) <= 0Alors ∆ >= 0 pour n’importe quelle valeur de Vi.y. On prend alors Vi.y = 0

– si 2 ∗ g ∗ (pi.y − pf .y) > 0Alors vi.y >=

√2 ∗ g ∗ (pi.y − pf .y)

On prend donc vi.y =√

2 ∗ g ∗ (pi.y − pf .y)

On a donc calcule la valeur en y de la vitesse d’ejection minimale telle que leprojectile passe au niveau de la hauteur du Xion ennemi. Il faut maintenant calculerla valeur de cette vitesse sur l’axe des abscisses.

Calculons tf , la duree de vol du projectile avant qu’il ne s’ecrase sur le Xion cible.

On resoud donc l’equation g ∗ t2f2 + vi.y ∗ tf + pi.y − pf .y = 0

On trouve tf = −vi.y−√

∆2∗ g

2= −vi.y−

√∆

g

On a donc calcule le temps au bout duquel le projectile atteint le Xion ennemi. Ilnous suffit de remplacer t par tf dans l’equation de la trajectoire du projectile apresl’avoir projete sur l’axe des abscisses.

On a pf .x = w ∗ t2f2 + vi.x ∗ tf + pi.x

Donc vi.x ∗ tf = pf .x− pi.x− w ∗ t2f2

Donc vi.x = pf .x−pi.xtf

− w ∗ tf

2

On a donc determine les deux composantes du vecteur vitesse initial ~vi avec lequelil faut tirer. Il faut maintenant determiner si la trajectoire calculee traverse la carte.Pour cela, on fait varier t de 0 a tf , on calcule la position du point a chaque temps tgrace a l’equation de la trajectoire et on verifie si le point resultant est rempli sur lacarte.

Si la trajectoire coupe la carte, il suffit d’augmenter arbitrairement vi.y et de cal-culer la valeur de vi.x correspondante encore une fois. Cette operation est repetee tantqu’aucune trajectoire valide n’a ete trouvee. On arrete bien sur de chercher lorsquevi.y depasse la vitesse maximale autorisee par le moteur de gestion des projectiles.

24 Rapport de soutenance 3

A-Xion Projet Xion

2.5.5 A venir

Nous sommes assez satisfait des performances de notre IA. Elle permet dors etdeja aux joueurs de faire des parties en solo avec un challenge satisfaisant (parfoismeme une IA ultra-puissante). Cependant, nous pensons que l’IA ne simule pas assezle comportement d’un vrai joueur. C’est pourquoi nous pensons implementer egalementde nouvelles capacites telles que le deplacement pour trouver un point de tir favorable,etre capable de se deplacer pour atteindre une caisse proche, etre capable de determinerun ordre d’action prioritaire (se soigner, rechercher des armes, tirer, fuir etc).

2.6 Le moteur de sons

Des la premiere soutenance, nous avions un moteur de son fonctionnel. Bien en-tendu, chaque nouvelle arme ou objet s’est vu gratifie de sons personnalises. Nous neproposions alors que les bruitages (explosions, sauts etc). Meme si cela rendait le jeuun peu plus attractif et vivant, il manquait encore quelque chose.

2.6.1 Les voix

C’est ainsi que nous avons decide d’ajouter des voix a nos cheres creatures (et passeulement pour avoir quelqu’un a qui parler pendant les longues journees (nuits ?) decode). Nous avons donc choisi un certain nombres d’evenements qui convenaient al’ajout de voix :

– lors du changement de tour : ( � Yes Sir ! �)– lors de la mort d’un Xion : ( � Aaaaargh... �)– lorsqu’une unite souffre : ( � Aie ! Outch ! �)– lorsqu’un tir ne touche personne : ( � Fail ! �)– lorsqu’on tire sur un ennemi : ( � Haha pouned ! �)– lorsqu’on tire sur une unite alliee : ( � Are you crazy ? �)– lorsque la partie est gagnee : ( � Victory ! �)

Mais cela nous semblait tout de meme un peu basique et ajouter et supprimerdes voix est vite devenu laborieux. Nous avons donc pense a notre systeme de char-gement des cartes. Au lancement du jeu, on charge toutes les voix contenues dans ledossier noise/voices dans des listes en les reperant grace au nom du fichier (dead01.wavpour une voix au moment de la mort etc). Au moment de l’evenement, on joue alorsaleatoirement un des sons dans la liste correspondante. On obtient alors un systemesimple facilitant l’ajout et la suppression de voix.

Nous ajouterons peut-etre une fonctionnalite permettant de choisir un dossier devoix, pour permettre d’avoir des styles differents suivant la partie (comme un dos-

25 Rapport de soutenance 3

A-Xion Projet Xion

sier Voix Geeks contenant par exemple � Espece de Mac-user �et un autre dossierVietnamien ne contenant que des repliques philosophiques en coreen des collines sep-tentrionales =) .

Et bien evidemment, toutes les voix ont ete realisees par nos soins (de grandsmoments).

2.7 Marketing

2.7.1 Publicite

Toujours desireux de nous faire connaıtre et de faire parler de notre jeu au maxi-mum, nous avons experimente divers moyens publicitaires : placarder des affiches dansles locaux d’EPITA (meme si leur duree de vie fut tres courte), recuperation desadresses mail contenues dans les chaınes (stupides) que nous recevons frequemmenten prevision d’un super mail de masse qui partira sous peu. Mais le bouche a oreillereste le meilleur moyen pour repandre le nom de DestruXion.

2.7.2 Le site Web

Notre site web, pret depuis la premiere soutenance, n’a pas ete abandonne. En effet,le site DestruXion.net a continue de representer notre jeu sur la toile internet !

- Maintenu a jour regulierement

Le plus important pour notre site web etait qu’il reste a jour. Ainsi nous avonscontinue de poster des nouvelles de notre avancement sur la page d’accueil. Les do-cuments et executables de la 2e soutenance ont bien entendu ete ajoute a la partietelechargement, en meme temps que la publication de nos resultats a cette soutenance.Nous avons essaye de proposer des nouvelles versions de DestruXion au cours de saprogression, ainsi que quelques images.

26 Rapport de soutenance 3

A-Xion Projet Xion

- Reorganisation

Le contenu du site etant de plus en plus consequent, nous avons procede a quelquesreorganisations.

La partie � Telechargement �a ete reorganisee en trois parties :

– Derniere version : Cette partie permet de telecharger la derniere version publiquede DestruXion ;

– Anciennes versions : Celle-ci permet de telecharger toutes les versions precedentesde DestruXion, afin d’en voir l’evolution ;

– Soutenances : Cette derniere partie propose notre cahier des charges ainsi quetous les documents des deux soutenances precedentes.

Les autres parties ont ete moins modifiees.

2.7.3 Manuel de jeu

En vue de la soutenance finale, nous avons commence a reflechir au manuel dujeu. Nous avons decide d’en faire profiter tout le monde et une nouvelle section � Lemanuel �a vu son apparition sur notre site web. Ce manuel contient une petite his-toire d’introduction, une explication sur le principe du jeu et les differents ecrans, uneexplication sur l’utilisation du jeu, puis une liste des differentes armes proposees. Nouspensons creer plusieurs manuels differents : un disponible directement sur notre siteinternet, un manuel en papier imprime et un manuel en PDF contenu dans le dossierde jeu.

27 Rapport de soutenance 3

A-Xion Projet Xion

3 Conclusion

3.1 Pour la presentation finale

Des fois que ce ne soit pas evident, remettons le planning de ce que nous avionsprevu d’obtenir pour la soutenance finale :

Mogmi PMdomine Cookieslover Sn00ze92Site web 100 % 100 %Moteur physique 100 % 100 %Moteur reseau 100 % 100 %Moteur graphique 100 % 100 % sSons 100 % 100 %IA 100 % 100 %

Etonnant n’est-ce pas ?

3.2 Le mot de la fin

Nous continuons de faire avancer notre jeu avec toujours autant d’interet et de plai-sir. Cependant, plus notre jeu evolue et plus nous sommes confrontes a des difficultessupplementaires. On peut par exemple citer la necessite d’optimiser nos algorithmes,sous peine d’obtenir un jeu tellement lent qu’il en serait injouable, ou encore la difficulted’ajouter une nouvelle fonctionnalite sans provoquer de conflits avec celles existantesetc.

Mais sans cela un projet n’en serait plus un apres tout :) !

28 Rapport de soutenance 3