Maybe we made it too tricky…
United States
Washington DC
Wednesday, May 13, 2026
Recent feedback on AI behaviour made it clear that the enemy intelligence was lacking, and we couldn’t have that.
Our testers said it wasn’t providing the fast-paced, difficult challenge they wanted experience. When we originally built the behaviours for each enemy type, we only scratched the surface of what was possible within UE5. That’s changed now.
With this update, we have completely redesigned all enemy controllers, behaviour trees, and movement logic. We also took the opportunity to rework specific attacks and defences, adding new behaviours while cleaning up legacy actions that were prone to bugs or crashes. This update focuses on sharpening enemy movement and general intelligence, pushing each unit to the limit of what they can do to stop the player.

To give a brief description of the AI controller: it’s essentially the brain that tells the enemy how to behave. By adding on the base UE5 AI controller, we can fine-tune every detail of how an enemy moves and senses the world around them.
Up until now, we’ve primarily relied on Sight Sense. This creates a vision cone extending from the front of the enemy; if the player or any designated target enters that cone, they are locked in. Once the target is acquired, the enemy can begin its specific methods of trying to destroy the player. On this update we have created a new trace channel just for the enemy sight to use, as many collisions where using the default ECC_Visibility it made sense to create one that was easier to read and configure if the editor needed to make something block enemy sight or allow it to pass through.

While we already had sight systems in place, we’ve completely reworked the ranges and angles to better detect the player at a realistic distance. This sense does most of the heavy lifting. We’ve also increased the memory of the AI; they will now remember the player for longer after losing line-of-sight, which pairs perfectly with the new investigation behaviour covered below.
As shown in the diagram, the green area represents the sight radius. However, the lines to the left and right of the enemy define the actual cone of vision. Anything behind these lines is a blind spot, giving the enemies a true eye-to-eye sense rather than letting them see through the back of their own heads.
This is brand new to the project! All enemies now have the ability to hear events within a specific radius, represented by the yellow circle in the diagram. We’ve set up triggers for whenever the player fires a weapon or uses an ability. Once an enemy picks up a sound, it stores that location (shown in the diagram) and enters an investigative state.
This sense has a much shorter memory than sight, meaning enemies can move on from a sound quickly but will react to new noises the instant they happen. For example, if a player fires an automatic weapon, every single bullet spawned will re-trigger the hearing sense, allowing the enemy to constantly update the player’s last known location.
Another new addition! To help enemies react more naturally when they are hit, we’ve added a damage sense to all enemies. This triggers whenever a weapon, projectile, ability, or throwable damages the enemy.
If an enemy is damaged and the player is within the damage radius, the AI stores the attacker’s location (shown in the diagram). This makes the enemy immediately aware of the threat; it will turn to face the attacker and enter combat mode as usual. Similar to hearing, this has a short lifespan but refreshes instantly upon taking more damage. If a player is landing hits quickly, the enemy will have near-perfect detection of which direction the fire is coming from.

While redesigning the enemy AI, we took the opportunity to clean up our original behaviour trees. They were honestly getting a bit messy, so we’ve transitioned to a much cleaner, modular system. This makes it incredibly easy to drop a specific state into any enemy and have it work instantly. We can then go into the AI controller and fine-tune the stats for each state individually.
While some of these states existed in older versions of the game, they now work much more effectively alongside one another. This results in far more coherent behaviour across all our enemy types.
The Investigate state helps enemies track the player down when they lose line-of-sight or hear an unrecognized sound nearby. If an enemy was previously tracking the player and they slip behind a wall, this state keeps the AI oriented toward that last known location and moves them toward it. This also ties directly into the hearing sense; if a sound is triggered while the player is out of view, the enemy will still move to investigate the source.
For example, if a player is firing from behind cover, the enemy will hear the shots and attempt to flank or move around the wall to find them. Blending these two senses makes the AI feel much more aware and reactive during a fight.
The Retreat state triggers when an enemy has taken too much damage and needs to cool off before re-engaging. When an enemy hits a low-health threshold, they run an EQS query to find the nearest cover. The system calculates the best spot that hides them from the player’s current location while keeping the distance short so they aren’t running across the entire room.
Once they reach a safe spot, they’ll wait a short period before attacking again. To keep things fair, we’ve added a cooldown to this state so enemies won’t infinitely retreat or spam the behaviour back-to-back.
To give enemies a better chance of dodging player projectiles, we’ve added a Strafe state that works alongside their standard attacks. Enemies will now circle the player, waiting a few seconds between movements. We’ve set specific attack and strafe radius to ensure they don’t drift too far away or get too close.
Strafing is tied to the enemy’s attack cooldown; once the cooldown is over, they transition from strafing back into an attacking state. This creates a bouncing rhythm between movement and combat. Even melee-focused enemies, like the Spiky or Mini-Crab, can now strafe while waiting for the perfect moment to charge.
While some enemies are better suited for strafing, others benefit more from a dedicated Evade behaviour. Instead of circling the player, enemies in this state run an EQS query to find the furthest possible point from the player while still staying within their own effective attack range. This allows them to create distance without accidentally retreating too far to hit their shots.
We found this works exceptionally well with long-range attackers like the Scorpio or Jumper. These enemies can now actively move away from the player, often positioning themselves behind other frontline enemies. It adds a whole new layer of challenge; the player will have to fight through a wall of melee units while a constant barrage of attacks rains down from the backline.
While the core attacking states haven’t changed drastically, they have been completely redesigned to use a proper cooldown system. Previously, we relied on simple behaviour tree decorators, but we’ve moved this logic into the AI Controller. This prevents behaviours from overlapping for example, it stops the Jumper from trying to fire missiles while simultaneously trying to path find across the map.
We’ve now categorized these into General, Secondary, and Melee attack cooldowns. Most importantly, these are all data-driven now, making it easy for us to balance the difficulty without having to tear apart the behaviour trees.
We’re about to launch our second ever public playtest, and we need as much feedback as possible. Join our Discord community to get the latest news about this and future playtests! Click the image below!