Announcement

Collapse
No announcement yet.

Blueprint Dialogue System

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

    Hello Mr. Grogger and everybody.

    I've bought your Blueprint Dialogue system some times ago, I was playing with and it worked pretty well.

    I'm back in UE4 for few days and I'm looking into using your system once again... Buuuut... I'm looking for trigger a dialogue by a simple BoxTrigger. I know it's possible to do that, you said it multiple times in this topic. But, I can't figure how to do it myself, since I'm still a complete beginner.

    If someone could give me hand on how they managed to do it, or if you, mr.Grogger could try to explain that how that works, i'd be so grateful.

    Thanks by advance and, once again, great job on that system.

    EDIT : Oh, and I have an Error/Warning about Widgets... But there is no location to it and it doesn't affect anything (My dialogues work perfectly fine...)
    Any clue ?
    Attached Files
    Last edited by Ednoc; 11-22-2017, 06:44 AM.

    Comment


      Originally posted by Grogger View Post

      Hi mikezteh,

      You should be able to safely ignore the depricated nodes, they haven't caused any problems so far (at least up until 4.18). With the sample project, there is no configuring to do - the standalone sample project should just work out of the box.

      Can you create a new project from the launcher to see if it still has the issue?
      EDIT: Which editor version are you working in by the way? I've just tried a new project with 4.18.1 from the launcher without any problems.
      Let me walk you through my steps.

      This applies to 4.17.2 and 4.18.1

      I fresh install a template ( I have tried with top down and 3rd person ).
      I migrate the dialogue folder to my content.
      I open the sample and play - everything works fine
      I create my own dialog from the demo given in the video and I am unable to execute the event ("Press E to...")

      I have gone into your controller and looked at the was you are scanning for events and checking the buttons and such so I try to use that but still no luck.

      I guess my problem is that I am, as of now, unable to integrate this into my existing project from scratch.
      Mike "Z"
      UI / Game Designer
      LinkedIn

      Comment


        Originally posted by Ednoc View Post
        Hello Mr. Grogger and everybody.

        I've bought your Blueprint Dialogue system some times ago, I was playing with and it worked pretty well.

        I'm back in UE4 for few days and I'm looking into using your system once again... Buuuut... I'm looking for trigger a dialogue by a simple BoxTrigger. I know it's possible to do that, you said it multiple times in this topic. But, I can't figure how to do it myself, since I'm still a complete beginner.

        If someone could give me hand on how they managed to do it, or if you, mr.Grogger could try to explain that how that works, i'd be so grateful.

        Thanks by advance and, once again, great job on that system.

        EDIT : Oh, and I have an Error/Warning about Widgets... But there is no location to it and it doesn't affect anything (My dialogues work perfectly fine...)
        Any clue ?
        Depending on your scenario, you can either make a custom trigger box actor and add a dialogue box component to it, OR find the actor with the dialogue component you want when the box is triggered.

        Once you have the dialogue component you're looking for, "SetState" is the function to call to start the dialogue you want (the input would be the branch name).

        Yea, the warnings are because I'm maintaining a version from 4.9. Other than the warnings though, you're right that they don't [seem to] have any adverse effects.

        Comment


          Originally posted by mikezteh69 View Post

          Let me walk you through my steps.

          This applies to 4.17.2 and 4.18.1

          I fresh install a template ( I have tried with top down and 3rd person ).
          I migrate the dialogue folder to my content.
          I open the sample and play - everything works fine
          I create my own dialog from the demo given in the video and I am unable to execute the event ("Press E to...")

          I have gone into your controller and looked at the was you are scanning for events and checking the buttons and such so I try to use that but still no luck.

          I guess my problem is that I am, as of now, unable to integrate this into my existing project from scratch.

          Ah ok, I'll go through some possible problems and maybe I'll scratch the issue.

          * The default collision channel for the UseScanner is the Visibility channel. Make sure the actor handles this trace channel as block (overlap might also work), or change the UseScanner to use a different channel that is handled this way.
          NOTE: Characters in UE4 have a default visible channel of ignore for some reason. (anecdote) I have changed this in my projects with hundreds of characters without noticing a difference - no idea why it's the default.

          * Make sure ScanForUsables in BPC_UseScanner is being called (set a breakpoint at the start of the function). If it's not called, either make sure the tick is enabled on the component, or ScanForUsables is called manually.
          * Make sure that your Use input is being called properly
          Note: The message "Press E to Use" is a debug print message in the sample, these don't print in packaged builds

          Comment


            Originally posted by Grogger View Post


            Ah ok, I'll go through some possible problems and maybe I'll scratch the issue.

            * The default collision channel for the UseScanner is the Visibility channel. Make sure the actor handles this trace channel as block (overlap might also work), or change the UseScanner to use a different channel that is handled this way.
            NOTE: Characters in UE4 have a default visible channel of ignore for some reason. (anecdote) I have changed this in my projects with hundreds of characters without noticing a difference - no idea why it's the default.

            * Make sure ScanForUsables in BPC_UseScanner is being called (set a breakpoint at the start of the function). If it's not called, either make sure the tick is enabled on the component, or ScanForUsables is called manually.
            * Make sure that your Use input is being called properly
            Note: The message "Press E to Use" is a debug print message in the sample, these don't print in packaged builds
            I will try that, yes aware of the press E message. I have a UMG messaging system I am sending but the trace/collision may be the issue because UMG isn't even getting the message. But for what it is worth I also changed the default player (in my game mode) to yours to see if there was a dependency or setting I was missing and it did not work.

            For sanity I also tried pressing E and clicking on it without messaging to see if something was still working under the hood but no luck...

            P.S. Thank you for working with me on this. It is difficult trying to do advanced things and creating complete prototypes as just a UI designer

            *EDIT*

            So I tried making the changes, integrating the controls to my player and running it and all hell breaks loose :/

            I am including my PIE warnings.
            Attached Files
            Last edited by mikezteh69; 11-22-2017, 01:51 PM.
            Mike "Z"
            UI / Game Designer
            LinkedIn

            Comment


              Originally posted by Grogger View Post

              Depending on your scenario, you can either make a custom trigger box actor and add a dialogue box component to it, OR find the actor with the dialogue component you want when the box is triggered.

              Once you have the dialogue component you're looking for, "SetState" is the function to call to start the dialogue you want (the input would be the branch name).

              Yea, the warnings are because I'm maintaining a version from 4.9. Other than the warnings though, you're right that they don't [seem to] have any adverse effects.
              Hi, thanks for this quick reply, Grogger.

              I'm trying to figure both way to do it, like that I'm sure I could do it in anyway possible... And to understand how it works.

              So, I created a simple Triggerbox, then like any other blueprint, and I added a dialogue component... But the regular "Press 'E' to interact" dosen't show up. I was thinking about creating an invisible mesh with no collision but I don't think it'll work either and... Probabnly it's not a good way to do it.

              And for the other method, I'm still trying to figure how I could make it works on a level blueprint. I've managed to find how to have the "Set State' (Target is BPC dialogue) buuut... I don't know if it's good or not.

              I have a lot of things to learn about this dialogue system I guess. And the documentation is pretty complicated for me... My apologies for my lack of knowledge, I'm just trying to make simple things and I can't really figure how that's work.
              I have no more problems with the system itself otherwise. And, like I remembered, it's great.

              Comment


                Originally posted by Ednoc View Post

                Hi, thanks for this quick reply, Grogger.

                I'm trying to figure both way to do it, like that I'm sure I could do it in anyway possible... And to understand how it works.

                So, I created a simple Triggerbox, then like any other blueprint, and I added a dialogue component... But the regular "Press 'E' to interact" dosen't show up. I was thinking about creating an invisible mesh with no collision but I don't think it'll work either and... Probabnly it's not a good way to do it.

                And for the other method, I'm still trying to figure how I could make it works on a level blueprint. I've managed to find how to have the "Set State' (Target is BPC dialogue) buuut... I don't know if it's good or not.

                I have a lot of things to learn about this dialogue system I guess. And the documentation is pretty complicated for me... My apologies for my lack of knowledge, I'm just trying to make simple things and I can't really figure how that's work.
                I have no more problems with the system itself otherwise. And, like I remembered, it's great.
                If you go the route of using a built-in trigger box, you'll need to use the Level Blueprint to call SetState on it (and you'll need to use the Get components Function to find the BPC_Dialogue component you've placed on your trigger box, since the level blueprint doesn't know that this specific trigger box has that component).

                The other method would be a new Blueprint class with your BPC_Dialogue component and a collision volume with the overlap event triggering the SetState function.

                The "Press E" message only shows up when the BPC_UseScanner detects an actor on the Visibility trace channel (assuming it's been configured correctly), but trigger boxes are ignored on this trace channel, so it wouldn't be detected.

                Hopefully this helps

                Comment


                  Hello everybody.

                  Thanks again for your help^Mr.Grogger and for this awesome dialogue system.

                  For these who have isseus with the character who keep going to the last direction pressed, I have found a solution.

                  What you have to do is to simply set your charecter walkspeed to 0 on your Overlap event.

                  In your character blueprint, use your input key movement (Z, Right or whatever you press to move) and set your walkspeed to the original amount. It does the trick, you character won't move by himself.

                  I think it's pretty simple, but if you don't understand this solution (Because my english is THAT bad), I can show you how I did. It's not the best, I guess and it's pretty messy and dumb, I suppose, but it works.

                  Comment


                    Originally posted by Grogger View Post

                    Hi there,

                    I've never used spine before, but the portrait is a standard UMG Image widget by default if that helps. If it isn't compatible with Unreal Motion Graphics, and this is definitely a bit of a hack but, you could do something like have a blank cut-out where the portrait would be, and manage the spine animation from dialogue script functions or some other external system.
                    Hello,

                    So on the topic of mixing 2D Mesh/Skeletal Animation runtimes with UMG, I have recently added UMG rendering support for Creature runtimes:
                    https://github.com/kestrelm/Creature_UE4

                    Link to the video demo:
                    https://twitter.com/KestrelmMoon/sta...87561229877249

                    You might be interested to check it out.

                    Cheers

                    Comment


                      Hi, does your plugin come with the C++ source? It's not clear from the Marketplace.

                      Comment


                        Originally posted by benhumphreys View Post
                        Hi, does your plugin come with the C++ source? It's not clear from the Marketplace.
                        Hi Ben, no there is no C++ code for this system, it's entirely written in blueprints.
                        Cheers!

                        Comment


                          Hi Grogger,

                          I'm making an isometric game. How would I trigger dialogue by mouse (clicking on the character/object) rather than pressing E to initiate dialogue?

                          Comment


                            Originally posted by dewdle View Post
                            Hi Grogger,

                            I'm making an isometric game. How would I trigger dialogue by mouse (clicking on the character/object) rather than pressing E to initiate dialogue?
                            Hi dewdle,

                            Dialogues are triggered through the 'Use' interface function in BPC_Dialogue. If you already have an interaction system, you can simply call that function from your interaction system.
                            If you don't already have an interaction setup, there are 2 options provided with the Dialogue System. BPC_UseScanner is the one used in the demo, but another called BPC_MouseUseScanner could be used for your scenario instead.

                            Both scanners follow the same setup as the demo and tutorials, so you can check those out to see how to implement it.

                            Cheers!

                            Comment


                              I seem to be having the same issue as a couple other posters here with the movement state being saved on Use. An easy solution for me would just be to have a PostAction that handles that side of things. Unfortunately, the documentation isn't very clear on *how* exactly you should implement PostActions. I tried two things, neither of which worked. They include: setting a variable on the player [$PlayerCharacter@boolean=true$], and calling a function [DialogueEnded]. In reality, I think this is just an implementation issue on my end. However, as I've spent a good 5 hours trying to solve this today, my brain is shot and thought I'd just reach out and see how we're intended to implement PostActions.

                              Edit: Am I understanding hubs right? So you would set a trait of hub to a text where like you were saying..

                              Dude_A: Hey, player, will you do thing for me? [HUB]
                              Player: Yes/No

                              and then return to Dude_A based on that response? Or is every single question "baked," resulting in a whole slew of PlayerYes and PlayerNo checks across however many questions?
                              Last edited by ZServ; 03-05-2019, 08:59 PM.

                              Comment


                                Originally posted by ZServ View Post
                                I seem to be having the same issue as a couple other posters here with the movement state being saved on Use. An easy solution for me would just be to have a PostAction that handles that side of things. Unfortunately, the documentation isn't very clear on *how* exactly you should implement PostActions. I tried two things, neither of which worked. They include: setting a variable on the player [$PlayerCharacter@boolean=true$], and calling a function [DialogueEnded]. In reality, I think this is just an implementation issue on my end. However, as I've spent a good 5 hours trying to solve this today, my brain is shot and thought I'd just reach out and see how we're intended to implement PostActions.

                                Edit: Am I understanding hubs right? So you would set a trait of hub to a text where like you were saying..

                                Dude_A: Hey, player, will you do thing for me? [HUB]
                                Player: Yes/No

                                and then return to Dude_A based on that response? Or is every single question "baked," resulting in a whole slew of PlayerYes and PlayerNo checks across however many questions?
                                Hi ZServ,


                                This is what it should look like for your examples (assuming you've made a custom function in Blueprints called DialogueEnded):

                                PlayerCharacter@boolean = true; DialogueEnded();

                                This will create or update a variable called "boolean" to true in a namespace called PlayerCharacter (this doesn't create a variable in the actual player character, but instead creates a variable in the dialogue's scripting subsystem).

                                Functions must be called with the parentheses and the appropriate number of arguments. In this case, I'd expect DialogueEnded to be a function requiring no arguments.



                                Marking a branch with a hub trait will show all potential follow up branches as options for the player to choose.
                                In your case, you'd have 3 branches:

                                The branch "Hey, player..." would have 2 follow up branches "PlayerYes", and "PlayerNo". These will be the responses that display for the player to choose from, and when the player makes the choice, that branch will execute.



                                If you haven't seen it yet, take a look at the sample content to see an example of hubs, post actions, and variables. There is a demo map to show an example of the features, and the excel sheets are available in the content folders (the in-engine data-tables might be easier to read at first though).


                                Hope that helps

                                Comment

                                Working...
                                X