KOZUNENKO@PORTFOLIO

Flying enemy AI (Unreal Engine 5)

Gameplay/AI programmer

2025

  • Unreal Engine 5
  • C++
  • StateTree
  • Behavior Tree
  • GAS
  • Niagara
Flying enemy AI (Unreal Engine 5)

Credit: Nvizzio Creations

NOTES

Flying enemy AI is a Lyra-based Unreal Engine 5 project, a bullet hell with Returnal as the reference, unreleased. The developer is Nvizzio Creations. I worked as gameplay and AI programmer. The work breaks into five parts.

Enemies had been on the standard navmesh. I moved them onto an octree so they fly through volume. The navigation is multithreaded C++, a reusable native FlyTo task, not a wrapper around MoveTo. The same task is used from StateTree, Behavior Trees, and Animation Blueprints. In the target scenario the setup held roughly 100 flying enemies at 60 FPS.

The movement-pattern framework is mine, and it is the core. Patterns are fully data-driven assets. Blueprint override points sit on C++ entry points. The framework, the flights, the searches, the collections, the traversal, and the heavy methods are C++. 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.

An enemy flies a diamond. It stops at a corner and 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. Triggers include a timer and a percentage of the path.

I did not own the bullet-hell attack patterns. Those, and the Niagara pattern system behind them, were written by a colleague. I did work on that system directly: replication of the patterns, prediction, and applying the effect to health attributes. The movement-pattern framework is a different thing, and it is entirely mine.

Old enemies that used plain Behavior Tree nodes and the navmesh were brought back on the framework and the octree, through one custom C++ node of mine: Do Movement Pattern.

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.

The five parts are the octree flight, the movement-pattern framework, the Niagara replication, prediction, and health work, the Do Movement Pattern node, and the gates with wave spawning.