[BUG] Sequence Node Misnomer

This isn’t necessarily a bug per se but I wanted to point out a misnomer that I noticed.

The Sequence node is used to fire multiple events in sequence and each new sequence pin is labeled “Then 0”, “Then 1” etc. The problem with this naming convention is that it implies that “Then 1” will not fire until everything under “Then 0” has completed but this is not the case. If you add a delay to the end of “Then 0” and set it to 5 seconds, “Then 1” will fire before the delay has completed. I’d like to propose that the pins be renamed to “And 0”, “And 1” etc. as this makes the functionality of the Sequence node more clear.

Steps to recreate:

  1. Add a sequence node to the
    EventBeginPlay of a level blueprint.
  2. Connect a print string to “Then 0”
    and type “This Node Plays Instantly”
  3. Add a delay of 10 seconds to the end
    of the print string node on “Then 0”.
  4. Add a print string to “Then 1” and
    type “This node should play 10
    seconds later”
  5. Simulate in the viewport and you
    will see both print strings fire at
    the same time.

Hi TorQueMoD,

The Sequencer Node is working as expected but your repro steps do not demonstrate this clearly. In other words, the two actions in your example are happening in sequence -only really quickly. The problem is, while they are firing in sequence, the second item is not dependent on the first. So it functions as so:

  1. Item 1 fires, delay is null
  2. Item 2 fires

If you want there to be a delay between sequenced items you would set it up like this:

Let me know if you have any questions about this node and how it works.

I see how this can be confusing. However it is indeed firing “0” then “1” then “2” and so on in sequence. If you changed the word to “and” that would suggest simultaneously which it is not doing, even in your example.

Putting a “delay” node at the end of your first string does not affect the second string whatsover -nor anything you add to the first string. The Sequence Node simply sets up a sequence of strings which, as I have demonstrated, can be adjusted by adding a delay at the beginning of the next line in the sequence instead of at the end.

Consider this example of a sequence:

  1. Fire explosion after 50 seconds
  2. Fire explosion immediately
  3. Fire explosion after 20 seconds

Although counter-intuitive, while the sequence played in order (1, 2, 3) the resulting order of explosions would be: 2, then 3, then 1.

That in itself proves my point though. You have to add the delay at the front of whatever you want to happen. For example, if there’s multiple delays in “Then 0” for timing, it doesn’t wait for those things to finish before it runs “Then 1”.
The word THEN implies that the first line of nodes will complete entirely BEFORE running the second line but if it’s skipping the delays then it’s not firing in sequence as you say, which is the whole point of me mentioning this. The second line starts to fire before the first line is complete if you add one or more delays to the sequence.

It may be technically accurate in that it’s processing the code, storing it in memory and then waiting for the delays to be finished before finishing the sequence but my point is, from a non-programmer’s perspective, you view sequences of nodes like a timeline or a playhead of a video player but if you can create a situation where “Then 1” completes before “Then 0” it leaves the impression that the word used should be AND and not Then.

Yeah… I understand why it does what it does it’s just the naming convention that bothers me and the fact that it operates outside of or regardless of time.

Ok so if you were trying to work out timing logic and you wanted to create a setup where Sequence 2 doesn’t do anything until Sequence 1 is complete, delays and all, is there a way to do this? Aside from adding a delay to the beginning of Sequence 2? In Source there was a node called a Multi-Manager and it was a lot easier to work out complex timings with. I guess you could do this with a timeline?

Hello TorQueMoD,

I have provided a link to the documentation on sequences. You will see that the sequence node sends out a pulse in the order of Then 0, Then1, etc. I hope this helps clarify things a bit.

Link: https://docs.unrealengine.com/latest/INT/Engine/Blueprints/UserGuide/FlowControl/#sequence

One way to go about getting the result you are looking for would be to use a combination of a custom event and a multi gate. I have provided an example below.

Example:

Make it a great day

Oh cool… a MultiGate looks to function exactly like the Multimanager from Source. Why is it called a Multi Gate if there’s no Open and Closed state?
Thanks for the help guys!