Network prediction and 6DOF Movement

Aether NPP 6DOF movement showcase

2K video showcase of Aether NPP

​Hey everyone! I’m a solo developer working on modular C++ systems for Unreal Engine 5. I wanted to share a technical breakdown and stress-test data for Aether, a 6DOF movement framework built on UE5’s Network Prediction Plugin (NPP).

And yes the video is raw,unedited footage of me just messing around with the physics trying to force the network to collapse! (12min & 19seconds for the video)

​Aether Key Specs & Metrics

​Engine Version: UE 5.7.4 (NPP)

​Performance: 16–30 µs CPU time (vector math simulation)

​Payload: 1.58 KB InputCMD

​Tick Rate: 60 Hz Dedicated Server (16.67 ms frame budget)

​Max Speed Tested: 55,000 cm/s

​Network Stress Test Results

Scenario 1-Way Latency / RTT Packet Loss / Jitter / Reorder Client Visual Experience Network Prediction & Buffer Behavior
Ideal 0 ms / 0 ms 0% / 0 ms / 0% Baseline Flawless 0 Restore Events / 0 Hard Rollbacks
GoodBroadband 20 ms / 40 ms 0% / 2 ms / 0% Imperceptible from Ideal Zero network desync
BadWiFi 40 ms / 80 ms 8% / 20 ms / 3% Imperceptible from Ideal Zero network desync
HighPing 180 ms / 360 ms 0% / 10 ms / 0% Imperceptible from Ideal Local prediction handles input latency cleanly
SevereJitter 80 ms / 160 ms 2% / 60 ms / 10% Imperceptible from Ideal Jitter absorbed by prediction buffer
PacketLossSpike 50 ms / 100 ms 15% / 10 ms / 0% Imperceptible from Ideal Zero visual stuttering
AetherStable 300 ms / 600 ms 15% / 80 ms / 1% Imperceptible from Ideal Full 600 ms RTT absorbed with 0 hard rollbacks
AetherUnstable 600 ms / 1200 ms 25% / 100 ms / 3% Visually Smooth Minor RESTORE EVENTS triggered; no client snaps
AetherExtreme 1200 ms / 2400 ms 35% / 200 ms / 5% Visually Smooth Velocity-compensated SmoothingTranslationOffset dikes out historical adjustments
JustNo 3000 ms / 6000 ms 70% / 300 ms / 10% Playable (micro-stutters); increasing reconciliation thresholds trades sim accuracy for visual smoothness Heavy Input Starvation & frequent resimulations; input lag noticeable

Other Modules in Development

​Nexus: Data-driven UI manager (SDL3 integration) with custom input processor and axis editor for HOTAS/HOSAS setups even crasy sim setups!

​Flux: Bitmask-based grid shapes for infinite nested inventories, reflection stat handlers, and a custom GAS implementation.

​Kinetix: Dynamic destruction & bullet manager utilizing vector math, physical penetration, and Geometry Scripting.

​Happy to answer any technical questions about NPP, vector math optimization, or the overall C++ architecture!

I Promise I don’t bite! :slight_smile:

1 Like

good luck brother im doing something different but looks like your project is pain too :D:D (gpu destruction system/not chaos)

1 Like

Thanks! Oh yes blood and tears, and reading to much source code xD

Sorry for the late reply I thought the post acceptence would take longer xD, but hey that’s awesome! How are you handling gpu destruction? using vectormath to handle the debris simulation or any other cool integrations? for the gpu are you using dynamic meshes or niagara for the debris and all that stuff?

I’m building kinetix that uses gpu visulizerers and geometry script for physical destruction and as a cheap bulletmanager, and aether is used in the macrodebris for world interaction :slight_smile: so we can destroy worlds and so on with debries actors.

Desctruction systems is so fun to code but soooo much pain xD

1 Like

from your description i gathered you are building more local destruction system not whole building collapse type? because i wanted to use mdi for more perf this forced me to create lot of extra stuff like own rendering subsystem, material recipes so i can later use unreals lighting and shadows so made gbuffer to send this info and im using own xpbd solver with peridynamic bond graph (most data im baking), made own instanced container so i can plug and play any meshes together to create structural actor which i think will give you lot of freedom, now working on rigid body part so i dont have to use chaos at all for my destruction, but chaos will control everything else in level just not destruction, lot of pain will be eager to see more videos from you buddy, but from description your project is very ambitious too.

1 Like

Thanks, glad you liked the showcase! And you guessed correctly! xD

In short, it’s two systems in one: a C++ solver that handles ballistics and penetration while streaming projectile data to the GPU via Niagara Data Channels. On impact, it runs async Geometry Scripting for procedural boolean mesh cuts, breaking unanchored chunks off into dynamic physics debris actors.

Smart move using XPBD and binding ‘prefabs’ together instead of Chaos anchors! Got me curious, is this for a game or a cinematic? And how’s the performance comparing to Chaos? I can imagine the difference is night and day xD

Hahaha, I know that feeling all too well… “Ooh, that would be fun” aaaand down the rabbit hole you go xD That’s how Aether and the whole Kadmium ecosystem started. Has there been a specific moment in your project that really made you feel “yeah, this was 100% worth the pain”?

Mine was yesterday spent 16 hours debugging relative docking, only to realize I forgot to normalize scale to 1, causing ships near large planets to inherit 1000x speed… as simple as that...

Sounds like a soul-draining project you’re building! looking forward to your showcase too! :smiley:

1 Like

Here’s some links for the curious!

My website (Human friendly) www.kadmium.dev/

C++ Deep dive Aether Framework 6DOF NPP UE5 C++ Architecture Deepdive - DEV Community

In deep dive there is a link for the architecture on github too if anyone want to see the npp setup.

1 Like

currently im fixing bugs on rigid body solver, jitter, im around 40fps, im planning maybe 60fps on CPU before is start moving data to bake and to gpu buffers. visually breaking already looks ok, which i couldnt get with chaos only .i made my own ai which i created mcp tools to directly use renderdoc,insight, rdg which massively help to debug and find issues, also created db from source to compare against if specific parts im working on so i dont go to rabbit hole. 16hrs debugging must of been absolute tuna melt :D:D this is aimed for large replicated destruction but also you be able to use more detailed setting for movies, main aim are games though and multiplier

1 Like

Nice! 40fps ain’t bad for a solver based physics destruction! are you running async threads or purely on the gamethread? sometimes it’s worth it to batch the simulations into diffrent frames to keep the calculations more manageable :), I’m running vectormaths for pure control xD

hehehe, tuna melt xD, hope you find the jitterbug soon! hit me up on emil@kadmium.dev when you release a showcase or any questions :smiley:

nice! would be awesome to see full on destruction without tuna melting the whole server xD

good luck kryo! :smiley:

1 Like

nice to see somebody else being enthusiastic about physics :D:D, currently aim is realistic break, not sure how much i spend on optimizing cpu side but will spend enough time to meet target budget and i check your suggestion thanks :slight_smile:

1 Like

Yeah, rare skill these days :slight_smile: but that’s what makes gameplay from fun to awesome!

and yes, no need to optimize when the core isn’t finished :slight_smile: no problem, good luck!

1 Like

@KryogenicGames

Here, as promised a video showcasing the relative docking xD

1 Like

this looks very cool, what is your most stubborn part of this project so far?

1 Like

Thanks, most stubborn is AABB’S/OOBB’S has a runtime bug where everything centers to 0,0,0 instead of translationoffset and the smoothing when entering moving moving objects, World to Relative math freaks out during frame 1+2 so need to find a way to either compress it and send more with less or find another way of transforming the data so the client dont go bananas in Finilizesmoothingframe() xD Well see how it turns out.

For now it will do, has a sirius game demo showcasing full on combat in Sirius with kinetix destruction with my current alpha testers :slight_smile:

thats what i got impression for your destruction is mainly aimed at, this combat type destruction? like in space or flight combat? and dont worry solution will present itself :D:D im redoing some of my material properties after discovering some of their params were not best suited for my solver , its like nonstop going back and forth haha

hahah sorry! I was deep in my IDE when I answered xD but thanks for including your project too! :smiley: that non stop back and forth is what makes any system great, when you get it working you always see oooh, that’s a much better way xD Where there any variables you could merge with other variables? or was it just parameters that just was too much data for none gained? and is there any more revelations/blockages you noticed while redoing the material properties?

heheh, well both yes and no xD I’m not going as deep as you with full on building collapses which is awesome and more games despertly need xD, I mainly focus combat destruction but the the whole world is included and reacts to it xD so pieces falling into asteriods or walls from a castle hitting terrain creates permanent destruction in the world! :slight_smile: but yes mainly focusing on player to player / player to enviroment /enviroment to enviroment interactions to make gameplay more imerssive than just a HP bar :slight_smile:

1 Like

is it something similar to this?

i will make own thread when ready to show stuff, dont mean to hijack your project thread :).

1 Like

Very similar yes :smiley: but with vectormath instead of chaos xDand more of projectile simulation if you bullet is 9mm wide a 9mm entry hole will be crated and cut the mesh depenining on penteration in the mesh, I will tag you when I showcase the Kinetix :smiley: hahaha I don’t mind! xD tag me when you have posted! :smiley:

will wait brother, will be interesting to see different solution other than chaos for sure :slight_smile:

Haha nice, and for your solution to!

Heeeeyoo :smiling_face_with_sunglasses: Just wanted to say Finaaaaaaly I can release the video on friday :smiley:

1 Like