How MassBattle Runs 100,000 Fighters in Unreal Engine.
by Vicente C.
Published |
16
Share
MassBattle is built for huge fights in Unreal Engine. Leroy Works explains how Mass runs the combat while Niagara draws and animates the crowd.
MassBattle is a framework Leroy Works built for fights with up to 100,000 agents. A separate Actor for every soldier would be expensive at that scale, so the plugin uses Mass for movement and combat, and Niagara for rendering.
Mass keeps each fighter’s position, health and combat state as data. Its processors update movement, collisions and hit reactions across the crowd, without a separate Actor ticking for every soldier.

Niagara renders each fighter as a mesh particle. Their animations are baked into textures that the material reads on the GPU.

To get updates from Mass to Niagara, Leroy gives each fighter a slot for its position and animation state. MassBattle then sends those updates in batches instead of making a separate call for every soldier.
Mass and Niagara don’t always update at the same rate. Between updates from Mass, Niagara uses a fighter’s velocity to keep it moving smoothly. If that fighter suddenly turns around, the prediction can overshoot, so Niagara briefly uses the position from Mass instead.

Those slots also get reused after a fighter dies. An ID lets Niagara tell when someone new takes a slot, so the next fighter appears in the right place instead of sliding over from where the previous one stood.

Fighters far from the camera skip some animation work. Those shown up close can switch to full Actors for more detail.

Keeping combat on the CPU also helps with multiplayer. MassBattle uses deterministic lockstep, letting connected players run the same fight from shared commands without sending every soldier’s position over the network.

Keep exploring real-time graphics
Jettelly wishes you success in your professional career! Did you find an error? No worries! Write to us at [email protected], and we'll fix it!

Subscribe to our newsletter to stay up to date with our latest offers

© 2026 Jettelly Inc. All rights reserved. Made with ❤️ in Toronto, Canada