J'ai développé ce prototype de platform-fighter à l'aide d'Unity dans le cadre du cours d'atelier de spécialisation à L'UQAT. Mon objectif avec la création de ce prototype était d'explorer la complexité mathématique derrière ce genre de jeu. Complexité que je comprenais intuitivement en temps que joueur, mais qui soulève plusieurs questions et enjeux en temps que designer et développeur. Au terme de cet exercice, mon prototype était jouable localement en multijoueur.      
Animation et Frame Data
L'un des premiers facteurs mathématiques a prendre en compte en développant un jeu de combat est la frame data, puisque la jouabilité et l'équilibre de l'expérience dépendent de la vitesse des animations. 
N'étant ni un artiste ni un animateur, je me suis tourné vers la rotoscopie afin d'avoir des animations claire et lisible. Cependant, ce type d'animation nécessitait des ajustements une fois dans le moteur de jeu, car l'animation devait être assez rapide pour que le personnage semble réactif malgré le nombre conséquent de frames qu'il fallait pour une animation fluide.  
Un autre problème lié avec l'animation était le nombre d'animations différentes qui devait être géré pour un seul et même personnage. Je me suis facilité la tâche en changeant les animations directement dans le code, mais la quantité d'interactions et de transitions possibles entre les animations fait en sortes que le système peut avoir de la difficulté à comprendre quand commencer/arrêter certaines animations résultant en de petits bogues visuels. 

 

Contrôles et Mécaniques
Pour gérer les contrôles, j'ai utilisé le "nouveau" système d'input de Unity. Ce système c'est avérer très utile dans la création d'un platform fighter, car il permettait d'obtenir facilement des informations quant à la position et la vitesse des joystick, en plus de permettre une implémentation très facile du multijoueur.
La plupart des mécaniques étaient inspirées des jeux de la série Super Smash Bros. Si je considère avoir bien réussi à implémenter certains systèmes, notamment le système d'éjection, d'autre, plus complexe, ou moins nécessaire pour mon prototype, sont, à mon avis, trop simplistes ou laissent à désirer. 
Par, exemple, les deux points sur lequel j'aimerais retravailler sont les collisions et la physique. En effet, les collisions étaient assez grossières, surtout en ce qui concerne la hurtbox du personnage (voir image). Pour ce qui est de la physique, elle était complètement prise en charge dans le code, et non pas simulée par le moteur de jeu. Le personnage est donc très flottant, et ne semble pas être restreint par la gravité.  
Mise a jour 2024
J'ai recommencé à travailler sur ce projet plus d'un an après l'avoir commencé, car j'avais envie de me refamiliariser avec Unity et la programmation en C#. Les premiers points que j'ai retravaillés sont ceux que je décrivais à l'époque comme des lacunes : la physique et les collisions. 
Premièrement, bien que la physique du personnage soit encore "hardcoded" j'ai ajouté des fonctions qui permettent de calculer l'accélération lorsque le personnage tombe ou change de direction dans les airs. Cela fait en sorte que le poids et la physicalité du personnage soient plus palpables. Pour ce qui est des collisions, j'ai remplacé l'unique collider qui entourait tout le personnage par une multitude de colliders qui suivent les mouvements du personnage (voir vidéo).   
Nouvelles mecaniques
En plus des changements à la physique et aux collisions, j'ai aussi beaucoup amélioré le character controller dans son ensemble. Il a désormais un éventail de coup complet et j'ai aussi implémenté une mécanique lui permettant de s'accrocher au bord du terrain (voir vidéo). De plus, ce prototype compte désormais deux nouveaux modes de jeu. En plus du mode joueur contre joueur, j'ai créé un niveau de "target practice" ou le joueur peut s'entrainer en détruisant des cibles qui appariassent de manières aléatoires sur le terrain. J'ai aussi créé un niveau qui s'inspirer du mode "target test" de Super Smash Bros.

Autres travaux

Back to Top