Dossier ISN

Transcription

Dossier ISN
Bouscharain Jonas
Dossier ISN
Jeux Multijoueur – Tower Defense
Membres de l’équipe de réalisation :
- Creach Matthias
- Lamoureux Clément
- Bouscharain jonas
Liens vers mon CV :
http://isn.codelab.info/e-portfolio/e-portfolios-du-groupe-vendredi/jonas-ts2/mes-mini-projets-isn/mon-cv/
Enjeu et problématique, pourquoi ce projet ?
Les membres de notre équipe étant tous passionné plus ou moins intensément de
jeux vidéo, nous avons tout de suite sauté sur l’occasion d’en réaliser un ! En effet, puisque
nous jouons régulièrement a des jeux qui on été fabriquer et développer par de grandes
entreprises spécialisées, il fus très intéressant de découvrir les étapes de développement
d’un jeux vidéo, les difficultés rencontrée, les différents postes existants … Au jour
d’aujourd’hui les jeux multijoueur sont de plus en plus répandus et joués, et les processus de
connexion entre les joueurs sont de plus en plus sophistiqués et complets. Pour nous,
joueurs de jeux multijoueurs a temps perdus, connaitre et comprendre ces protocoles nous
a permis d’avoir une autre vision sur les jeux « en ligne » auxquels nous jouons le plus
souvent.
Le type de jeux « Tower Defense » a été choisi principalement pour la facilité de mise
en œuvre. C’est, selon nous, le jeu le plus simple a réaliser en multijoueur avec notre
niveaux en informatique : Un même écran pour les deux joueur en 2D, des graphismes
simplistes
…
Qu’est ce qu’un « Tower Defense » ?
Concrètement, un « Tower Defense » est un type de jeux se jouant au tour par tour,
opposant une faction attaquante avec une faction défendante. L’objectif de l’attaquant est
de détruire la base du défenseur, tandis que le défenseur doit résister aux assauts de
l’attaquant. Au premier tour, l’attaquant envoie un certain nombre de combattant suivre un
chemin définis conduisant à la base du Défenseur. Lorsque l’attaquant a envoyé toutes les
unités disponibles il doit attendre la fin du tour pour en envoyer d’autres. Pendant ce temps,
le défenseur s’est préparer a l’attaque en disposant des unités le long du chemin emprunté
par les troupes ennemies. Ces défenseurs vont tenter de défendre leur base en détruisant
les attaquants avant qu’ils n’atteignent celle-ci. Lorsque tous les attaquants sont éliminés,
c’est le début du tour n°2 : L’attaquant dispose de plus unités, et le défenseur a pu
perfectionner ses défenses … Et ainsi de suite, la partie se termine lorsque la base du
défenseur est détruite ou lorsque le nombre de tours maximum a été atteint.
Cahier des charges de l’équipe
Développer un jeu multijoueur fonctionnel
-
Un écran d’accueil
Un menu
Une interface en jeu
Une carte
Une faction d’attaquants
Une faction de défenseur
Deux joueurs jouant simultanément au jeu, chacun commande sa faction
Le moins de bug possible
Pour réaliser ce projet, nous avons été amenés à utiliser de nombreuses ressources
et de nombreux logiciels.
Pour commencer, nous avons choisis d’utiliser l’univers de Pokémon pour réaliser
notre projet, ce qui nous a permis d’outrepasser la phase de création de toutes les
images et des environnements et d’utiliser seulement des images déjà conçue, un gain
de temps important.
Notre jeu a été développé sous Processing, un environnement de développement
utilisant une forme simplifiée du langage de programmation bien connus, Java.
Quelques logiciels ont aussi été utilisés pour notre projet, comme Photoshop ou
Photophiltre pour toutes les retouches ou montages graphiques présents dans notre
projet. Le logiciel Advanced Map nous a également permis de crée une carte de jeu dans
l’univers de Pokémon.
Tableau de la répartition des tâches
Démarche collaborative
Ma participation au projet
Etant à l’aise avec plusieurs logiciels de retouche, crée l’aspect graphique du jeu m’a
attirer dès la première séance. En effet, la totalité des montages que j’ai effectué lors de ce
projet ont étés réalisés sur Photoshop CS5, logiciel de retouche d’image particulièrement
complet.
- Un écran d’accueil
La première chose sur laquelle on est envoyer l’orque l’on lance un jeu Pokémon est un
écran d’accueil, j’ai donc commencé par celui-ci pour donner une identité a notre projet.
Pour le réaliser, j’ai simplement installé un émulateur de GameBoy (console disposant de
nombreux jeux Pokémon) sur mon ordinateur et pris des captures d’écran d’un écran
d’accueil d’un jeu Pokémon.
J’ai ensuite augmenté la définition de l’image en augmentant le nombre de pixels par
pouce. Puis j’ai remplacé les images inutilisables, car de trop mauvaise qualité, par des
images plus récentes et de meilleures résolutions. J’ai globalement gardé les couleurs et la
disposition des éléments originaux pour crée notre propre écran d’accueil.
Cet écran ne dispose que de quelques lignes de code. En effet, il n’y a que le « Appuyer
sur entrer » qui clignote, ceci est réaliser grâce a une boucle avec la variable n. Celle-ci varie
entre 0 et 20, lorsqu’elle est égale à 0 elle augmente jusqu'à 20 et lorsqu’elle est égale à 20
elle diminue jusqu'à 0. Un booléen s’active lorsque n atteint une valeur et se désactive
lorsqu’il atteint l’autre. L’image « Appuyez sur entrer » s’affiche en fonction de ce booléen,
ce qui donne cet effet de clignotement.
- Un menu
Première difficulté : Aucun jeu Pokémon ne dispose de Menu. Il est donc plus difficile de
crée quelques chose de toute pièce plutôt que de modifier quelque chose déjà existante. J’ai
donc pris des décisions, et j’ai choisis de rester dans l’état d’esprit de l’écran d’accueil. Il y a
eu plusieurs essais plus ou moins bon, et nous avons finalement choisis un des plus simples,
car c’était le plus clair et le plus dans « l’esprit Pokémon ».
Ce menu dispose déjà de plus de ligne de code que l’écran d’accueil, car il y a plus
d’interaction avec celui-ci. Le joueur peux donc accéder a plusieurs menus en cliquant sur
des « onglets », et de petites animations accompagnent cette navigation : lorsque le joueur
passe sa souris sur un onglet, le mot se décale vers le droite et une flèche apparait sur sa
gauche, mettant en évidence le menus dans lequel va entrer le joueur lorsqu’il va cliquer sur
sa souris. Cette animation est mise en place grâce a des boucles if() : SI l’utilisateur passe sa
souris sur le rectangle *****, ALORS afficher l’image *****.
- Une interface en jeu
Pour crée cette interface, j’ai utilisé l’expérience acquise durant mes deux premières
« créations ». En effet, j’ai utilisé une capture d’écran de Pokémon en la personnalisant
encore plus que l’écran d’accueil et j’ai mis en place des boucles plus impressionnantes.
Tout d’abord, parlons de l’aspect graphique de cette interface. J’ai encore une fois utilisé
une capture d’écran d’un jeu Pokémon pour la base, mais cette fois j’ai vraiment modifié
celle-ci pour que l’interface puisse s’adapter a notre type de jeu, qui demande plus de
tactique et d’informations en combat qu’un jeu Pokémon. J’ai donc gardé les couleurs et la
forme globale des menus en jeu, puis je les ai disposés la où ils me semblaient le plus
approprié à donner des informations au joueur sans le gêner dans sa partie. J’ai aussi essayé
tant bien que mal à produire une interface le moins désagréable possible à regarder, que
l’écran de jeu garde un certain design.
Au niveau du code, les animations sont basées sur celles du menu, après l’écran
d’accueil. En effet, des boucles if() permettent d’afficher des images différentes lorsque la
souris du joueur passe sur une zone bien précise. Cette fois-ci les animations sont
optimisées, il y a un mélange de texte d’informations, d’images et même de transparence
pour une navigation plus agréable.
Dans cette interface, j’ai essayé de donner le plus d’informations au joueur sans
surcharger l’écran, il a les informations importantes directement a l’écran (la carte, le
nombre de vagues, la vie de la base du défenseur et ses points) et il peut aller chercher les
informations dont il a besoin au moment où il en a besoin sans masquer complètement les
informations importantes.
Les difficultés et problèmes rencontrés
Lorsque l’on s’occupe de l’aspect graphique d’un projet au sein d’un groupe, ce n’est
pas seulement nos goûts qui comptent, mais aussi ceux des autres membres de l’équipe de
développement. En effet, il eu plusieurs désaccords (mineurs, certes, mais des désaccords
quand même) au niveau de certains rendus de l’interface graphique. J’ai du enlever
certaines choses et en rajouter d’autre en faisant des concessions au niveau de ma vision de
la chose, pour que le rendu finale plaise a la totalité du groupe. Cette expérience n’a pas été
inutile car représentative, pour moi, de la place d’un graphiste dans le monde du travail : Il
doit crée un document qui plaise a son employeur, pas seulement a lui-même.
Un gros problème est aussi apparu très vite, la taille et la résolution des écrans du
lycée étant totalement différentes de celles de mon écran personnel. Les écrans du lycée
sont au format 4 :3 (« carré ») tandis que le miens est au format 16 :9 (« large »). J’ai donc
du adapté le format de mes fenêtre pour qu’elles soient utilisables sur mon ordinateur et sur
ceux du lycée.
Un autre problème est apparus un peu trop tard a mon goût, je l’ai remarqué il n’y a
que quelques semaines. En effet, l’affichage des couleurs n’est pas le même sur mon écran
que sur celui des écrans du lycée. Je ne sais pas si c’est la dalle qui n’est pas la même ou si
c’est un problème de réglage mais en tout cas certaines images, qui étaient très jolies sur
mon écran, rendait très mal sur les écrans de lycée. J’ai donc du réglé mon écran pour qu’il
renvoie une image à peu près comme celle des écrans du lycée pour pouvoir travailler chez
moi, car la présentation se feras sur les écrans du lycée.
Perspectives et évolutions
Notre projet est loin d’être aboutis et perfectionné, et de nombreuses améliorations
pourront lui être apportées. Personnellement, je souhaiterais faire des études
d’informatique après mon BAC, et je suis absolument certain d’aller jusqu’au bout de ce
projet même après mon BAC. De nombreuses fonctionnalités pourront alors être ajoutées,
comme :
-
-
-
La possibilité d’avoir un attaquant contre plusieurs défenseurs, ou plusieurs
attaquants contre un défenseur, ou même plusieurs attaquants contre plusieurs
défenseurs, sur des cartes plus grandes !
Le nombre d’unités différentes pour les attaquants comme pour les défenseurs
pourrait aussi être augmenté pour diversifier le jeu, et pour avoir des tactiques
d’attaque et de défense plus poussées.
La création d’une intelligence artificielle pourrait être ajoutée aussi, pour avoir la
possibilité de jouer en solo contre « l’ordinateur », pour s’entrainer par exemple ou
pour jouer quand aucun ami n’est connecté.
Bilan Personnel
Pour moi, ce projet m’a donné une vision à petite échelle du travail dans le monde de
l’informatique. Bien que le projet ai été bâti sur une de nos passions, en particulier celle du
jeu vidéo, j’ai pu apprécier une forme professionnelle dans le travail en groupe que nous
avons effectué lors de ce projet. De plus, dans notre groupe, chacun avais ces spécificités :
Matthias est très bon en code, Clément a de l’imagination et je me débrouille en termes de
photomontage. Cela nous a permis de s’aider mutuellement lorsque l’on bloquait sur un
code, qu’on était en manque d’idée ou qu’on ne savait pas sous quel format d’image
enregistrer un fichier. La coopération était omniprésente dans notre groupe. Pour conclure,
je peux dire que ce projet m’a conforté dans mon choix d’études supérieures et de futur
métier.
Diffusion du projet