Page 1 of 2

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

Posted: Mon May 13, 2019 11:29 pm
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.

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

Posted: Tue May 14, 2019 8:13 am
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.

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

Posted: Tue May 14, 2019 3:44 pm
by AoF
Great, thank you!

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

Posted: Wed May 22, 2019 5:13 pm
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

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

Posted: Wed May 22, 2019 5:24 pm
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.

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

Posted: Wed May 22, 2019 5:33 pm
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.

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

Posted: Wed May 22, 2019 6:27 pm
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.

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

Posted: Wed May 22, 2019 7:03 pm
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

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

Posted: Wed May 22, 2019 7:15 pm
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?

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

Posted: Wed May 22, 2019 7:24 pm
by AoF
Found the answer here: viewtopic.php?t=1728