Junkraft



Genre : Shoot Them Up

Role : Game-Designer / Level Designer / (Programmation)

Durée du projet : 1 mois


Junkraft est un SHMUP en 2.5D dans une ville post-apocalyptique ensablée.
On y controle une junk volante que l'on peut améliorer grace aux armes des ennemis. throughout all the game with your enemies weapons.
Cependant, plus vous serez gros, plus vous serez lourds et plus facilement vous serez touché !

Télécharger le jeu


Mon travail

Dans le cadre de ce projet, j'ai travaillé en binome avec un autre GD sur un genre que je découvrait : le SHMUP. Nous avons dans un premier temps mis au point la vision du projet : le pitch mettait en avant le chaos et le mouvement. C'est à partir de ces deux mots clés que nous avons développé le Game-Design.

Level Design

Nous avons divisé le travail du level-design en deux parties. Mon binome se chargeait de l'introduction visant à apprendre au joueur les comportements des ennemis, des armes et de son vaisseau. Pour ma part, j'ai travaillé sur l'exploitation des mécaniques pour créer une difficulté progressive.

J'ai tenté au travers de patterns et d'ennemis de créer des situations de balancements dynamiques entre gain


Design & Programmation


En terme de programmation, je me suis chargé d'ajouter des features que j'avais imaginées dans le but de régler des problèmes de Level-Design ou de Game-Design auxquels j'étais confronté.

Salves

J'ai ajouté le paramétrage de salves sur les ennemis. En effet, avant cela nous ne pouvions paramétrer uniquement que le temps entre chaque tir d'un canon. J'ai donc ajouté cette fonctionnalité permettant de choisir le nombre de tir dans une salve ainsi que le temps d'attente entre chaque salve. Ceci permit également d'instaurer une progression dans le level-design puisque ces canons une fois ramassés perdent leur limitation de salves mais en revanche conservent leur cadence de tir plus élevée.

Limitation d'ennemis

Notre système de spawn d'ennemis fonctionne par zone de trigger positionnées sur la carte défilant à une vitesse constante. Par conséquent nous nous retrouvions face à un problème lorsque des ennemis continuaient d'apparaitre malgré le joueur en difficulté. C'est pourquoi j'ai implémenté une limitation d'ennemis à l'écran paramétrable pour chaque vague de spawn. Ceci eut deux effets : premièrement le joueur ne pouvait plus être bloqué par une quantité ahurissante d'ennemis et deuxièmement: notre système de scoring récompense alors les joueurs parvenant à tuer les ennemis suffisament rapidement pour faire apparaitre la totalité des ennemis.

Equilibrage et Balancement

Nous nous retrouvions face à un problème d'équilibrage avec le système d'ajout constant de modules : ralentir le vaisseau ne suffisait pas pour véritablement empêcher un joueur de tout attraper sur son passage. Eventuellement, chaque joueur se retrouvait avec un vaisseau énorme et tirait tant de projectile que les ennemis ne pouvaient l'endommager suffisament.

J'ai alors pensé à un système de frame d'invulnérabilité dynamique : lorsque le joueur dispose de 1 à 6 modules, il sera protégé pendant 1.5 secondes lors d'un dégat. A mesure qu'il ammasse plus de modules, ce temps d'invulnérabilité diminue progressivement jusqu'à être presque nul. Ainsi, un joueur équipé d'une vingtaine de modules lorsqu'il est touché par un laser perdra presque instantanément 5 à 6 modules.

Ce sytème crée cet effet de balancement dans le jeu entre ajout et perte d'armes qui participe au ressenti dramatique.

Barres de vie

J'ai ajouté une barre de vie dynamique à l'apparition du boss de fin du jeu dans le but de créer une tension à son arrivée et de motiver le jouer à recommencer s'il échouait lors du combat.
En plus de cela, j'ai également ajouté une indication dynamique des points de vie des ennemis au travers de la couleur de voile de ceux-ci. Plus la couleur est foncée, plus l'ennemi possède de points de vie. A mesure qu'ils prennent des dégats, la couleur se rapproche progressivement du blanc.