
Projet fil rouge Gtech · 4 personnes
Etheria’s End
Une aventure entre les îles flottantes, avec un grappin pour les rejoindre et quelques créatures sur le chemin. Nous l’avons développée à quatre sur Unreal Engine.
- Mon rôle
- Co-lead · IA & systèmes C++
- Format
- PC · Solo · Action-RPG
- État du projet
- Démo jouable
- Technologies
01Le projet
Une aventure que nous avons construite à quatre.
Dans Etheria, on suit Kael, parti sauver son amie d’enfance Maelys. Pour traverser les îles flottantes, on utilise un grappin, un planeur et les colonnes de vent que l’on croise en chemin.
C’est notre projet fil rouge à Gtech. Nous avons réalisé une démo qui se joue du début à la fin, avec une introduction, un village, une quête, des combats et un donjon. De mon côté, j’ai surtout travaillé sur les IA et les systèmes C++, avec aussi du game design et du sound design.
Comment on joue
- 01
Explorer
Grimper, se balancer et planer entre les îles.
- 02
Résoudre
Aborder des énigmes à plusieurs solutions.
- 03
Affronter
Lire le danger et choisir le bon moment.
- 04
Se reposer
Se soigner et sauvegarder au feu de camp.
02Mon travail
Ce que j’ai développé sur Etheria.
J’étais co-lead sur le projet. J’ai travaillé sur les IA et les systèmes C++, tout en participant au game design et au sound design.
Comportements des ennemis
J’ai travaillé sur les différents états des ennemis : ils peuvent dormir, patrouiller, poursuivre le joueur ou combattre. Leur comportement change aussi la façon dont on découvre le monde, avec des créatures plus tranquilles au début et plus agressives dans les zones dangereuses.
Des créatures qui arrivent à destination
J’ai travaillé sur les déplacements avec le NavMesh et l’évitement RVO. Lorsqu’une créature se retrouve bloquée, le système détecte le problème et recalcule un chemin. C’est le genre de détail peu visible quand tout marche, mais très visible quand il manque.
Co-lead, game design et son
Mon rôle de co-lead m’amenait aussi à participer aux choix de game design et au sound design. J’aime pouvoir passer du comportement d’une créature à ce que le joueur voit et entend, plutôt que m’arrêter à une seule partie du jeu.
03Sous le capot
L’ennemi qui ne voulait plus se réveiller.
Pour économiser des mises à jour, nous désactivions le Tick des ennemis endormis. Sauf que le réveil dépendait lui aussi du Tick. L’ennemi s’endormait donc très bien, mais la suite se faisait attendre.
Les états de l’IA
À explorerLaisser dormir sans perdre le réveil.
L’ennemi arrête sa logique exécutée à chaque image. Des timers continuent à vérifier s’il doit se réveiller, indépendamment du Tick.
FTimerManagerAttendre que le personnage soit prêt.
OnPossess pouvait arriver avant le BeginPlay du personnage. Nous avons décalé le lancement de la patrouille pour laisser l’initialisation se terminer.
OnPossess → initialisation → patrouilleTrouver son chemin, même après un blocage.
Le NavMesh sert à calculer les déplacements et le RVO aide les créatures à s’éviter. Si l’une d’elles se bloque, son chemin est recalculé.
NavMesh / RVO / replanificationBrancher les réactions du jeu.
Les événements permettent de connecter les quêtes et les effets au comportement. À la mort d’une créature, un montage est suivi d’un effet Niagara, puis de sa dissolution.
Event DispatchersClique sur un état pour voir comment il fonctionne.
Comment le code est organisé
- BaseAIController
- Décisions et navigation
- BaseAICharacter
- Base commune aux créatures
- AIMovementComponent
- Déplacement et évitement
- AIAnimationComponent
- Lisibilité du mouvement
Le C++ porte la logique du jeu. Les Blueprints servent à la régler et à l’intégrer. Les interfaces et les Event Dispatchers permettent aux systèmes de communiquer.
Quelques choix de développement
Le réveil était dans le Tick désactivé
La dormance désactivait le Tick qui surveillait lui-même les conditions de réveil.
Nous avons déplacé la surveillance vers FTimerManager. L’ennemi peut arrêter ses mises à jour tout en gardant une façon de se réveiller.
La patrouille démarrait trop tôt
OnPossess pouvait arriver avant le BeginPlay du personnage possédé.
Nous avons différé son départ pour attendre la fin de l’initialisation. Le problème venait de l’ordre des événements, pas du chemin que l’ennemi essayait de suivre.
04En images
Le projet, à l’écran.
5 visuelsCliquer pour agrandir ↗
Quelques images de notre démo. Le grappin et le planeur font partie du travail de l’équipe. Les réglages des IA montrent plus directement la partie sur laquelle j’ai travaillé.
Dans les îles
Un aperçu du monde que l’on parcourt avec Kael.
Une rencontre un peu moins paisible
Les créatures et leurs comportements pendant un combat.
Le grappin
Pour rejoindre les ruines, prendre de l’élan et trouver un autre chemin.
Un peu de hauteur
Le planeur et les colonnes de vent permettent de passer d’une île à l’autre.
Les réglages des IA
Hostilité, comportement et navigation peuvent être ajustés dans l’éditeur.
Vidéo à venirUne traversée d’Etheria
Un extrait de la démo viendra bientôt compléter ces images.
05Bilan & équipe
Une démo terminée, et encore des idées pour la suite.
Nous sommes arrivés à une démo jouable de bout en bout. Tout ce que nous avions imaginé n’y est pas entré, notamment le boss Golem. Nous avons préféré terminer correctement le parcours déjà en place.
Ce qui est en place
- Une base C++ organisée en composants.
- Des ennemis avec dormance, navigation et combat.
- Un parcours reliant exploration, quête, énigme et donjon.
Où en est le projet
- Le Golem a été repoussé pour garder du temps sur le reste de la démo.
- Le combat et la progression méritent encore de l’équilibrage.
- Pour la suite : plus d’énigmes, de donjons et des builds automatisés plus tôt.
Un parcours complet testé dans une vraie build apprend beaucoup plus qu’une longue liste de fonctionnalités encore séparées.
L’équipe
- Léo Queiros Da Silva
- Co-lead · IA, systèmes C++, game design & sound design
- Shailendra Blondel
- Lead · Architecture & systèmes C++
- Mathias Rebecca
- Co-lead · Narration, level design & cinématiques
- Maurad Bahri
- Développement · VFX, UI & UX
Envie de parler de ce projet ?
On en parle
