projet xion | rapport de soutenance 2 -...

26
Projet Xion — Rapport de soutenance 2 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: ngothuan

Post on 25-Mar-2019

225 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

Projet Xion — Rapport de soutenance 2

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

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

1

Page 2: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

Table des matieres

1 Introduction 31.1 Resume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Le groupe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Le planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

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

2.1.1 Le placement des Xions sur la carte . . . . . . . . . . . . . . . . 52.1.2 Les explosions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.3 La destruction de la carte . . . . . . . . . . . . . . . . . . . . . . 62.1.4 La mort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.1.5 Le vent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.1.6 Une detection des collisions plus efficace ! . . . . . . . . . . . . . 82.1.7 Sorties d’ecrans . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.1.8 Les rebonds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.1.9 Les statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2 Le moteur graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2.1 Rendu du texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2.2 La liste des messages . . . . . . . . . . . . . . . . . . . . . . . . . 112.2.3 La taille des Xions . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2.4 Le menu de jeu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.3 Gameplay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.3.1 Les equipes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.3.2 Le tour par tour . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.3.3 La barre d’information . . . . . . . . . . . . . . . . . . . . . . . . 132.3.4 La minicarte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.3.5 La souris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3.6 Les armes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.4 Reseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.4.1 Ping ? - Pong ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.4.2 Le Multithreading . . . . . . . . . . . . . . . . . . . . . . . . . . 182.4.3 Le Multiclient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.4.4 A venir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.5 Intelligence artificielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.5.1 Pourquoi une IA . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.5.2 Le moteur de deplacement . . . . . . . . . . . . . . . . . . . . . . 202.5.3 le moteur de tir . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.6 Marketing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.6.1 T-Shirts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.6.2 Le site internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.6.3 Publicite et partenariats . . . . . . . . . . . . . . . . . . . . . . . 24

3 Previsions 26

4 Conclusion 26

2 Rapport de soutenance 2

Page 3: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

1 Introduction

1.1 Resume

Notre projet de premiere annee est de realiser un jeu video. Il est base sur le principedu jeu commercial bien connu Worms : Les joueurs dirigent des equipes composees d’uncertain nombre d’unites (appelees Xions dans notre jeu) dans un niveau integralementen 2 dimensions. Ils disposent alors d’un large panel d’armes et objets en tout genrequ’ils peuvent utiliser pour parvenir a leur but : detruire toutes les unites des equipesadverses.

Jusqu’a present, nous avions presente deux menus differents, nous affichions unecarte ainsi qu’une unite qui pouvait se deplacer sur la carte, entrant en collision avecles objets de celle-ci et etant soumis a la pesanteur. Nous disposions de deux armes (unbazooka et un arc) qui etaient capables de tirer mais dont les munitions n’infligeaientaucun degat. Le tout etait accompagne de sons.

Pour cette nouvelle version, nous proposons un grand nombre de nouveautes etd’ameliorations, comme par exemple l’apparition du vent, la gestion des explosions ouencore les nouvelles armes disponibles.

1.2 Le groupe

Notre groupe est (toujours) compose des 4 memes membres, aucun n’ayant eula bonne idee d’abandonner les autres dans leur lutte pour la conservation du titre !L’ambiance en son sein est toujours tres bonne, voire meme encore meilleure puisquenous nous connaissons de mieux en mieux et que notre travail semble porter ses fruits.Nous sommes tous tres soudes. De plus, nous ne sommes pas franchement sous pression,du fait que le projet avance chaque semaine un peu plus, voire chaque jour. Et commenous sommes en contact tous les soirs via jabber, nous sommes au courant de toutesles avancees.

3 Rapport de soutenance 2

Page 4: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

1.3 Le planning

Lors de la derniere soutenance, nous avions propose un planning different de celuipresente dans le cahier des charges.

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

Nous sommes parvenus a le tenir, nous sommes meme un peu en avance pourcertains points.

Figure 1 – Screenshot

4 Rapport de soutenance 2

Page 5: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

2 Bilan

2.1 Le moteur physique

2.1.1 Le placement des Xions sur la carte

Pour le placement des Xions au debut d’une partie, il a fallu ecrire un algorithmepermettant de les disposer de maniere aleatoire sur la carte. Pour chaque Xion, onteste une position aleatoire jusqu’a ce qu’il se retrouve sur le sol. Cette methode deplacement est egalement utilisee pour placer les boıtes a boum.

2.1.2 Les explosions

Les armes, c’est bien, mais si elles ne font rien elles ne sont pas vraiment utiles !C’est ainsi que nous est venu l’idee que nos armes pourraient avoir des effets sur ledecor et surtout, sur les Xions (pourquoi pas) !

Dans les details, une explosion est constituee de plusieurs petites explosions locales.Celles-ci sont representees par une liste de cercles de diametre en expansion ayant uneduree de vie limitee et provocant des degats : destruction de la carte, expulsion desXions a proximite et retombees sur leur energie. Toutes les armes peuvent donc avoiracces a un modele uniforme d’explosion.

Figure 2 – Cycle de vie d’une explosion locale

Au niveau de la memoire, une explosion est representee en dynamique par uneliste doublement chaınee. Chacun des elements de cette liste represente une explosionlocale. A chaque parcours de la liste, on grossit cette explosion ; si elle atteint une taillecritique, les degats sont appliques, et lorsqu’elle a atteint sa taille maximale, elle estsupprimee de la liste. La representation en liste doublement chaınee a ete choisie pourfaciliter la suppression d’elements.

5 Rapport de soutenance 2

Page 6: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

2.1.3 La destruction de la carte

L’un des interets de DestruXion est que le terrain de jeu est modelable a volonteau cours de la partie. En effet, les diverses armes utilisees peuvent detruire la carte.

Nous avons mis a notre disposition diverses procedures permettant de modifierdirectement les pixels de celle-ci. Il nous est facile de ”vider” un pixel, c’est-a-direbaisser la composante alpha de sa couleur a zero.

La premiere application de cette possibilite fut la destruction de la carte engendreepar les explosions. Elle consiste en une succession de disques decoupes dans celle-ci.

Figure 3 – La destruction de la carte

Un disque est en realite un ensemble de cercles concentriques de rayon de plusen plus petits. Nous avons d’abord pense a utiliser les fonctions trigonometriques,seulement la complexite de l’algorithme en resultant aurait rendu les calculs beaucouptrop longs. Nous nous sommes donc tournes vers un algorithme d’une complexite plusreduite : l’algorithme de traces de cercles d’Andres. Celui-ci se base sur une equationverifiee par tout point (x ; y) d’un cercle de rayon r et de centre (x0 ; y0) :

(E) : (r − 12 )2 ≤ (x− x0)2 + (y − y0)2 < (r + 1

2 )2

En procedant par iteration sur les pixels, on peut determiner tout les points ducercle car il est demontre que si un point M (x, y) verifie (E), alors l’un des pointsM1(x + 1, y),M2(x, y + 1),M3(x + 1, y + 1) la verifie egalement dans le quadranthaut / gauche du cercle.

Soit d = r2 + r − x2 − y2 − 1, il est montre que :– si d > 2 ∗ x, le point suivant est le point a droite : M1

– si d < 2 ∗ (r − y), le point suivant est le point au dessous : M2

– Sinon, le nouveau point du cercle est M3

Pour determiner tout les points du cercle a partir de ceux du quadrant haut / gauche,on effectue une symetrie par rapport a l’axe des abscisses, l’axe des ordonnees et lecentre. En utilisant cet algorithme successivement pour un rayon qui decroıt de Rjusqu’a 0, on obtient un disque de rayon R.

Nous avons egalement utilise cet algorithme pour foncer les bords de chaque disque

6 Rapport de soutenance 2

Page 7: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

Figure 4 – L’algorithme d’Andres

dessine dans la carte. Il se trouve qu’il traite plusieurs fois certains pixels, ce qui aengendre des lignes courbes plus foncees que nous avons laisse du fait de leur esthetisme.

Nous ne comptons pas nous limiter a la destruction de la carte par les explosions.Le disque est la base de nombreuses possibilites qui s’offrent a nous pour la destructioneffectuee par des armes differentes. Pourquoi pas une arme permettant de creuser untunnel !

2.1.4 La mort

Le but principal de notre jeu est de faire en sorte qu’il ne reste plus qu’une equipesur le terrain. Il fallait donc un moyen de les faire disparaıtre de temps a autres. Apresavoir hesite a les tranformer en popcorns, il s’est avere que la mort restait encorele meilleur moyen pour y parvenir ! Maintenant donc, lorsque les points de vie d’unXion deviennent inferieurs ou egaux a zero, il est considere comme mort. Il n’est doncplus selectionnable, n’est plus affiche sur la carte et n’est plus pris en compte dans lesequipes.

Notez au passage que nous avons quand meme pense a leur donner des tombesdignes de ce nom, qui permettent de determiner a quelle equipe le Xion enterre appar-tenait. Celles-ci font alors partie integrante du decor et sont donc destructibles.

Figure 5 – Avant et apres la mort

7 Rapport de soutenance 2

Page 8: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

2.1.5 Le vent

Un des premiers elements que nous avons implemente pour cette deuxieme soute-nance fut le vent. Techniquement, nous avons simplement rajoute une force en plus dela gravite qui s’exerce a tout instant sur les projectiles, mais pas sur les Xions. Cela offreau joueur un challenge supplementaire. Au niveau de la gestion, la direction et la forcedu vent sont calculees aleatoirement au debut de chaque tour. Ces caracteristiques sontindiquees au joueur sur la minibarre et sur la microbarre presentees plus loin 2.3.3.

Figure 6 – Indicateur sur la microbarre

2.1.6 Une detection des collisions plus efficace !

Lors de la premiere soutenance, nous avions souleve un probleme : si un projectileetait trop rapide, une detection avec une fine bande de la carte pouvait etre manqueepar le moteur de collisions. En effet, si au temps tn et au temps tn+1 le projectile n’estpas en collision avec la carte, il peut l’avoir ete entre ces deux moments.

Pour remedier a ce probleme, nous avons ajoute une fonctionnalite qui permet dedetecter une eventuelle collision entre la frame actuelle et la frame precedente.

– On affecte au projectile la position qu’il avait lors de la frame precedente ensoustrayant son vecteur vitesse a sa position actuelle.

– On calcule le vecteur unitaire V∆, de meme direction et sens que le vecteur vitessedu projectile.

– On ajoute ce vecteur a la position de celui-ci tant qu’il n’est pas en collision avecla carte et tant qu’on n’est pas retourne a la position initiale.

On teste ainsi une eventuelle collision avec la carte pour chaque mouvement elementairede un pixel. Si on en trouve une, le projectile est automatiquement colle a la surfacede la carte.

Cette option n’a pas ete activee pour la collision des Xions avec la carte car ellenecessite plus de calculs qui ralentiraient le jeu pour une quantite importante de per-sonnages. Nous comptons eventuellement l’activer en fonction de l’importance ou nonde la vitesse du Xion.

8 Rapport de soutenance 2

Page 9: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

2.1.7 Sorties d’ecrans

A la premiere soutenance, nous avions des soucis lors des collisions entre les Xionset les bords de l’ecran. De plus, les projectiles se plantaient sur ces parois invisibles.

Maintenant, une sortie d’ecran par le bas implique une mort immediate. Une sortiepar les cotes n’est pas aussi radicale, mais en l’absence de sol, le Xion tombe, passesous le bas de la carte, et meurs donc. Enfin une sortie par le haut de l’ecran n’impliquerien directement : tout projectile ou Xion expulse vers le haut retombera sur la carte.

2.1.8 Les rebonds

Pour la seconde soutenance, l’un des objectifs principaux etait d’implementer lesrebonds des divers objets sur la carte lors de ces collisions. En effet, les Xions doiventpouvoir rebondir sur la surface de la carte lorsqu’ils sont ejectes par une arme. De plus,certains projectiles rebondissent comme la grenade par exemple.

Pour determiner le nouveau vecteur vitesse d’un objet apres une collision avec unesurface, il faut determiner le vecteur symetrique a sa vitesse initiale par rapport a lanormale au point d’impact.

On va d’abord calculer le vecteur unitaire−→i , tangent a la carte au point de collision.

Pour cela on additionne les tangentes a gauche et a droite en ce point et on normalisele resultat. On calcule ensuite le vecteur unitaire

−→j , perpendiculaire a

−→i :

jx = iy

jy = −ix

On a donc calcule le vecteur normal au point d’impact. Il nous suffit de calculer levecteur symetrique a

−→v1 par rapport a

−→j :

−−→v2 = 2 ∗ (−→v1.−→j )/‖−→j ‖2 ∗ −→j −−→v1

donc−→v2 = −2∗ (

−→v1.−→j )/‖−→j ‖2 ∗−→j +

−→v1 = −2∗ (

−→v1.−→j )∗−→j +

−→v1 (car

−→j est unitaire).

Ce vecteur porte la nouvelle direction de l’objet apres la collision et a la memenorme que

−→v1. Nous modifions ensuite sa norme de maniere a simuler l’absorption

d’energie qui a lieu lors d’un choc collision inelastique. On obtient−→v2′ en multipliant

ce vecteur par un pourcentage inferieur a 100%.

9 Rapport de soutenance 2

Page 10: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

Figure 7 – Les rebonds

Afin de limiter la quantite de calcul et s’assurer que tout objet en collision s’arretedefinitivement de bouger au bout d’un moment, nous avons determine une vitesselimite pour laquelle il est soumis a un rebond. En effet, si sa vitesse passe sous uncertain seuil, il n’y a plus de rebond et celle-ci s’annule.

2.1.9 Les statistiques

Un moteur de statistiques a ete cree afin de pouvoir avoir acces aux donnees concer-nant la partie. Pour chaque equipe, il calcule en temps reel le nombre de Xions ennemistues, le nombre de suicides, le nombre de pertes.

Ces statistiques seront affichees dans le menu (pour l’instant vierge) qui se charge ala fin d’une partie ou lorsque l’on quitte le jeu. Nous prevoyons de faire des statistiquesplus poussees a l’avenirs, informant sur les armes les plus utilisees, les capacites dechaque equipe a bien viser, etc.

En conclusion, nous pouvons affirmer que nous sommes tres largement en avancepar rapport a nos predictions pour le moteur physique.

10 Rapport de soutenance 2

Page 11: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

2.2 Le moteur graphique

2.2.1 Rendu du texte

Apres avoir vu beaucoup d’autres projets, le constat est simple : le rendu de texten’est pas satisfaisant, celui-ci est illisible.

Une caracteristique essentielle de l’interface de DestruXion est la bordure du texte :le blanc borde de noir assure une lisibilite maximale quelque soit le fond ! (ou presque...)En pratique, nous avons concu une table des caracteres affichables en image utiliseepour rendre chaque caractere d’un texte.

Ce rendu de texte est surtout utilise dans l’interface de parametrage du jeu, et dansla liste des messages lors du jeu.

Figure 8 – Rendu du texte

2.2.2 La liste des messages

Il est parfois utile de preciser au joueur certains evenements qui ne sont pas direc-tement visibles, comme la sortie d’un objet de la carte afin qu’il ne soit pas desoriente.Pour cela, nous avons cree un composant permettant de lister des messages textuels enprovenance du jeu lui-meme. Ainsi, le joueur verra plusieurs lignes de renseignementsapparaıtre dans un coin de l’ecran au cours du jeu.

Cette liste est geree comme une file a taille fixe : quand elle est pleine, les nouveauxelements remplacent les anciens tout en conservant l’ordre d’arrivee des messages. Larepresentation statique d’une file a index rotatifs etait donc tout indiquee dans notrecas.

2.2.3 La taille des Xions

Nous avons en premier lieu corrige un detail de notre jeu : la taille de nos unites.En effet, nous nous sommes apercu que leurs anciennes dimensions etaient trop im-portantes, et que cela nuisait a la lisibilite et a l’esthetique du jeu. De plus, cela nousobligeait a creer des cartes aux dimensions proportionnelles. La taille des Xions a doncete reduite de moitie par rapport a la precedente version.

11 Rapport de soutenance 2

Page 12: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

Figure 9 – Changement de la taille des Xions

2.2.4 Le menu de jeu

Pour faciliter la generation d’une nouvelle partie, nous avons ajoute un menu audebut de celle-ci grace auquel tous les parametres sont reglables.

Figure 10 – Menu de choix de jeu

12 Rapport de soutenance 2

Page 13: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

A partir de ce menu, il est donc possible de choisir la carte utilisee (terrain et fond),comme explique dans la partie graphique, ainsi que le nombre d’equipes controlees parl’IA, par le joueur, et le nombre de Xions dans chacune d’elle. Enfin nous pouvonsdeterminer le nombre de boıtes a boum presentes sur la carte.

2.3 Gameplay

2.3.1 Les equipes

Lors de notre premiere soutenance, nous n’avions qu’un seul Xion de present.L’interet de notre jeu etait donc plutot limite. Nous avons donc ajoute pour cettesoutenance la gestion des equipes. Pour le moment, la premiere equipe est geree parl’utilisateur, et toutes les autres equipes par l’intelligence artificielle (detaillee plusloin).

2.3.2 Le tour par tour

Dans notre derniere version, le tour d’un Xion se terminait uniquement lorsqu’ilavait tire. Maintenant, celui-ci peut se terminer de plusieurs manieres : une fois qu’ila effectue une action (tirer), une fois que son temps de tour est ecoule ou encore si ilse blesse en tombant. Dans l’avenir, il existera d’autres evenements qui entrainerontla fin d’un tour (par exemple marcher sur une mine). Apres qu’un Xion ait joue, c’estau tour d’une unite de l’equipe suivante de jouer. Pour le moment le Xion a diriger estselectionnable a chaque debut de tour, avant tout deplacement, donc nous ne soucionspas de savoir a quelle unite precisemment c’est le tour d’agir.

2.3.3 La barre d’information

Pour que notre jeu soit pratique, il fallait que le joueur dispose instantanement detoutes les informations dont il a besoin. Nous avons donc mis en place une minibarrequi les regroupe.

La minibarre regroupe les informations suivantes :– Le drapeau de l’equipe actuelle– Le temps restant au joueur en cours pour ce tour– La direction du vent– La puissance du vent– La minicarte (que nous detaillerons plus loin)– La liste et l’etat de sante de toutes les equipes presentes

13 Rapport de soutenance 2

Page 14: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

Figure 11 – Indicateurs sur la minibarre

Cependant la microbarre peut se reveler embetante. En effet, puisqu’elle se super-pose a l’ecran de jeu, il peut arriver qu’elle cache un element important pour le joueur.Nous proposons ainsi une touche (pour le moment la touche ”i”) qui permet de minia-turiser la minibarre en une microbarre ne contenant plus que le vent, materialise parune barre symbolisant a la fois sa direction et sa puissance, ainsi que le temps de tourrestant.

Figure 12 – La microbarre

2.3.4 La minicarte

La minicarte permet de se reperer par rapport a toute la zone de jeu non afficheea l’ecran. Son fonctionnement est assez simple :

– on calcule un coefficient de reduction en fonction de la taille de la carte, afinque la minicarte ne depasse pas une certaine hauteur et une certaine largeur.

– grace a un pointeur vers la surface SDL correspondant a la carte, on obtientpar reduction une minicarte qui s’actualise avec les destructions de la carte.

– on recupere les positions de chaque Xion vivant et sur la carte, afin de lesrepresenter a leur place sur la minicarte. Chaque equipe est representee dans unecouleur differente, et le Xion actif se demarque des autres Xions.

– on affiche un cadre rouge sur la minicarte, qui permet de reperer la position dela camera par rapport au reste de la carte.

– si un utilisateur clique sur la minicarte, on calcule la position correspondantesur la vraie carte, et on centre la camera sur cette position. Ainsi, l’utilisateurpeut se rendre directement ou il veut sur la carte, grace a un simple clic sur laminicarte.

Ainsi, peu importe la carte choisie, le fond choisi et leurs tailles, on obtient uneminicarte tres pratique :

14 Rapport de soutenance 2

Page 15: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

Figure 13 – La minicarte

2.3.5 La souris

La souris est de nos jours un element important du gameplay d’un jeu, car elleoffre des facilites pour la selection et le deplacement d’elements que les touches flecheesn’ont pas. Nous avions deja utilise la souris afin de parcourir les menus. Nous avonsmaintenant ajoute d’autres fonctionnalites utilisant la souris. La camera est maintenantdeplacable grace a un pointeur ajoute a l’ecran de jeu qui, une fois deplace vers l’undes bords de l’ecran, deplace la camera dans la direction souhaitee. Il est desormaisegalement possible de deplacer la camera directement en cliquant a l’endroit desire surla minicarte.

La selection du Xion a utiliser peut egalement se faire a l’aide de la souris.

2.3.6 Les armes

Un des interets de notre jeu est le grand nombre d’armes que nous souhaitonsmettre a disposition des joueurs. Nous avons donc ajoute pour cette soutenance uncertain nombre d’armes :

15 Rapport de soutenance 2

Page 16: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

Figure 14 – Le bazooka

Le bazookaLe bazooka est l’arme de base dans DestruXion. Elle dispose de munitions illi-mitees et sa puissance est moyenne. Les missiles sont sensibles au vent et a lagravite, et ils explosent au contact du sol, detruisant le niveau et expulsant lesXions alentours.

Figure 15 – L’arc

L’arcL’arc est egalement une arme comme le bazooka, a ceci pres que les flechesn’explosent pas au contact du sol, mais elles restent plantees et font alors partieintegrante du niveau. Elle peut donc etre utilisee comme moyen d’empecher unennemi d’avancer ou d’escalader une pente par exemple.

Figure 16 – La grenade

La grenadeLa grenade est une arme plus puissante que le bazooka, mais egalement plusdifficile a manier. Non seulement elle est sensible au vent et a la gravite mais enplus, au lieu d’exploser au contact du sol, elle rebondit sur le sol jusqu’a ce queson compte a rebours atteigne zero. Bien utilisee, elle peut cependant permettred’atteindre des endroits innaccessibles avec d’autres armes.

16 Rapport de soutenance 2

Page 17: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

Figure 17 – La grenade a fragmentation

La grenade a fragmentationLa grenade a fragmentation est une arme de DestruXion massive dont la seuleutilite est de detruire la moitie de la carte. Elle fonctionne comme une grenadebasique, sauf qu’a l’explosion elle libere 2 grenades supplementaires, et ainsi desuite trois fois ! Le niveau s’en trouve donc grandement aere. Par contre, a la vuedu caractere overcheate de cette arme, elle ne sera pas illimitee.

Figure 18 – La boite a boum

La boıte a boumPour l’instant, les cartes ne pouvant pas etre generees aleatoirement, nous avonsvoulu ajouter quelque chose qui rendrait chaque partie differente de la precedente,meme sur la meme carte. Nous avons donc ajoute des boıtes a boum placeesaleatoirement sur la carte au debut de chaque partie qui explosent au moindrechoc. Leur nombre est reglable via le menu de debut de partie.

2.4 Reseau

Pour cette soutenance, nous avions prevu de commencer le moteur reseau : c’estchose faite ! Avant de l’integrer au jeu, nous avons voulu gerer des communications debase entre plusieurs machines dites � clientes �et une machine dite � serveur �, graceau protocole TCP (Transmission Control Protocole) et la bibliotheque SDL Net.

Le moteur reseau nous servira a faire des parties multi-joueurs en reseau. Pourcela, nous aurons besoin d’un serveur sur lequel la partie se deroule et de clientsqui communiquent avec ce serveur afin de lui envoyer des directives et recevoir sesinformations.

17 Rapport de soutenance 2

Page 18: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

2.4.1 Ping ? - Pong !

Nous avons commence par coder un serveur qui ecoute sur un port. C’est a dire qu’ilattend qu’un client se connecte a ce port, puis attend un message de ce client. Nousavons egalement code un client de base permettant de se connecter au serveur, afin detester ce dernier. Nous avons reussi a avoir un serveur qui repondait automatiquementau client.

2.4.2 Le Multithreading

Notre premier probleme est venu des fonctions d’envoi et de reception de SDL Net.En effet, ces fonctions bloquent tout le reste du programme en attendant que l’envoiou la reception soient effectues. Pour pallier a ce probleme, nous avons decide decreer deux boucles qui tournent en meme temps que la boucle principale. Ainsi, cesdeux boucles recoivent et envoient les donnees sans bloquer la boucle principale. Ces� threads � communiquent avec le programme principal grace a des files dynamiquesque nous avons implementees.

2.4.3 Le Multiclient

Notre second probleme est du au fait qu’un seul client a la fois pouvait se connecterau serveur. Pas tres utile comme moteur reseau, donc. . . Nous avons donc cree un threadsupplementaire charge d’attendre l’arrivee de nouveaux clients, et de creer les threadsd’envoi et de reception correspondants a chaque client. Ainsi, plusieurs clients peuventetre connectes au serveur.

2.4.4 A venir. . .

Il nous reste a perfectionner le serveur, entre autre pour gerer l’ouverture et lafermeture du serveur, ainsi que l’arrivee et le depart de clients le mieux possible. Nousdevons egalement gerer l’envoi et la reception au niveau du client avec le MultiThrea-ding. Une fois que nous aurons un client et un serveur dont le fonctionnement internenous convient, il restera a etablir un protocole specifique a DestruXion et a integrer lereseau au jeu. Encore beaucoup de choses a faire, donc. . . Mais nous avons largementrempli nos objectifs pour cette deuxieme soutenance !

18 Rapport de soutenance 2

Page 19: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

Figure 19 – Explication des multithreads

2.5 Intelligence artificielle

2.5.1 Pourquoi une IA

Afin de permettre aux joueurs de jouer seuls a DestruXion, un mode solo etaitnecessaire. Nous avons donc decide d’implementer une Intelligence Artificielle qui seraitcapable de piloter les Xions d’une equipe ennemie. Il est egalement interessant depouvoir ajouter des equipes pilotees par l’ordinateur au sein d’une partie multijoueuren reseau.

L’Intelligence Artificielle de DestruXion est composee de deux modules principauxqui interagissent entre eux : le moteur de deplacement et le moteur de tir.

19 Rapport de soutenance 2

Page 20: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

2.5.2 Le moteur de deplacement

Figure 20 – Le module de deplacement de l’Intelligence Artificielle

20 Rapport de soutenance 2

Page 21: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

L’IA doit etre capable de se deplacer sur la carte, en evitant les obstacles. Pourl’instant, au debut du tour, le xion se deplace selon une direction initiale aleatoire. Sile personnage n’a pas bouge apres l’appel de la procedure pour marcher (s’il est bloquepar un obstacle), cette direction est inversee.

Il est evident que nous comptons aller beaucoup plus loin. Apres une intensereflexion, nous avons pu etablir un organigramme illustrant les divers tests que l’IAeffectuera afin de regir le comportement du personnage.

Il faudra donc implementer des fonctions permettant de determiner l’eventuellepresence d’une barriere de pixels, calculer sa hauteur afin de decider si oui on non onpeut sauter. Il faudra faire de meme pour les trous.

Le personnage ne devra pas se deplacer au hasard. En effet, il faudra determiner unpoint de destination a atteindre et verifier a chaque etape si on approche de celui-ci.Un point de destination pourrait etre un eventuel objet sur la carte que l’on voudraitobtenir, ou un ennemi cible.

2.5.3 le moteur de tir

L’autre module important est le moteur de tir. C’est lui qui se charge de determinerla strategie a adopter afin de nuire aux equipes adverses et qui effectue les calculsnecessaires aux tirs.

Nous avons implemente une fonction qui permet de trouver un ennemi dans unrayon limite, et pour lequel il n’y a pas de matiere entre celui-ci et le joueur controle.Pour calculer la distance entre les deux Xions, on calcule la norme de la difference deleurs positions. Pour verifier qu’il n’y a pas de matiere entre eux, on calcule le vecteurunitaire −→u qui a pour direction l’axe porte par les deux Xions. On ajoute ce vecteura la position du joueur tant que le pixel en resultant n’est pas rempli.

Une fois une cible determinee, on calcule l’angle avec lequel il faut tirer :

α = arctan(−uy/ux)

Si ux est negatif et uy positif on ajoute 180 degres, si les deux sont negatifs onsoustrait 180 degres. Le calcul ne peut pas etre fait si ux vaut zero, dans ce cas l’anglevaut 90 degres. La force de tir est ici maximale car le projectile doit avoir un mouvementrectiligne.

La prochaine amelioration sera de detecter si des Xions de la meme equipe sontpresents pres de la cible. Si c’est le cas, il faut prendre une arme qui n’explose pascomme la fleche ou changer de cible si la precision du tir n’est pas garantie. Il faudra

21 Rapport de soutenance 2

Page 22: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

egalement choisir l’arme en fonction de la quantite de munitions restante, lorsque lesmunitions seront implementees.

Nous avons donc presque termine l’une strategies principales que nous souhaitonsdevelopper pour le moteur de tir. Deux autres feront leur apparition afin d’assurer uneaction efficace de l’IA dans n’importe quelle situation.

La premiere consiste a atteindre un ennemi tres proche du joueur. L’IA devrapouvoir detecter un Xion a proximite de celui-ci et ordonner au moteur de deplacementde se deplacer dans sa direction. Une fois la cible atteinte, on peut utiliser une armede proximite telle que la dynamite ou la batte de baseball.

La seconde, la plus complexe, serait utilisee en dernier recours. L’arme utilisee seraitexclusivement le bazooka ou une arme similaire, et le but serait d’arriver a toucher unXion ennemi impossible a atteindre en ligne droite. Il faudrait ainsi utiliser la graviteet le vent afin de contourner un eventuel obstacle.

Nous avons donc realise nos objectifs en ce qui concerne l’Intelligence Artificielle.Nous avons implemente sa communication croisee avec le moteur physique afin qu’ellepuisse effectuer les actions de bases : marcher, sauter, changer d’arme, tirer, etc. Deplus, les modules de deplacement et de tir ont de bases solides et le fonctionnementglobal a ete reflechi.

22 Rapport de soutenance 2

Page 23: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

Figure 21 – Le module de tir de l’Intelligence Artificielle

2.6 Marketing

2.6.1 T-Shirts

Comme la plupart des groupes, il nous a semble evident que l’acquisition de TShirtsaux couleurs de DestruXion etait une excellente idee pour faire parler de notre jeu d’une

23 Rapport de soutenance 2

Page 24: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

part, mais egalement pour nous souder un peu plus en formant une veritable equipe.

2.6.2 Le site internet

http://www.destruxion.net

Le site est regulierement mis a jour, pas seulement la veille des soutenances. Noussortons egalement regulierement de nouveaux executables pour Windows et UNIX(bientot pour Mac) afin de conserver des visiteurs reguliers et aussi afin d’obtenir desavis et des critiques sur notre jeu dans le but de l’ameliorer.

Afin de connaıtre, entre autres, la frequentation de notre site, nous avons mis enplace le service Analytics de Google sur celui-ci. Voici les statistiques de notre siteavant notre seconde soutenance, en prenant en compte que le service d’analyse n’estpresent que depuis deux mois :

Figure 22 – Les statistiques de notre site

2.6.3 Publicite et partenariats

Les chiffres de ce graphiques montrent tres bien les efforts que nous fournissonsdepuis le debut de notre projet dans la publicite. Des le depart nous avons tente defaire parler de nous, et ce pour plusieurs raison. Tout d’abord parce que nous passonsdu temps sur notre jeu et que nous preferons de tres loin voir des visiteurs sur notre

24 Rapport de soutenance 2

Page 25: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

site que de passer des nuits blanches pour que personne n’y joue jamais. Ensuite parceque nous avons quelques contacts sur des sites a frequentation correcte, et que parconsequent nous pouvons utiliser. Plus recemment, notre majoration lors de la premieresoutenance nous a non seulement surmotive, mais egalement fournis une marque dequalite de notre projet que nous esperons conserver.

Nous avons commence par communiquer le lien autant que possible autour de nous(a l’EPITA et ailleurs...). Nous avons egalement essaye de rependre des liens vers notresite web un peu partout sur Internet, en mettant par exemple une banniere vers notresite dans nos signatures, ou encore en placant des fond d’ecrans DestruXion en sallemachine. Nous avons egalement realise des videos in-game que nous avons poste surdes sites comme Youtube ou Dailymotion.

Figure 23 – Des videos du jeu sur le Net

Nous avons aussi etablit des partenariats avec d’autres teams de SUP. Pour lemoment seule la Knock-Knock team en fait partie, mais nous esperons bien en ajouterd’autres d’ici peu.

Nous avons egalement un premier partenariat avec PC-Shows (http://www.pc-shows.com), site d’informatique dirige par Kevin Mathieu, un epiteen en deuxieme anneed’ingenieurie qui a egalement parle de nous sur son blog (http://www.kinox-fr.com/post/2009/01/DestruXion-%3A-un-worms-like-prometteur).

Recemment, nous avons etabli un nouveau partenariat avec BlaguesDeGeek.com.Paul, l’administrateur, suit regulierement l’avancement du projet et nous a fait un peude publicite sur son site.

Dans l’avenir, nous lancerons sans aucun doute d’autres moyens publicitaires :affiches, trailers, installation en salle machine, sortie de CDs, fausses chaınes de mails,

25 Rapport de soutenance 2

Page 26: Projet Xion | Rapport de soutenance 2 - DestruXiondestruxion.kawie.fr/datas/soutenance2/soutenance2-rapport.pdf · A-Xion Projet Xion 1 Introduction 1.1 R esum e Notre projet de premi

A-Xion Projet Xion

ns all sur netsoul, bourrage de cranes etc.

3 Previsions

Malgre tous ces ajouts notre jeu n’en est pas pour autant termine (encore heureux :3). Voici donc ce qu’il nous faut accomplir d’ici notre troisieme soutenance :

– avoir une IA qui sait se deplacer parfaitement– faire que l’IA sache quelle arme utiliser dans quelle situation– donner a l’IA la capacite de viser (courbes)– integrer le reseau au jeu– ajouter des objets sur la carte (trousses de soin)– ajouter des armes– ajouter des cartes

Pour rappel, voici notre planning pour la 3eme 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 %

4 Conclusion

Notre projet avance donc bon train. Nous avons reussi a atteindre les objectifs quenous nous etions fixes a notre premiere soutenance. Les differents moteurs se sont biendeveloppes, nous permettant dorenavant de modifier le gameplay de notre jeu. De plusce ne sont pas les idees qui manquent, loin de la.

Nous vous donnons donc rendez-vous a notre 3eme soutenance pour decouvrirtoutes ces nouveautes. Restez en orbite autour de la planete DestruXion !

:) !

26 Rapport de soutenance 2