Exoria

Jeu d’action-aventure en 3D à la troisième personne développé sous Unreal Engine 5 en 2025


0:00
0:00

Langage :

Blueprint

Rôles :

Chargé de toute la programmation, Game

Designer, Level Designer

Durée :

Projet sur 9 semaines

Equipe :

Équipe de 3 personnes

Concept :

Exoria plonge le joueur dans les terres déchues d’Éartsepia, ravagées par des siècles de guerre.

Vous incarnez un guerrier du Haut-Ordre, envoyé récupérer Exoria, l’épée légendaire capable de mettre fin au conflit.

Jeu d’action-aventure 3D, Exoria mêle exploration, énigmes et combat rapproché autour d’une mécanique centrale : le grappin.

Véritable extension du personnage, il permet de traverser des environnements verticaux, d’activer des mécanismes et d’aronter les ennemis en manipulant distance, position et défenses.

L’expérience mise avant tout sur la mobilité, la fluidité et le contrôle, pour offrir une aventure rythmée, immersive et techniquement maîtrisée.


Personnage Jouable - Core Gameplay

Exoria repose sur un character controller third-person entièrement pensé pour le game feel : réactivité, lisibilité et fluidité, que ce soit à la manette ou au clavier-souris.

L’ensemble du comportement du personnage est orchestré via plusieurs state machines modulaires que j’ai développées, permettant de gérer précisément les transitions d’état.

{{brizy_dc_image_alt imageSrc=

Déplacement & Contrôle :

Le joueur peut marcher et sprinter.

En sprint, il ne peut plus attaquer : son arme est automatiquement rangée.

Grâce à une architecture de state machines, j’ai pu contrôler précisément les actions autorisées selon l’état du personnage et garantir des transitions toujours naturelles.

Si le joueur attaque durant un sprint, le personnage dégaineautomatiquement et enchaîne l’attaque : aucune action n’est jamais “perdue”, évitant toute frustration d’input et renforçant la fluidité du gameplay.

Après plusieurs playtests, les joueurs manette avaient du mal à gérer déplacement + caméra simultanément.

J’ai donc ajouté un auto-alignement caméra lerp : lorsque le joueur se déplace sans input caméra pendant un court délai, la caméra se replaceautomatiquement derrière le personnage.

Roulade (Dodge) :

La roulade est une mécanique essentielle du gameplay d’Exoria.

Elle utilise une animation dédiée + root motion et permet d’esquiver des attaques ennemies grâces a des I-Frames gérées en Animation Notifies.

{{brizy_dc_image_alt imageSrc=

Interactions Coffres :

Pour encourager l’exploration, le monde d’Exoria contient plusieurs cores interactifs.

Lorsqu’ils sont ouverts, ils récompensent le joueur avec des fragments de vie. 3 fragments = augmentation permanente de la barre de vie.

Techniquement, le système repose sur une interface BPI_Interactables implémentée sur tous les objets interactifs.

À chaque input d’interaction, un sphere trace détecte les acteurs utilisant cette interface, puis leur envoie automatiquement la demande d’interaction.

{{brizy_dc_image_alt imageSrc=

Système d’attaques :

Le système d’attaque d’Exoria repose sur des combos fluides, du motion warping et un auto-target discret pour rendre les combats dynamiques et accessibles.

Cela évite les attaques “dans le vide” et renforce fortement la sensation d’impact.

Les attaques sont enchaînables grâce à 4 animations d’attaques légères, combinées en combo via des Montages et des Animation Notifies.

Entre chaque coup, le joueur peut ajuster la rotation de son personnage, ce qui rend les enchaînements plus naturels et réactifs.


Interactions Environnementales :

Objets cassables :

Certaines barrières et mécanismes peuvent être détruits d’un coup d’épée pour débloquer de nouveaux accès, ou faire partie d’un puzzle plus large permettant d’ouvrir des portes.

Ces éléments orent au joueur une vraie sensation d’impact et d’interaction sur le monde.

Pour garder un système modulaire et cohérent, tous ces objets destructibles utilisent le même composant global BPC_DamageSystem que le joueur et les ennemis.

Cela permet de gérer dégâts, destruction et feedbacks via une architecture unifiée et facilementextensible.

{{brizy_dc_image_alt imageSrc=

Portes :

Certaines portes bloquant la progression du joueur sont reliées à plusieurs mécanismes destructibles qu’il faut briser au préalable.

Le système est entièrement modulaire : on peut ajouter autant demécanismes que nécessaire dans la liste.

Chaque mécanisme détruit envoie un event auquel la porte est abonnée.

Lorsque tous les mécanismes liés sont brisés, la porte se déverrouille automatiquement et s’ouvre.

Caisses projetables :

Ces caisses font partie intégrante de l’arsenal du joueur.

Elles sont propulsées dès que le joueur leur donne un coup, puis se déplacent dans la direction vers laquelle il regarde, en fonction de l’angle entre la caméra et le personnage.

Pendant leur trajectoire, les caisses infligent des dégâts à toutes les entités qu’elles traversent, avant de se briser à l’impact final.

En puzzle :

our détruire des barrières

En combat :

our toucher plusieurs ennemis et créer des opportunités actiques.


Ennemis : IA, Comportements & Attaques

AI Manager & Token System :

Chaque zone du jeu possède un AggroBox, un volume qui sert de manager pour tous les ennemis présents dans la salle.

Ce manager embarque un composant BPC_Tokens qui définit combien d’ennemis peuvent attaquer simultanément

Le manager possède un nombre défini de tokens d’attaque.

Chaque ennemi doit en réserver un avant d’attaquer :

Quand un ennemi souhaite attaquer, il demande un token au manager

via ReserveAttackToken :

  • Si un token est disponible, il le prend au manager et peut attaquer. Lorsque son attaque est terminée il rend le token au manager afin qu’il puisse etre utiliser par un autre ennemi.
  • SI aucun token n’est disponible : Il passe en comportement “pression”, strafe autour du joueur

Certaines attaques consomment plus de tokens que d’autres, et le manager peut en posséder un nombre variable, orant un contrôle fin de l’équilibrage et du rythme des combats.

AI Manager & Token System :

L’IA utilise un Behavior Tree modulaire organisé autour de trois états (Passive, Attack, HitReaction).

Le BT gère la détection du joueur, les déplacements, le choix d’attaque, la réservation de tokens, et les comportements contextuels.

Chaque ennemi peut étendre ou surcharger ses branches pour obtenir un comportement unique.

Ennemi Basique :

  • Se déplace en strafe autour du joueur pour maintenir la pression.
  • Possède 2 attaques légères à l'épee.
  • Fait office de chair à canon : faible résistance, grand nombre.
  • Toutes ses attaques peuvent être interrompues par les coups du joueur, encourageant l’agressivité et le contrôle.

Ennemi Bouclier :

  • Équipé d’un bouclier avec ses propres points de vie.
  • Tant que le bouclier n’est pas brisé, il bloque les attaques frontales.
  • Possède 2 attaques :

un coup de bouclier à courte portée

une charge pour foncer vers le joueur.

  • Une fois son bouclier détruit, il adopte le comportement de l’ennemi basique.

Ennemi Kamikaze :

  • Court directement vers le joueur.
  • Lorsqu’il est suffisamment proche, il déclenche une explosion diérée.
  • L’explosion inflige des dégâts en zone et détruit l’ennemi.

Grappin – Système de mobilité & interactions

Système principal & logique du grappin :

Le grappin est l’une des mécaniques centrales d’Exoria.

Il permet au joueur de se déplacer rapidement dans l’environnement, d’interagir avec les puzzles à distance, et d’influencer directement le comportement des ennemis.

Le système repose sur un capsule trace envoyé du personnage vers un vecteur aligné avec la caméra.

Si le trace détecte un acteur implémentant l’interface BPI_Grab, alors un point de grappin valide est disponible.

Il est calculé sur une petite machine d’état (E_GrappleState) mise à jour :

{{brizy_dc_image_alt imageSrc=

Animations & Montage dynamique :

N’ayant pas d’animateur dédié, j’ai construit le système d’animation du

grappin en plusieurs animations compatibles :

  • Un “lancé” de boule de feu pour l’animation de tir du grappin.
  • Une animation d’attaque sautée pour l’élan du personnage
  • Une animation de pirouette pour le temps de déplacement

Ces animations sont assemblées dans un Animation Montage dynamique, dont la durée est ajustée automatiquement en fonction :

  • De la distance au point de grappin.
  • De la vitesse de déplacement calculée
  • Du timing nécessaire pour garder un mouvement fluide.

Utilisation en déplacement :

Le grappin permet au joueur de :

  • Se projeter d’un point à un autre.
  • Enchaîner plusieurs déplacements rapides.
  • Accéder à des plateformes en hauteur.
  • Contourner des zones dangereuses.

C’est un outil de mobilité avancée, pensé pour rendre l’exploration plus rapide et plus verticale.

Actions sur les ennemis :

Le grappin possède des effets uniques sur chaque type d’ennemi :

  • Ennemi basique : Le grappin ramène l’ennemi directement vers le joueur.
  • Ennemi bouclier : Le grappin brise immédiatement le bouclier, ouvrant une fenêtre d’attaque.
  • Ennemi kamikaze: Le grappin attire l’ennemi, le stun temporairement, etpermet au joueur de le renvoyer vers d’autres ennemis ou contre un mur.

Actions sur les interactions environnementales :

Le grappin sert également d’outil multi-usage dans l’exploration.

Il permet decasser des mécanismes trop éloignés du joueur, deramener

des caisses propulsables, ainsi que d’atteindre ou activer des éléments de

puzzle qui seraient inaccessibles autrement.


Système de Sauvegarde, architecture modulaire

Fonctionnement global :

Le jeu utilise un système de sauvegarde modulaire basé sur une interface (BPI_SaveGame) qui permet à chaque acteur du jeu d’exposer ses données à sauvegarder ou charger.

Chaque système (joueur, breakables, points d’intérêt, checkpoints, armes interactables, AI Manager…) implémente uniquement les fonctions dont il a besoin, ce qui rend la sauvegarde extensible et indépendante des Blueprints.

Checkpoints - Utilisation :

Lorsqu’un checkpoint est activé, le jeu récupère d’abord la GameInstance, puis appelle toutes les fonctions de sauvegarde via l’interface qui leur est dédiée. Chaque système renvoie alors sa propre struct, permettant au BP_SaveGame de mettre à jour ses différents tableaux. La sauvegarde est ensuite écrite de manière asynchrone afin d’éviter tout risque de freeze.

Ce pipeline de checkpoints permet de sauvegarder la position du joueur, l’état des mécanismes activés, les salles déjà résolues, les sons, ainsi que les cinématiques vues. Grâce à ce fonctionnement, même un rechargement complet du jeu restitue l’état exact du monde.


Essayez le jeu :

Mot de la fin :

Exoria est un projet dont je suis particulièrement fier. C’est le premier « vrai » jeu que j’ai réalisé sur Unreal Engine, et surtout le premier projet d’une telle ampleur côté programmation et gameplay.

Nous avons développé Exoria en seulement 9 semaines, à 3 personnes. Un rythme intense, un scope ambitieux, et l’envie commune d’arriver à un résultat qui dépasse ce que l’on pensait capable de produire à notre niveau.

Ce projet a été un défi permanent : construire un gameplay complet, créer des systèmes modulaires, optimiser, debugger, prototyper… Mais surtout, c’était l’occasion de traduire notre vision en un jeu jouable, cohérent, et agréable à prendre en main.

Exoria représente exactement ce que nous voulions créer : une aventure courte mais soignée, rythmée, lisible, et portée par un univers visuel fort.

C’est aussi le premier jeu que je publie sur Steam, et ça a été un vrai moment de fierté. Mettre en ligne un projet qui a demandé autant d’énergie et voir des joueurs y jouer, même modestement… ça m’a marqué.

Exoria restera mon premier « grand » projet Unreal : celui qui m’a donné envie d’aller encore plus loin.

{{brizy_dc_image_alt imageSrc=
Retour en haut