Flying enemy AI (Unreal Engine 5)
Gameplay/AI programmer
2025
- Unreal Engine 5
- C++
- StateTree
- Behavior Tree
- GAS
- Niagara
A Lyra-based Unreal Engine 5 project, a bullet hell with Returnal as the reference, unreleased. Developer: Nvizzio Creations. I worked as gameplay and AI programmer. The work breaks into five parts.
Octree flight
- Enemies had been on the standard navmesh. I moved them onto an octree so they fly through volume instead of over a surface.
- The navigation is multithreaded C++ — a reusable native
FlyTotask, not a wrapper aroundMoveTo. - One task, three callers: StateTree, Behavior Trees and Animation Blueprints all drive it.
- Roughly 100 flying enemies at 60 FPS in the target scenario.
The movement-pattern framework — the core, and entirely mine
- Patterns are fully data-driven assets. Blueprint override points sit on C++ entry points.
- C++ carries the weight: the framework, the flights, the searches, the collections, the traversal and the heavy methods.
- It is network-replicated.
- Targets are polymorphic — a player, a direction, a point relative to the enemy, or a point that exists only because PCG made it.
- Example: an enemy flies a diamond, stops at a corner, attacks halfway through the stop, then attacks again at 50% of the next leg. Both triggers are data; the framework fires a GAS ability by reference.
The other three parts
- Niagara pattern replication, prediction and health attributes. I did not own the bullet-hell attack patterns or the Niagara system behind them — a colleague wrote those. I worked on that system directly for replication, prediction and applying the effect to health.
Do Movement Pattern, one custom C++ node of mine, brought old Behavior-Tree-and-navmesh enemies onto the framework and the octree.- Gates and wave spawning are mine. Gates open, enemies spawn in waves inside the procedural space, with a difficulty budget per level and a cost per enemy.
Credit: Nvizzio Creations