How do you make the player say something without it being a choice?

Announcements, support questions, and discussion for the Dialogue System.
AoF
Posts: 241
Joined: Sun May 12, 2019 8:36 pm

How do you make the player say something without it being a choice?

Post by AoF »

Hello! I haven't even fooled around with the Dialogue system yet, but I have watched half the tutorial videos. I've noticed that each time the player talks, it assumes that you are presented a choice. But what if you just want to have a linear back and forth conversation with someone? How do you get the player character to just say what he's saying without pausing to let the user click on it like a choice? e.g., like the majority of how a visual novel works. There's not much choice options in typical VNs.
Last edited by AoF on Wed May 22, 2019 5:23 pm, edited 1 time in total.
User avatar
Tony Li
Posts: 22056
Joined: Thu Jul 18, 2013 1:27 pm

Re: How do you make the player say something without it being a choice?

Post by Tony Li »

Hi,

Just untick the Dialogue Manager's Input Settings > Always Force Response Menu and tick Subtitle Settings > Show PC Subtitles During Line.

You can also do this on a per-conversation basis by inspecting the conversation's properties.

And you can do it on a per-dialogue entry node basis by using the [f] and [auto] markup tags. The [f] tag forces it to show a menu, and [auto] forces it to automatically play without showing a menu.
AoF
Posts: 241
Joined: Sun May 12, 2019 8:36 pm

Re: How do you make the player say something without it being a choice?

Post by AoF »

Great, thank you!
AoF
Posts: 241
Joined: Sun May 12, 2019 8:36 pm

Re: How do you make the player say something without it being a choice?

Post by AoF »

OK I got around to trying this, and now when I try my dialog it looks like this. This is me pressing space repeatedly:

https://gfycat.com/ FluidDopeyGreatargus

Here's how my conversation looks in the editor:

https://cdn.discordapp.com/attachments/ ... nknown.png

Perhaps it's going through the whole thing without waiting for any input?

Here are some more settings. Maybe I did something wrong? https://cdn.discordapp.com/attachments/ ... nknown.png

EDIT: I swapped in the VN framework (no other changes) and now it looks like this: https://cdn.discordapp.com/attachments/ ... 30/gif.gif
Last edited by AoF on Wed May 22, 2019 5:24 pm, edited 1 time in total.
User avatar
Tony Li
Posts: 22056
Joined: Thu Jul 18, 2013 1:27 pm

Re: How do you make the player say something without it being a choice?

Post by Tony Li »

It certainly looks like it's zipping through the conversation. To confirm, you can temporarily set the Dialogue Manager's Other Settings > Debug Level to Info. This will log the lines that it's playing.

Check the Dialogue Manager's Camera & Cutscene Settings > Default Sequence. Try setting it to:

Code: Select all

Delay({{end}})
Or, if you want to require the player to click a continue button to advance, change Subtitle Settings > Continue Button to Always.
AoF
Posts: 241
Joined: Sun May 12, 2019 8:36 pm

Re: How do you make the player say something without it being a choice?

Post by AoF »

Tony Li wrote: Wed May 22, 2019 5:24 pm It certainly looks like it's zipping through the conversation. To confirm, you can temporarily set the Dialogue Manager's Other Settings > Debug Level to Info. This will log the lines that it's playing.
https://cdn.discordapp.com/attachments/ ... nknown.png

That warning seems like it's the issue. Any idea on how that could happen? The code compiles fine. Perhaps it's important to know that I installed both Dialogue and Quest system, but I haven't done the step to integrate them yet? I don't know if that's relevant, but I haven't used any of Quest system yet.

I also created my own asmdefs in your code. A root asmdef at plugins, and an asmdef in every Editor directory.
Check the Dialogue Manager's Camera & Cutscene Settings > Default Sequence. Try setting it to:

Code: Select all

Delay({{end}})
It seemed to have already had that.
Or, if you want to require the player to click a continue button to advance, change Subtitle Settings > Continue Button to Always.
Hm, what I'd like is "click anywhere to continue." Can I achieve that by making the button span the whole screen and not use any sprite renderers, or is there a better way to do that?

UPDATE: I integrated to the two libraries together and still get this warning.
AoF
Posts: 241
Joined: Sun May 12, 2019 8:36 pm

Re: How do you make the player say something without it being a choice?

Post by AoF »

I think I see the problem here:

Code: Select all

        private System.Type FindSequencerCommandType(string commandName)
        {
            if (m_cachedComponentTypes.ContainsKey(commandName))
            {
                return m_cachedComponentTypes[commandName];
            }
            else
            {
                var componentType = FindSequencerCommandType(commandName, "DialogueSystem");
                if (componentType == null)
                {
                    componentType = FindSequencerCommandType(commandName, "Assembly-CSharp");
                    if (componentType == null)
                    {
                        componentType = FindSequencerCommandType(commandName, "Assembly-CSharp-firstpass");
                    }
                }
                if (componentType != null)
                {
                    m_cachedComponentTypes.Add(commandName, componentType);
                }
                return componentType;
            }
        }

        private System.Type FindSequencerCommandType(string commandName, string assemblyName)
        {
            System.Type componentType = FindSequencerCommandType("PixelCrushers.DialogueSystem.SequencerCommands.", commandName, assemblyName);
            if (componentType != null) return componentType;
            componentType = FindSequencerCommandType("PixelCrushers.DialogueSystem.", commandName, assemblyName);
            if (componentType != null) return componentType;
            componentType = FindSequencerCommandType(string.Empty, commandName, assemblyName);
            return componentType;
        }
That code seems to be assuming that if I'm using asmdefs, they'll be named a certain way.
User avatar
Tony Li
Posts: 22056
Joined: Thu Jul 18, 2013 1:27 pm

Re: How do you make the player say something without it being a choice?

Post by Tony Li »

Yes. This is to prevent it from trying to search every single assembly, which could have a performance impact on slower devices.

Please use the asmdefs provided with the Dialogue System. Since some people don't want to use asmdefs, they're provided in two unitypackages that you can import:

Plugins / Pixel Crushers / Common / Scripts / CommonAssemblyDefinitions.unitypackage

Plugins / Pixel Crushers / Dialogue System / Scripts / DialogueSystemAssemblyDefinitions.unitypackage
AoF
Posts: 241
Joined: Sun May 12, 2019 8:36 pm

Re: How do you make the player say something without it being a choice?

Post by AoF »

Hah, I just created my own by hand and then noticed your reply. OK i'll use those instead.

After doing this, there's a delay before it goes to the next part of the dialog. How do I make it wait for a click?
AoF
Posts: 241
Joined: Sun May 12, 2019 8:36 pm

Re: How do you make the player say something without it being a choice?

Post by AoF »

Found the answer here: viewtopic.php?t=1728
Post Reply