Knowledge Base: Niagara Data Channels Update: NEW Access Contexts in Unreal Engine 5.7

This document covers various updates to the Niagara VFX Data Channels feature as of the 5.7 Unreal Engine release.

https://dev.epicgames.com/community/learning/knowledge-base/6mKa/niagara-data-channels-update-new-access-contexts-in-unreal-engine-5-7

Interesting changes. I’m still on 5.5, I’m using a small map, got my own ability system, no multiplayer, no islands. Do I even benefit from the new system? There is lots of variables in the struct that don’t look useful to me. In general the section about access context reads like an info dumb and I hope we can add some examples, ie for which VFX should I use which struct.

About getting members in instance, getting the spawned systems and instantly setting the parameters looks useful if I ever start using a NDC for multiple Niagara Systems. Though, I do have to ask who the people are that request features. Is it Unreal Engine devs or can a random guy like me talk about this somewhere, because I’m also really into NDCs :slight_smile:

What settings should we be using to replace a Global NDC? I’ve found a ā€œComponentā€ option which seems close, but when debugging it still creates an extra system.

I am also struggling to get a Global NDC working without using Legacy nodes.

Not sure if this helps - I was able to get it working with a Make NDCAccess Context Legacy node you can feed into the non-legacy read node.

Hi.
Apologies for the delayed response over the Christmas period.
@Ninjin ā€Do I even benefit from the new system?ā€
It all depends honestly on what you’re doing and need. If what you have now is working for you then I’d say stay as you are.
The biggest benefits with the new NDC type and access contexts are;

  • being able to override the spawned system using a single NDC asset. Many people were having to duplicate NDCs just to change the system being spawned.
  • More scalable perf when the number of unique islands/systems becomes large.
  • Extensible so custom NDC types can take in any data they may need.

If none of these are a concern for you then it’s likely you wouldn’t see much benefit.

ā€Is it Unreal Engine devs or can a random guy like me talk about this somewhere, because I’m also really into NDCs :slight_smile:ā€
I am always eager to hear how people are using this tech and to take feedback and feature requests :slight_smile:
Feel free to reply here. Many people also use the RTVFX discord community. RealTimeVFX
@SheDoesArtStuff may know of some other good avenues for feedback and feature requests.

ā€œWhat settings should we be using to replace a Global NDC? I’ve found a ā€œComponentā€ option which seems close, but when debugging it still creates an extra system.ā€
Can you describe in more detail what you’re doing?
Are you trying to replace a global NDC with a GameplayBurst NDC? Or just use the new AccessContext path to interact with a global NDC?
For the former, this will change how the NDC operates, you don’t need to change all NDCs to the new gameplay burst type. It is very use case dependent.
For the latter you can use the Access Context Legacy type which allows use of older NDC types that don’t directly yet support the new access context path. i.e. the global and island types.

1 Like

@STovey Just checking in here, I’m also using Global NDC for some of my systems, and I always like to migrate off Legacy options when possible. Are you saying that the Legacy Global and Island types may be the best option in 5.7 in some cases, and you’ll be updating them to use the new Access Context path in a future Unreal release? So they’re marked ā€œLegacyā€ even though there’s no replacement yet?

Is there an easy way to activate a ā€˜preview’ mode for authoring NDC NiagaraSystems?

In the old burst instanteous it made seeing a preview pretty easy in the preview window, but when switching the assets over to NDC I find no easy way that isn’t fragile/brittle to ā€˜preview’ some sample input into the NDC system?

Possible solution:

  1. add a burst instanteous on every emitter and remember to uncheck it when done authoring. But this feels brittle and prone to error. I’d love an editor only or cvar type solution, or better yet let me add some ā€˜fake data into a NDC channel for preview mode’ or something. To best mimic real conditions.
  2. Make a temporary BP actor that sends NDC events into the system in a test level. This also feels slightly cumbersome? But I’m totally new to Niagara related stuff so maybe that’s ā€œjust how its doneā€?