

3 février 2025
3 semaines

Barnyard Commandos: One Pork Army est un projet étudiant développé au sein de Game Sup, où les contraintes étaient de développer un jeu roguelike avec une licence de jouets oubliée des années 70. Nous nous sommes alors retrouvés avec une licence de cochons faisant la guerre contre des moutons.
Sur ce projet, j'étais Lead Tech Designer. J'étais même en fait le seul à programmer. Je me suis alors occupé de toute la programmation et d'une partie de l'implémentation des différentes éléments au sein du projet. J'étais alors libre de créer des outils pour mes collègues développeurs afin de faciliter leur travail au sein du moteur.
GÉNÉRATION PROCÉDURALE


Qui dit roguelike dit génération procédurale. Dans l'optique d'avoir quelque chose d'amusant sans que ça ne soit trop long à développer, nous avons pris la décision de faire un système qui génère des salles pré faites de manière aléatoire avec des règles.
Pour cela, j'ai commencé par créer un Scriptable Object de salle. Celui-ci contient tout simplement le nombre de sorties qu'il y a pour chaque côté de la pièce ainsi que la scène de la salle.
Ensuite, j'ai créé un Scriptable Object de paramètres de génération procédurale au sein duquel on définit les paramètres de poids de chaque salle. Plus le poids est élevé, plus la salle a de chance d'apparaître.
Afin de rendre tout cela moins redondant, nous avons également décidé d'ajouter des variations pour chaque salle. Lorsqu'une salle charge, elle définit qu'elle variation utiliser selon une valeur de difficulté. Cette valeur est définie en fonction d'à quel point le joueur joue bien selon plusieurs paramètres. Mieux le joueur joue, plus la valeur de difficulté tend vers 1.

3C
Personnage


Vu que nous avions un personnage avec un diverse panel de paramètres, j'ai pris le temps de mettre le script en page dans l'éditeur, afin que mes collègues s'y retrouvent facilement.
On remarque qu'en plus des variables, j'ai décidé d'afficher la barre de vie ainsi que le niveau de difficulté ; permettant aux designers d'avoir un meilleur aperçu de ce qu'il se passe lorsqu'ils testent le jeu.

Pour ce qui est des armes, j'ai fait le choix d'en faire des Scriptable Objects. Toutes ces informations définissent à la fois les valeurs en jeu mais aussi celles vis-à-vis de l'affichage dans les menus et le HUD.
Caméra
Nous avons travaillé la caméra de sorte que le personnage du joueur soit le plus possible au centre de l'écran et qu'il ne puisse pas en sortir. Nous voulions confiner la caméra au sein de la scène et l'avions fait, mais dû à plusieurs problèmes, nous avons dû retirer ce confinement pour le rendu final.


INTELLIGENCE ARTIFICIELLE
De la même manière que le script du joueur, j'ai mis en page l'éditeur de mes intelligences artificielles de sorte qu'il soit facile de les paramétrer.


Vu que ces ennemis avaient des comportements basiques (patrouiller, poursuivre, attaquer), j'ai décidé de faire une machine à états.
Lorsque l'ennemi apparaît, il rentre par défaut dans l'état de patrouille. Il va ensuite continuellement appeler la fonction Update() de l'état. En l'occurrence, regarder s'il a terminé son tour de garde et s'il repère le joueur. Dans le premier cas, il rentre dans l'état d'attente ; dans le second, il rentre dans l'état de poursuite.


BOSS FINAL
Je me suis beaucoup amusé à faire le boss final. J'y ai passé du temps, à la fois pour faire le système du combat ainsi que pour faire les transitions entre les phases via des cinématiques.
J'ai une fois encore travaillé le script de sorte qu'il soit simple de modifier les paramètres du boss.
Le croissant autour du boss est l'angle de tir pour son attaque où il tir plusieurs balles autour de lui. Les sphères rouges sont les emplacements et la taille des explosions qu'il peut déclencher. Les boîtes jaunes sont les emplacements des ennemis qu'il peut faire apparaître.













