Announcement

Collapse
No announcement yet.

Blueprint Dialogue System

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

    Originally posted by Cinebeast View Post
    Hey, pardon me for barging in on this conversation, but I'm really interested in this approach as well. I've got two questions:

    What if I wanted to swap out different "chirps" depending on the speaker? How would I check who's speaking and change the SFX accordingly?

    And what if I wanted to play a different sound when the sentence has finished? In most Zelda games, for instance, there's a standard "chirp" noise that plays while the dialogue is running but also a "we've reached the end of the sentence" noise. How would I be able to detect if the dialogue has finished, or if it has reached the final character in the sentence?

    Thanks a million for answering all these questions, Grogger. Your add-on is a lifesaver. (I'm sure I've said that before, but it bears saying again.)

    Hmm, to play a different chirp, you could maybe do a switch in your UI_Dialogue on the DialogueItem's SpeakerID. Either that or set something in the dialogue script, like a function that 'sets' the current chirp sound to play.

    To do things at the end of the dialogue, there's an event in UI_Dialogue called "OnAllTextDisplayed" that signals the end of the dialogue at the point of the last character having been printed.

    It's nice to hear at any rate, I'm glad it's been helpful

    Comment


      Hi! I'm interested in buying this system - looks like exactly what I need - but I did want to verify something first. I read the documentation and watched the tutorial videos and didn't find a clear answer. Is it possible use the system so that it can sometimes be triggered by the player pressing a button, and sometimes triggered automatically when the player collides with a trigger volume? Also, I noticed that we can trigger events at the end of a line (post-action), but the documentation doesn't explain where I would create those events and how to call them. Other than that, I am very excited to buy this tool and start creating some dialogue for my game!

      Comment


        Originally posted by Charlie0411 View Post
        Hi! I'm interested in buying this system - looks like exactly what I need - but I did want to verify something first. I read the documentation and watched the tutorial videos and didn't find a clear answer. Is it possible use the system so that it can sometimes be triggered by the player pressing a button, and sometimes triggered automatically when the player collides with a trigger volume? Also, I noticed that we can trigger events at the end of a line (post-action), but the documentation doesn't explain where I would create those events and how to call them. Other than that, I am very excited to buy this tool and start creating some dialogue for my game!
        Hi Charlie,

        It certainly can be called from anywhere you'd like, by calling the SetState blueprint function on the dialogue component. I have some being called by trigger volumes, others by pressing 'E' on a character, and some others through matinee & sequencer.

        Custom functions can be built in the dialogue actor component, implemented in the "HandleScriptFunction" blueprint function (there is a brief example in the documentation here)

        Cheers!

        Comment


          Hello there, I recently purchased this excellent dialogue system and am getting to grips with it, it's great so far. I was wondering, however, if anyone might be able to help me figure out something that's probably very simple. Basically, all I want is to change a camera in my level when the dialogue ends. If anyone can help me achieve this, I'll be extremelygrateful.

          Thanks.

          Comment


            Originally posted by AndrewLindsay View Post
            Hello there, I recently purchased this excellent dialogue system and am getting to grips with it, it's great so far. I was wondering, however, if anyone might be able to help me figure out something that's probably very simple. Basically, all I want is to change a camera in my level when the dialogue ends. If anyone can help me achieve this, I'll be extremelygrateful.

            Thanks.
            Hi AndrewLindsay,

            I have two methods that I use to do this:

            1) Create a custom script function that searches for a camera by tag or name (eg. SetCamera('cameraTag') - feel free to add optional parameters for camera transitions and blend options here too)
            2) Control the cameras by event in the level blueprints, execute level events from the dialogue with a custom function
            * I put a dispatcher in my GameState that the level blueprint registers to on BeginPlay - I then made an ExecLevelEvent(EventName) script custom function that triggers that dispatcher

            I've found both to be useful in different scenarios, the level event especially for 'special' cases

            Let me know if that all makes sense haha
            Cheers

            Comment


              Originally posted by Grogger View Post
              Hi AndrewLindsay,

              I have two methods that I use to do this:

              1) Create a custom script function that searches for a camera by tag or name (eg. SetCamera('cameraTag') - feel free to add optional parameters for camera transitions and blend options here too)
              2) Control the cameras by event in the level blueprints, execute level events from the dialogue with a custom function
              * I put a dispatcher in my GameState that the level blueprint registers to on BeginPlay - I then made an ExecLevelEvent(EventName) script custom function that triggers that dispatcher
              Hi, thanks for the really quick and detailed response! Unfortunately I'm pretty noobish in UE4 so if you could possibly explain a little further I'd really appreciate it! I think I understand method 2 more, so basically I have this code set up in my level blueprint for when I want the camera to return to the player's position:
              Click image for larger version

Name:	Level BP.png
Views:	1
Size:	68.5 KB
ID:	1126323

              and then I need to call this event in the BPC_DemoDialogue Blueprint? I'm afraid I'm not very sure how to go about this

              Sorry and thanks for the help!

              Comment


                Nevermind, to my complete surprise I managed to figure it out, thanks a lot for all the help!

                Comment


                  Hello again, after having conquered my previous issue with the help of Grogger, I come in search of aid for a different problem. Basically I am using the gamepad to select dialogue options, which is supported right away by the system, which is great. I can't seem to find a way to choose which gamepad button is assigned to which option, however. At the minute it seems as if the 'Y' button on my xbox one controller selects the first option, with 'A' selecting the second. If possible I'd like to change these. Does anyone know how I can achieve this? Thanks a lot for any assistance!

                  Comment


                    Originally posted by AndrewLindsay View Post
                    Hello again, after having conquered my previous issue with the help of Grogger, I come in search of aid for a different problem. Basically I am using the gamepad to select dialogue options, which is supported right away by the system, which is great. I can't seem to find a way to choose which gamepad button is assigned to which option, however. At the minute it seems as if the 'Y' button on my xbox one controller selects the first option, with 'A' selecting the second. If possible I'd like to change these. Does anyone know how I can achieve this? Thanks a lot for any assistance!
                    I'm glad you managed on the first issue

                    The gamepad controls are configured in the UI_Dialogue (on EventTick), by default, as FaceButton Bottom as "select highlighted option", and FaceButton Top as "back" with the assumption that the last item is always back.

                    Just a note though, the gamepad controls were minimally implemented because of the limitations at the time when the system was written. If you need something more custom or more flexible, you can set the dialogue into "Input Mode Unmanaged" and handle the events through the player controller yourself (this is using the functions labeled "gamepad" in UI_Dialogue).

                    Comment


                      Originally posted by mfasman95 View Post
                      Hello,

                      We are running into a bug though, and I am not sure what is causing it. Currently, we have a system set up that triggers dialogue when you enter a collision zone. So, for example, you put a box trigger into a level and use a dialogue object when you cross the trigger. However, once you end the dialogue the character continues walking in the direction they had been walking in, until you press and release the movement key again. My understanding is that for some reason, input is being halted from the mouse and keyboard, causing the game to not register the key up event triggering. Have you seen anything like this, or do you have any idea where input might be blocked during the use of dialogue?

                      Hi,

                      Has this issue been fixed or is there a workaround? I'm having the same problem. Whenever I trigger a dialog with a collision trigger, the player character stop correctly upon opening the dialog UI. However, after closing the dialog UI, the player character starts moving again in the same direction it was moving before, even if the W key has been released in the meantime. What's happening is the InputAxis MoveForward value is stuck at value 1, even when W is released. Anybody has a fix for this?

                      Comment


                        Originally posted by renalard View Post
                        Hi,

                        Has this issue been fixed or is there a workaround? I'm having the same problem. Whenever I trigger a dialog with a collision trigger, the player character stop correctly upon opening the dialog UI. However, after closing the dialog UI, the player character starts moving again in the same direction it was moving before, even if the W key has been released in the meantime. What's happening is the InputAxis MoveForward value is stuck at value 1, even when W is released. Anybody has a fix for this?
                        I managed to fix this by changing the BPC's Set Input Type function to use 'Set Input Mode Game and UI' for 'Mouse and Keyboard' as well. Movement input is disabled anyway, so there should be no interference. Just in case anybody runs into this problem...

                        Comment


                          Hey Grogger,

                          I've been in and out of game design for a while now, unfortunately. Now I'm back and I'm eager to delve deeper into your system. I've got a question for you.

                          So, out of the box I don't see any way to control where the "interaction print" appears when you approach something that can be interacted with (that is to say, a Chosen Usable). By default the print string appears directly on top of the actor's root, whatever that may be. (Usually a Scene Root.) This doesn't really look very good for more complicated actors, though.

                          This isn't a problem, exactly, but aesthetically speaking it rubs me the wrong way. How would I go about controlling this?
                          I'm an artist! Check out my work at https://cinebst.wixsite.com/cinebeastart and hit me up!

                          You can e-mail me at cinebst@gmail.com.

                          Comment


                            Originally posted by Cinebeast View Post
                            Hey Grogger,

                            I've been in and out of game design for a while now, unfortunately. Now I'm back and I'm eager to delve deeper into your system. I've got a question for you.

                            So, out of the box I don't see any way to control where the "interaction print" appears when you approach something that can be interacted with (that is to say, a Chosen Usable). By default the print string appears directly on top of the actor's root, whatever that may be. (Usually a Scene Root.) This doesn't really look very good for more complicated actors, though.

                            This isn't a problem, exactly, but aesthetically speaking it rubs me the wrong way. How would I go about controlling this?
                            Hi Cinebeast,
                            How I handle this is by implementing the BPI_Usable interface and it's "CustomNotificationLocation" (I'm not fond of the name, but there it is). The implementation of the 'print string' is not meant to be production ready in the sample code, it's just debug text.

                            Comment


                              Originally posted by Grogger View Post
                              Hi Cinebeast,
                              How I handle this is by implementing the BPI_Usable interface and it's "CustomNotificationLocation" (I'm not fond of the name, but there it is). The implementation of the 'print string' is not meant to be production ready in the sample code, it's just debug text.
                              Hmm... I'm afraid I'll need a little more direction.

                              I implemented BPI_Usable on one of my actors and set the CustomNotificationLocation like so:

                              Click image for larger version

Name:	ue4_dio_custom_anchor.png
Views:	1
Size:	49.1 KB
ID:	1129256

                              (I have an arrow several units in front of the actor proper where I want the notification to appear.)

                              But this had no effect. I'm probably missing something obvious.
                              I'm an artist! Check out my work at https://cinebst.wixsite.com/cinebeastart and hit me up!

                              You can e-mail me at cinebst@gmail.com.

                              Comment


                                Originally posted by Cinebeast View Post
                                Hmm... I'm afraid I'll need a little more direction.

                                I implemented BPI_Usable on one of my actors and set the CustomNotificationLocation like so:

                                [ATTACH=CONFIG]144328[/ATTACH]

                                (I have an arrow several units in front of the actor proper where I want the notification to appear.)

                                But this had no effect. I'm probably missing something obvious.
                                Oh no, it has no effect by itself. You can call that function on the actor to get the new position where you'll draw your arrow. The use system doesn't try to dictate how or where to display the notification, it only gives a means to communicate with the actor that is 'chosen usable'.

                                Comment

                                Working...
                                X