Fuse
Concept
Fuse is a puzzle game where the player switches between two characters to solve challenges and uncover a deep, personal story. One relies on stealth and distractions, while the other is fast, jumps high, and glides across distances. Coordinating their abilities is key to progression.
2024
9 people
Ongoing


Key Contribution - Enemy AI
1. Behavior Tree: Used Behavior Trees with decorators to manage state transitions, allowing reactions to perception changes.
2. Detection: Set up AI Perception for visual and auditory detection, triggering investigation and chase behaviors.
3. EQS System: Used the EQS system to make enemies search around corners.
Behavior Tree
I built the AI using Unreal's Behavior Trees, where state transitions are managed through decorators checking if blackboard keys are set or not. This allows the tree to react dynamically to perception changes, such as losing sight of the target or detecting noise.
Sight & Sound Detection
For detection I used the AI Perception component which allowed me to setup different logic for visual detection of player and noise hearing. When a noise is sensed within the hearing range, they will move there to investigate, then go back to paroling.

When the player is spotted, the enemy follows them until line of sight is lost, then moves to the last seen location. Using the Environmental Query System (EQS), the enemy searches around corners by identifying reachable, occluded locations and selecting the closest one. To reduce predictability, it randomly selects one point from the top 5% of hits.
Noise only triggers the investigate state if the player is out of sight, preventing distractions while the enemy is already chasing the player.

Enemy AI controller (with AIPerception component)

AI controller handle sight sense
AI controller handle sound sense
Patrol Spline
I designed a spline system to let team members easily add enemies and customize patrol routes. If an enemy should roam randomly, designers just leave the patrol spline reference empty for that enemy.

Patrol spline actor
Patrol spline behavior tree task
Enemy Sounds
The sound of the enemy has three stages of intensity corresponding to Idle, investigating and chasing player. I use an enum to represent these states, set through a Behavior Tree task. The task sends the enum to the enemy, triggering an event that updates the MetaSound to match the current state.
Behavior Task to switch state sound

Sound switching in enemy actor
Reflections
This project gave me the chance to dive deeper into stealth mechanics for enemy AI. I had tried implementing a last known location before but struggled. With more experience in the engine, I was able to create a more dynamic and customizable AI behavior.
Using decorators to check if blackboard keys are set was a powerful tool, and I’ll definitely use this in the future. The EQS system, which I have used a few times now, also improved enemy behavior. This added tension, as hiding spots could become the next area the enemy targets.
I’m excited to keep improving both the design and functionality.