Stick Fighter - Quentin Nivelais
Transcription
Stick Fighter - Quentin Nivelais
2014-2015 STICK FIGHTER PROJET ISN 2015 QUENTIN NIVELAIS ISN Aristide briand STICK FIGHTER TABLE DES MATIERES Début .......................................................................................................................................................... 2 I. A. Première phase de réflexion ........................................................................................... 2 B. Présentation de processing ............................................................................................. 2 C. Brainstorming .................................................................................................................. 3 D. Répartition des taches..................................................................................................... 4 Programmation .................................................................................................................................... 4 II. A. Le lancement ................................................................................................................... 4 B. Première difficulté ........................................................................................................... 5 C. Création des HitBox ......................................................................................................... 6 D. Les collisions .................................................................................................................... 7 III. Conclusion........................................................................................................................................... 8 QUENTIN NIVELAIS 1 STICK FIGHTER DEBUT PREMIERE PHASE DE REFLEXION Pour commencer ce projet, l’idée d’un jeu de combat ne nous est pas venue directement, nous avons d’abord pensé à utiliser du openData (Information public disponibles gratuitement) pour les cinémas, ou alors un générateur de sudoku, mais au final nous avons eu cette idée. La plateforme de programmation nous étant imposée, nous étions obligés de partir programmer sous processing, ce qui limite un peu le code, et empêche de pouvoir développer complètement notre idée. PRESENTATION DE PROCESSING Processing nous permet de changer de langage de programmation grâce à ce bouton Nous pouvons lancée et arrête le sketch (projet en création) avec ces boutons Nous pouvons aussi importer des librairies facilement : QUENTIN NIVELAIS 2 STICK FIGHTER Un débogueur qui marche relativement bien et aussi disponible. BRAINSTORMING Nous avons donc commencé à faire un brainstorming autour de point, la première chose qui nous est venue à l’idée en disant jeux de combat, c’était street fighter, et mortal kombat, nous sommes donc partis la dessus inspirés des mécaniques de ce jeux (les mouvements, les collisions, les barres de vie …) QUENTIN NIVELAIS 3 STICK FIGHTER Pour développer notre idée de base nous avons utilisé l’utilitaire en ligne MindMup. Celui-ci nous a permis de mettre au clair toutes nos idées. REPARTITION DES TACHES Nous avions les idées, il ne nous manquait plus qu’à répartir les rôles, pour cela, nous avons utilisé un deuxième utilitaire en ligne : scrumblr. Nous avons créé des colonnes pour chaque personne, puis des post-it pour chaque tache à effectuer, nous avons donc pu positionner les post-it dans chaque colonne. PROGRAMMATION LE LANCEMENT QUENTIN NIVELAIS 4 STICK FIGHTER Au tout début, sumeyya c’est lancée sur le menu, yoan sur l’affichage, et moi je me suis occupé de faire les mouvements, avec des petits carrés au début, en attendant les animations du yoan. Les mouvements fonctionnaient relativement bien, mais j’avais pas mal de problèmes liés au saut des personnages, en gros quand je lançais les sauts, les personnages retombaient perpétuellement, ou si on restait appuyé sur la touche, ils montaient ver l’infini. PREMIERE DIFFICULTE Un des points le plus durs dans l’animation, c’était de pouvoir faire bouger les deux carrés en même temps (en gros si les deux joueurs appuyaient sur la touche « d » et la touche droite, que les deux carrés bougent en même temps), que j’ai réussi à résoudre, en modifiant les variables utilisées, car 2 variables se rejoignaient, donc J’ai dissocié complètement les variables, comme ça les mouvement étaient bien indépendants, il y a encore un bug persistant, si les joueurs restent appuyer sur la touche, un seul des deux ne peut bouger. J’ai aussi initialisé les touches pour les attaques, yoan n’avait plus qu’à mettre les fonctions à l’intérieur. La fonction KEYPRESSED() Detecte l’appui sur une touche du clavier Apres nous detectons quelle touch : si la touche est « q » , IF (KEY == ‘Q’) alors on fait un mouvement a gauche, pareil pour la touche « d », sauf que le mouvement est vers la droite Par la suite, nous avons decidé d’enlever cette idée de saut, pour pouvoir a la fin avoir un jeux bien finis, meme si les personnages ne peuvent pas sauter, sur un des personnages, nous avons mis une alternative qui est une sorte de tp (teleportation) ; qui lui permet de traverser l’adversaire. Ici j’appui plusieurs foit de suite sur la touche « d » pour aller vers la droite QUENTIN NIVELAIS 5 STICK FIGHTER CREATION DES HITBOX Apres ça, j’ai commencé à regarder pour les hitbox (zone de collision des personnage), en utilisant le plugin box2D sous processing, la librairie qui est très complexe, j’ai regardé 3 tutoriels en anglais de l’auteur daniel shiffman pour comprendre son fonctionnement, en fait, pour utiliser correctement cette librairie, il faut créer un monde, dans lequel on génère des particules, sur chaque particule on associe un corps, sur ces corps on en associe un objet qui peut bouger, ou pas, et sur ces objets, on indique si l’on veut écouter les collisions de hitbox, et après avoir générer tout cela, on affiche la texture qui se rajoute par-dessus le corps (au mêmes coordonnées). Dans notre cas nous affichons les particules pour faire des tests, mais dans le programme final, les particules ne seront pas affichées. Voici un algorithme qui explique en bref le fonctionnement d’une particule. Voici ce que cela donne dans le code « pur », pour simplifier la compréhension j’ai mis en commentaire les blocs de l’algorithme. QUENTIN NIVELAIS 6 STICK FIGHTER LES COLLISIONS Ici un aperçu des collisions, quand les deux carrés se touchent un des deux carrés devient bleu, et l’autre devient rouge. Quand il y a de nouveau une collision le carré rouge devient vert. Voici un algorithme simplifié des actions effectuées lors d’une collision. QUENTIN NIVELAIS 7 STICK FIGHTER Voici ce que cela donne dans le code « pur », pour simplifier la compréhension j’ai mis en commentaire les blocs de l’algorithme. Yoan a donc eu l’ide de générer une particule (avec le corps etc…) a chaque coup, en fonction de la position du personnage, sur les membres qui vont attaquer ; par exemple, lors d’un coup de poing, on génère une hitbox sur le point. Vient s’ajouter à cela une sorte de hitbox permanente, qui est celle du corps du personnage, et nous allons détecter si la hitbox du coup de poing, par exemple, rentre en contact avec la hitbox du corps. Si c’est deux hitbox rentrent en contact, alors il y a perte de vie chez le joueur qui est touché, puis lancement d’une macro qui va générer le recul et le son. J’ai donc fini ma partie, c’est-à-dire que je me suis occupé de la gestion des personnages (déplacement), de la gestion des collisions (à l’aide de Box2D) et de trouver des librairies (comme Box2D). CONCLUSION Pour conclure, je dirais que ce projet ma apporter dans l’esprit de groupe, que ce soit de la répartition des tâches, a la mise en commun final. J’aurais préférée être libre dans le choix du logiciel de programmation, car nous avons ressenti très vite les contrainte de processing, malgré cela, ça m’a permis de m’améliorer en programmation (en Java simplifier). Par manque de temps je n’ai pas pu faire un algorithme présentant le fonctionnement du projet final, il sera dans le diaporama lors de la présentation. QUENTIN NIVELAIS 8