Sofiane KaciSpells ConquestGenre Métroidvania 3DMoteur UnityLangage C#Rôles Gameplay Programmer Game Design VFX ArtistSpells Conquest est un Metroidvania en 3D où l'on incarne une créature dépourvue de pouvoirs magiques à la recherche de sorts disparus. Elle devra alors les récupérer en éliminant les ennemis qui lui barrent la route, tout en explorant, grâce à ses pouvoirs combinés entre eux, différentes zones auparavant inaccessibles.
Spells Conquest est le projet de fin d'études réalisé au cours de ma 5ème année au sein de l'école ECV Lille, comptant une équipe de 4 personnes. Gameplay Programmation ContrôlesSpells Conquest optimalement pensé pour une utilisation à la manette, j'ai opté pour l'utilisation du New Input System d'Unity afin de régler le problème de compatibilité des différentes manettes, ainsi que pour proposer une adaptation au clavier/souris pour les joueurs n'en disposant pas.Input ManetteInput ClavierUtilisation du New Input System avec mise en place de plusieurs Action Maps afin de différencier les touches lorsque le joueur est en jeu ou dans les différents menus.Détection du ControllerUn moyen de détecter le Controller actif a été mis en place afin de pouvoir afficher sur l'écran les bons Inputs, selon le modèle de manette que le joueur utilise, ou bien s'il utilise le clavier.Script permettant la détection du Controller actifL'affichage des Inputs à l'écran diffère selon le Controller utilisé (PlayStation, Xbox ou clavier).Changement automatique de l'affichage des Inputs lorsque le joueur branche une manette3CLe jeu possède un viseur à la 3ème personne, il permet également de passer à tout moment dans un mode de verrouillage des ennemis lorsque ceux-ci sont à portés du joueur, simplifiant ainsi la visée pour les joueurs moins confirmés.Passage de la vue libre au mode de verrouillage des ennemisLe personnage ne suit l'orientation de la caméra uniquement lorsque le joueur se déplace, permettant une simplification du travail des animateurs, ainsi qu'une meilleure visualisation générale du personnage.3C - Contrôles du personnageSortsLe joueur dispose de sorts qu'il doit débloquer lors de son exploration, chaque sort permet de résoudre des énigmes environnementales afin de débloquer de nouveaux passages, et possède une utilisation distincte lors des combat.Chaque sort permet une utilisation classique et une utilisation alternative, lorsque le joueur maintient la touche de tir enfoncée.AuraL'aura est un sort possédé depuis le commencement du jeu, elle a une fonction plutôt utilitaire et permet principalement, en scannant autour du personnage, d'ouvrir des portes importantes, et d'intéragir avec l'environnement afin de récupérer les prochains sorts, ainsi que de la monnaie répartie dans tout le niveau.AuraBoule de feuLa boule de feu est un projectile permettant d'infliger de lourd dégâts, brûler des obstacles ou intéragir avec des éléments distant.
C'est un projectile qui se dirige en ligne droite depuis le joueur, mais son utilisation alternative permet de la diriger dans les airs, à l'aide de la position du curseur. Boule de feuBouclier de feuLe bouclier de feu est un bouclier se positionnant autour du joueur, se dirigeant en ligne droite, il permet de se protéger des projectiles ennemis, de brûler des obstacles ainsi que traverser des zones de lave.
L'utilisation alternative empêche le bouclier d'avancer et protège le joueur sur une position définie.Bouclier de feuSort de télékinésieLe sort de télékinésie se pose à une surface distante, il attire les ennemis et certains objets vers son centre.
Son utilisation alternative permet à la place, d'attirer directement le joueur vers sa position.TélékinésieTélékinésie alternativeEnnemisDifférents patterns d'ennemis ont été développés mais pas intégrés au jeu final en vue d'une réduction du scope du projet, comprenant parmis eux un ennemi tirant des lasers et se protégeant lorsqu'il ne tire pas, en attaquant le joueur sous forme de dash, avec pour seul point faible son dos...BasiqueUn ennemi simple qui suit le joueur une fois détecté, une fois à portée, il enchaîne les attaques jusqu'à ce que le joueur s'éloigne ou meurt.Ennemi basiqueTourelleUne fois à portée de celui-ci, l'ennemi s'oriente en direction du joueur et lance des projectiles en ligne droite à intervals réguliers.Ennemi tourelleChangement dynamique de valeursJ'ai pu utiliser des fonctions comme le Lerp afin de changer des valeurs de manière progressive permettant de changer naturellement les objets de couleur en modifiant les valeurs de shaders dynamiquement (comme l'UI), ou des valeurs de paramètres provenant de l'animator de personnages afin de changer dynamiquement l'animation qui se joue selon l'état des personnages.Réaction entre Aura et CristauxRéaction entre Boule de feu et RacineIntégration du sonMusiqueNous avons décidé d'utiliser pour la musique du jeu le logiciel FMOD, avec son package pour Unity présent dans l'Asset Store afin de pouvoir créer différents layers et les changer dynamiquement depuis un script pour modifier la musique globale lorsque le joueur rentre en mode combat, ou lorsqu'il s'approche de la mort.Gestion du layering de FMOD via un custom scriptSound DesignLes sons du jeu sont simplement appelés par code à l'aide d'Audio Sources, un Scripatable Object a été pensé pour les sons comme les bruits de pas afin de jouer de manière aléatoire un des sons de la liste lorsque la fonction est appelée.
Certains sons utilisent les Events d'animation afin de pouvoir se jouer en fonction des animations des personnages.Scriptable Object permettant la lecture aléatoire parmis plusieurs sons ayant un volume et pitch aléatoire compris entre 2 valeursMarchandLorsqu'on intéragit avec le marchand, une interface apparait, laissant l'opportunité au joueur d'acheter, s'il le peut, les utilisations alternatives des différents sorts, ainsi que des bonus de dégâts et de vie qu'il concerve indéfiniment.MarchandTélécharger