Project 01 09
Etheria character in front of a forest and floating islands

Gtech capstone project · 4 people

Etheria’s End

An adventure across floating islands, with a grappling hook to reach them and a few creatures along the way. The four of us built it in Unreal Engine.

My role
Co-lead · AI and C++ systems
Format
PC · Single player · Action RPG
Project status
Playable demo
Technologies
Unreal Engine 5.6C++BlueprintsAI

01The project

An adventure built by the four of us.

In Etheria, we follow Kael as he sets out to save his childhood friend Maelys. To cross the floating islands, we use a grappling hook, a glider and the wind columns we find along the way.

This was our capstone project at Gtech. We made a demo you can play from start to finish, with an introduction, a village, a quest, combat and a dungeon. I mainly worked on the AI and C++ systems, alongside some game design and sound design.

How you play

  1. 01

    Explore

    Climb, swing and glide between islands.

  2. 02

    Solve

    Find your own way through puzzles with several solutions.

  3. 03

    Fight

    Read the danger and pick your moment.

  4. 04

    Rest

    Heal and save at a campfire.

02My work

What I built for Etheria.

I was a co-lead on the project. I worked on the AI and C++ systems, and also contributed to game design and sound design.

01

Enemy behaviours

I worked on the different enemy states: sleeping, patrolling, chasing the player and fighting. Their behaviour also shapes how you discover the world, with calmer creatures early on and more aggressive ones in dangerous areas.

  • AI
  • C++
  • Behaviour states
02

Creatures that reach their destination

I worked on movement using NavMesh and RVO avoidance. When a creature gets stuck, the system detects the problem and calculates a new path. It is the kind of detail you barely notice when it works, and really notice when it is missing.

  • NavMesh
  • RVO
  • Path recovery
03

Co-lead, game design and sound

Being a co-lead also meant helping with game design decisions and sound design. I like moving from how a creature behaves to what the player sees and hears, rather than working on just one part of a game.

  • Co-lead
  • Game design
  • Sound design

03Under the hood

The enemy that would not wake up.

To save updates, we disabled Tick on sleeping enemies. Except waking up also depended on Tick. The enemy fell asleep just fine, but then kept us waiting.

AI states

Take a closer look

Let it sleep without losing the wake-up call.

The enemy stops running its per-frame logic. Timers keep checking whether it should wake up, independently of Tick.

FTimerManager

Select a state to see how it works.

How the code is organised

BaseAIController
Decisions and navigation
BaseAICharacter
Shared creature base
AIMovementComponent
Movement and avoidance
AIAnimationComponent
Readable movement

C++ handles the game logic. Blueprints let us tune it and put it into the game. Interfaces and Event Dispatchers allow the systems to communicate.

Some development choices

Waking up relied on the disabled Tick

The starting point

Sleeping disabled the very Tick that checked the wake-up conditions.

What we did

We moved those checks to FTimerManager. The enemy can stop updating while still having a way to wake up.

The patrol started too early

The starting point

OnPossess could run before the possessed character’s BeginPlay.

What we did

We delayed it until initialisation had finished. The problem was the order of events, rather than the path the enemy was trying to follow.

04In pictures

A few images from our demo. The grappling hook and glider are part of the team’s work. The AI settings show more directly the part I worked on.

Etheria character in front of a forest and floating islandsVideo coming soon

A journey through Etheria

A clip from the demo will join these images soon.

05Outcome and team

A finished demo, with more ideas for later.

We completed a demo that is playable from start to finish. Not everything we imagined made it in, including the Golem boss. We chose to finish the existing route properly first.

What is in place

  • A component-based C++ foundation.
  • Enemies with sleeping, navigation and combat behaviours.
  • A playable route connecting exploration, a quest, a puzzle and a dungeon.

Where the project stands

  • We postponed the Golem to leave time for the rest of the demo.
  • Combat and progression still need balancing.
  • For later: more puzzles and dungeons, and automated builds earlier in development.
What I take away from it

We finished a demo that you can play from beginning to end. That let us see what really worked once all the systems came together.

The team

Léo Queiros Da Silva
Co-lead · AI, C++ systems, game design and sound design
Shailendra Blondel
Lead · Architecture and C++ systems
Mathias Rebecca
Co-lead · Narrative, level design and cinematics
Maurad Bahri
Development · VFX, UI and UX

Want to talk about this project?

Let’s talk