← Back to filtered projects

2026 Β· Personal Project

Niagara GPU Swarm System

A reusable GPU-agent framework built in Niagara for large-scale animated swarms, particle-level gameplay interaction, and responsive physical feedback.

Year
2026
Type
Personal Project
Role
Technical Artist / Niagara Systems Developer

Overview

What I built and why.

Originally developed to support the Dragon Rider prototype, this project grew from a single swarm effect into a reusable real-time agent framework. VAT animation, Neighbor Grid3D queries, particle-level damage, Render Target interactions, and a GPU-to-Blueprint handoff work together to keep large crowds lightweight while preserving readable hit and death responses.

My responsibilities

My contribution.

Technical breakdown

01

Reusable system architecture

BP_Swarm acts as the central configuration and runtime hub for Niagara, animation data, materials, and interaction parameters. BPC_SwarmInteraction provides a clean bridge from character input and gameplay events, while BP_DrawInfoOnRT converts world-space brushes into Render Target data. This separation keeps the swarm reusable instead of tying it to one character or level.

02

VAT animation and state selection

AnimToTexture converts skeletal animation into data that can be evaluated by Niagara's Mesh Renderer at GPU scale. Each agent selects Idle, Walk, Hit, or Death from a compact animation-data protocol, then calculates its own frame and play rate. The workflow is data-driven, allowing a different agent mesh and animation set to be generated and assigned without rebuilding the core simulation.

03

Neighbor Grid3D and local targeting

Each frame, agents write their positions into a Neighbor Grid3D before querying nearby cells. These staged passes support separation and local influence without comparing every particle against the entire swarm. Additional selection stages store the agent nearest to the player's aim and filter the final trace target, enabling gameplay to address a specific GPU particle rather than treating the swarm as one visual effect.

04

Damage, health, and gameplay feedback

The system supports three complementary interaction paths: ray-based single-target hits, radial explosion events, and continuous areas written to a Render Target. Damage is evaluated per agent and feeds health, hit states, death selection, animation, health-bar placement, and material parameters. Event IDs prevent a single shot or explosion from being processed repeatedly across frames.

05

GPU-to-Blueprint handoff

A GPU particle is efficient for crowd simulation but cannot provide every physical reaction. When an agent dies or needs a more detailed response, Niagara exports its world position and hit data through a particle callback. BP_Swarm then spawns a BP_Agent at the matching transform, transfers the impact context, and hands the final response to a skeletal ragdoll with directional impulse.

06

Navigation and surface-movement research

The current R&D branch explores Flow Field guidance through Render Targets and GPU Distance Field sampling for agents that move across nearby surfaces. Distance-to-surface and field-gradient queries provide the basis for surface attachment, orientation, and travel. This work remains an extension of the core production-ready swarm, rather than a claimed finished feature.

Tools

Technical stack.

Process gallery

Images and their original notes.

Niagara GPU Swarm System β€” System architecture in Niagara, image 1

01

System architecture in Niagara

The system is organized into three readable layers: the System Stack initializes the shared Neighbor Grid3D, the Swarm Emitter evaluates animation, movement, damage, selection, and rendering, and an optional DebugGrid emitter visualizes the spatial data while profiling or troubleshooting.

Simulation Stages run FillGrid before QueryGrid and targeting passes, keeping spatial writes and reads explicit and making the crowd behavior easier to debug and extend.