Hello!
This is another one that we've researched a lot...
So after experimenting with Delay() etc. we discovered that putting @# at the end of a sequence line was pretty much the only way to time things in a way that actually works (at least for us). And each command must be calculated in absolute relative to 0 second.
MoveTo(GoTo_Monk, NPC_Monk_Thin_00, 7);
AnimatorBool(walking, true, Sheet_Player_Idle_Bot_0);
AnimatorBool(walking, false, Sheet_Player_Idle_Bot_0)@7;
SendMessage(FadeIn, , MessageManagement)@6;
SendMessage(FadeOut, , MessageManagement)@9;
(We're still figuring out how to do a fade to black that doesn't turn off right as soon as the timer is done.)
Is this really the way to do it?
Now say I want to make a sequence like in Disco Elysium, where you "randomly" walk in the street and a voice in your head starts talking. Well, this must not happen in the middle of a conversation with another NPC, it must wait until that conversation is over, then resume its timer.
Missing any type of a "timer" component that we can pause and resume, is it possible to do this?
Pausing the entire world is not worth considering because we have animations running on characters (dialogue reactions, etc.).
Thank you!
Matt
Starting, timing and pausing conversations/sequence
-
- Posts: 20
- Joined: Tue Apr 22, 2025 3:33 pm
Re: Starting, timing and pausing conversations/sequence
Hi,
A few notes:
To fade to black and have it stay black (or whatever color you choose), use Fade(stay), not Fade(out). Example to fade out over 1 second, stay black for 2 additional seconds, and then fade in:
You can use messages for timing. For example:
Another example:
Let's say you have your own customer sequencer command DoSomething() that runs for an indeterminate amount of time. Example:
If you've seen Eternights or any of Gua's games, they use sequencer commands for some very extensive sequences.
If you don't want to run a sequence while a conversation is active, you can check DialogueManager.isConversationActive.
A few notes:
To fade to black and have it stay black (or whatever color you choose), use Fade(stay), not Fade(out). Example to fade out over 1 second, stay black for 2 additional seconds, and then fade in:
Code: Select all
Fade(stay);
Fade(in)@3
Code: Select all
AnimatorBool(walking, true, Sheet_Player_Idle_Bot_0);
MoveTo(GoTo_Monk, NPC_Monk_Thin_00, 7)->Message(Arrived);
AnimatorBool(walking, false, Sheet_Player_Idle_Bot_0)@Message(Arrived)
Code: Select all
Fade(stay)->Message(FadedToBlack);
Delay(2)@Message(FadedToBlack)->Message(Delayed);
Fade(in)@Message(Delayed)
Code: Select all
SetDialoguePanel(false); // Hide dialogue UI
DoSomething()->Message(Done); // Your custom command, When done, sends "Done"
SetDialoguePanel(true)@Message(Done); // Show dialogue UI when DoSomething is done
If you don't want to run a sequence while a conversation is active, you can check DialogueManager.isConversationActive.