How to move to next section automatically?

How can the next section be activated? I want to move from one section to the other.
EDIT: To make it more clear. In the IntroductionToPlayer I have a general text. When this text is said, I want to move to IntroductionToRoom without waiting for a user input. Is this possible like this?
Or would I need to use the OnSectionEnd Action in Unity and create triggers in the narrative designer for each section? And trigger it that way. I guess that would work, but I hoped to get this done easier / faster.
Thanks

I’ve been trying to do the same and hadn’t considered the OnSectionEnd workaround. Fingers crossed for you to find the solution.

At the moment I’m still stuck. I just tested and I don’t think I can use the OnSectionEnd to trigger another section.
Because the OnSectionEnd is called when a Decision is used in the Narrative Designer?!
So for now, I don’t have an idea and need to wait for feedback from the devs. This can’t be that hard?! To just go to the the next section? Or is it?
Thanks

Did you find a solution?

Next thing I’ll try tomorrow is to check for
ConvaiNPC.IsCharacterTalking
When it’s started and then stopped, I could trigger my own “SectionEnd” function and use
ConvaiNPC.TriggerEvent(MyNextSection)
to move to another section in the Narrative Designer.

I think you can use a “*” wildcard in the decision but it would still need a node to connect to.

Hello @info_AM, @Nick_Clarke,

Just to clarify, do you want the NPC to give a Welcome Message, then move to a different location and have the NPC give another introduction message at the new location?

Let me know if I understand your question correctly!

Hey,
no, in that case the NPC is at the same location. But I want to use different sections, so I can react in Unity to the current “state” and show/hide things in Unity.
Thanks

EDIT: Is this “*” wildcard valid to directly move to the next section? @K3

Just tested this, but it’s not working. Should that work and maybe I have to wait until it’s updated in Unity? Or is this not a valid solution.

Still wondering: I can’t be the first person to request this? Is there another way / solution?
Thanks


        private bool _hasSpeechStarted = false;
        private bool _hasSpeechEnded = false;
        public override void Update()
        {
            // Check if the AI Assistant has started speaking
            if (_hasSpeechStarted == false)
            {
                if (_aiAssistantStateMachine.AIAssistantManager.ConvaiNPC.IsCharacterTalking)
                {
                    _hasSpeechStarted = true;
                }
            }
            // If the AI Assistant has started speaking, check if the speech has ended
            else if (_hasSpeechStarted && _hasSpeechEnded == false)
            {
                if (_aiAssistantStateMachine.AIAssistantManager.ConvaiNPC.IsCharacterTalking == false)
                {
                    _hasSpeechEnded = true;
                    _aiAssistantStateMachine.OnStateEnd();
                }
            }
        }

This works, but feels a bit messy.
Looking for a reply and solution from convai. Otherwise I’ll accept this as a solution.
Thanks

I’m having trouble fully understanding your code, and it doesn’t seem like the correct approach.

Whether the NPC moves or not doesn’t affect how Sections work. If you want to transition between different sections, you’ll need to use Triggers.

You can set up Narrative Design Triggers based on:

  • A specific event in your project
  • Time based.
  • A collision with a collider in your scene

The Real Estate Character’s Narrative Design from our VR tutorial might give you some ideas. I have shared some screenshots.

If you’re still facing issues, please let me know—I’d be happy to assist further!

General

Trigger

Section

Section

Well my code works. I have the NPC “doing” the section and then I can go on to the next one without any input (from the user, collision, time or else). That’s what I wanted.

I want a feedback / event when the objective in the section is done, without any input. Because I want that event to update my scene and then update the narrative designer. E.g.

  • (section 1) User gets welcome message from the NPC
  • (section 2) Then I want to highlight some elements in the scene and say something about them.

I understand, that the narrative designer waits for user input right now. And that I can add one or multiple decisions to move on. But I want / need just a “go on” decision.

Where can I find more info about “time based”? But this wouldn’t work, because if the spoken text varies, I can’t set a correct timing to trigger the next section?

Thanks

Well I tried this OnSectionEnd event already and it’s not calling when the NPC stops talking, meaning speaking the text of the current section. This is not a valid way, see my video.
Or do I miss something?

Screen-Recording: 2025-02-14 14-50-30.mp4 - Google Drive

Thanks

I’ll check and get back to you as soon as possible. OnSectionEnd is triggered when the section changes—my previous statement was a mistake. Thanks for your patience!

1 Like

You need to use an Event-Based Trigger for this.

When the Character finishes the Welcome Message (first message), you should call the InvokeSelectedTrigger method from the Narrative Design Trigger Component to transition to the next section.

Let me know if you need further clarification!

Hi @K3,
yes, but how?

When the Character finishes the Welcome Message (first message)

What is the “event-based trigger”? How can I detect when the message has finished? I created this “messy” workaround (How to move to next section automatically? - #9 by info_AM) where I look for “talk started” and then “talk finished”.
Do you have a cleaner solution for this?

Or what I think would be the best way: Can’t you make some kind of “empty decision” in the Narrative Designer? That we as user can directly connect a Section to another Section?

Thanks

Here is a longer video about my concept and the limitations I encounter. Hope that makes it more understandable.

Thanks for looking into this!

Thank you for sharing the details. Your current solution is exactly what I meant by Event-Based Triggers—invoking a trigger when an event occurs in the game engine, just as you’ve done.

The delay between responses is normal, as each Invoke Trigger generates a new response, similar to how a user input would prompt the Character to reply.

Additionally, if you want the Character to say the exact same text every time, you can use <speak> Your Text </speak> within your sections.

I’ll also share this as feedback with our team for further improvements. Thanks again for your insights!

1 Like

Ok thanks for the clarification. Have a nice weekend.

1 Like

Hi @K3,
is there a documentation / help where I can get more info like / about this:
<speak> Your Text </speak>

Are there more commands, like or so?
Thanks

You can check out this documentation for more details:

Narrative Design Documentation