Hiota

Quel build choisir … pour ses ennemis ?

Hiota est un Rogue-lite de combat où vous incarnez le héros éponyme qui doit descendre dans une abîme pour retrouver ses souvenirs. A chacune de ses descentes, les ennemis sur son chemin deviennent de plus en plus puissants.

Voici le lien du Git du projet pour plus d’informations.

D’un point de vue plus pragmatique, la partie Rogue-lite prend le contrepied de nos références : ce n’est pas notre personnages qu’on modifie au fil de notre descente mais les ennemis.
En effet, à chaque combat remporté, une stèle apparait au joueur et lui propose deux cartes qui vont légèrement (ou pas) changer certains traits des ennemis : vitesse de déplacement, dégâts d’attaques etc …

Chaque carte a à la fois un côté bonus et un côté malus.

Comment qu’on joue ?

Du côté des 3Cs (Camera, Controls, Charater), ça parlera à tous les aficionados des Dark Souls et Elden Ring. On retrouve le duo Caméra Libre ou Caméra Focus sur un ennemi.

La Caméra Libre tourne autour du personnage.
La Caméra focus permet de centrer l’intérêt sur un ennemi.

Au niveau des Contrôles, on récupère notre référence à From Software. Chaque doigt placé sur la manette est responsable d’une action (Ex : Index droit sur l’attaque). Ceci permet une prise en main plus rapide.
Le but étant que les inputs facilitent ladite prise en main.

Pour ce qui est du personnage (Hiota), on voulait quelque chose de simple à comprendre mais difficile à maitriser.
Pour ça, Hiota ne peux faire que 3 actions (voir plus si utilisées dans certains contextes) :
Garder des attaques pour absorber une partie des dégâts.
Esquiver dans toutes les directions pour éviter de manger des mandales.
Attaquer et ainsi rendre la monnaie de leurs pièces aux vilains.

L’attaque unique de Hiota
Dash de Hiota
Bouclier anti-mandale de Hiota

Tout au long de l’année, mon plus gros challenge a été de travailler le comportement et les mécaniques de Hiota.
On voulait quelque chose de flexible et d’utilisable que ce soit sur Hiota ou sur un ennemi qui reprendrait peu ou proue les mêmes comportements.
En plus de ça, l’idée était d’avoir quelque chose de facilement séquençable pour pouvoir ajouter des effets à des actions très précises du personnage (Ex : ajouter une explosion à la fin d’une esquive).

J’ai donc choisi de coder une State Machine (ou Machine d’état dans la langue de MC Solaar).
Elle devait répondre aux problématiques suivantes :
– Pouvoir la maintenir tout au long du développement sans réécrire ce qui a déjà été fait auparavant.
Flexible avec toutes les nouvelles mécaniques à tester.

Dans le script Controller_FSM, on va donc jouer différents States (sous la forme de scriptables objects).
Tous ces states se présentent de la manière suivante :

Exemple de State

En plus de ça, chaque State possède différentes Actions (des bouts de codes réutilisables entre plusieurs entités).

Exemple de State
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[CreateAssetMenu(menuName = "PluggableStateMachine/Actions/Player/ATT_SetCurrentAttack_Action")]
public class ATT_SetCurrentAttackStats : Action_SO
{
    private AttackStats_SO currentAttackStats;
    public enum AttackChosen {AT_Basic, CA_Front, CA_Side, CA_Back, CA_Parry }
    public AttackChosen attackChosen;
    public override void Act(Controller_FSM controller)
    {
        switch(attackChosen)
        {
            case AttackChosen.AT_Basic:
                currentAttackStats = controller.charSpecs.BasicAttackStats;
                break;
            case AttackChosen.CA_Front:
                currentAttackStats = controller.charSpecs.FrontAttackStats;
                break;
            case AttackChosen.CA_Side:
                currentAttackStats = controller.charSpecs.SideAttackStats;
                break;
            case AttackChosen.CA_Back:
                currentAttackStats = controller.charSpecs.BackAttackStats;
                break;
            case AttackChosen.CA_Parry:
                currentAttackStats = controller.charSpecs.ParryAttackStats;
                break;
        }
        base.SetCurrentAttackStats(controller, currentAttackStats);
    }
}

Voici le lien du Git du projet pour plus d’informations.

Merci de m’avoir scrollé jusqu’au bout !

Genre de jeu :

Rogue-Lite de Combat

Moteur :

Unity 2019

Durée du projet :

6 Mois

Plateforme visée :

PC

Contrôleurs visés :

Manettes, Clavier & Souris

Public Cible :

Joueurs cherchant Difficulté et Rejouabilité