Announcement

Collapse
No announcement yet.

Blueprint Dialogue System

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

    Originally posted by Cinebeast View Post
    A bit. Let's see if I'm following you correctly.

    When I go to open another level, I call an event on the Game Mode like this:

    [ATTACH=CONFIG]111824[/ATTACH]

    Which calls an event in the Game Instance, an event that sets an empty variable array to store the Script Interpreter information. How do I copy that information back into the Game Mode when the new level has loaded? The Game Mode won't be able to discriminate between when to get that information and when not to, since it's created anew with every level, right? So, I guess I'm still a little stuck.
    The Game Mode should be created when the new level is loaded, you should then be able to check the game instance to see if exists and has variables in it's array (is empty or not). if it's not an empty array, then copy it over, otherwise it's a new game.
    Note: I haven't done this myself (I strictly use streaming levels in my projects), but I believe that should work out.

    Comment


      [MENTION=2545]Grogger[/MENTION]

      It worked! Thank you so much! Sorry for being slow.

      I feel like I should mention a bug I ran into during the course of all this. At some point after closing and reopening the project, I found that all of the dialogue components on the various pawns and static meshes in my level had been wiped clean. I had to type in the Names and Branches and such all over again -- not a big hassle, but annoying.

      I'm not even sure if that's a problem with your add-on or with the engine itself, but I thought I'd mention it in case you know what's going on there.

      Anyway, thank you again! I think I've got a handle on storing and sharing dialogue variables between levels now.
      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
        [MENTION=2545]Grogger[/MENTION]

        It worked! Thank you so much! Sorry for being slow.

        I feel like I should mention a bug I ran into during the course of all this. At some point after closing and reopening the project, I found that all of the dialogue components on the various pawns and static meshes in my level had been wiped clean. I had to type in the Names and Branches and such all over again -- not a big hassle, but annoying.

        I'm not even sure if that's a problem with your add-on or with the engine itself, but I thought I'd mention it in case you know what's going on there.

        Anyway, thank you again! I think I've got a handle on storing and sharing dialogue variables between levels now.
        Very glad to hear it's working

        Hmm, I haven't encountered that problem myself. I would guess it's an engine issue, because those parameters are just exposed name variables and I don't think I'm setting their defaults anywhere. If it is an engine bug, that's pretty scary stuff! Thanks for mentioning it, I'll keep an eye out for it.

        Comment


          [MENTION=2545]Grogger[/MENTION]

          I'm currently working on a text heavy game, and the idea of getting such a grounded dialogue system right out of the box sounds like an absolute dream, however I do have a few question before purchasing (I hope you don't mind!)

          my main concerns are about being able to implement additional commands into the spread sheets.

          I'm a 3D artist who has a very basic understanding of C++. The game I'm working on is a visual novel style concept. As well as a character portrait, I also want 3 UI elements, Which would be the characters (Hand drawn UMG elements) Anchored above the text box. These characters would have 8 different pictures/portraits each, as well as 2 basic UMG animations. If possible, I would like to be able to activate all those with commands inside the data tables, however with my limited programming knowledge, I'm worried about being able to extend that functionality.

          If possible, could you please give me, a basic guy, an idea on what it would be like adding commands into your system?
          Would it be possible to add blueprint functionality into commands?

          Thanks a ton!

          Comment


            Originally posted by Sneeman View Post
            [MENTION=2545]Grogger[/MENTION]

            I'm currently working on a text heavy game, and the idea of getting such a grounded dialogue system right out of the box sounds like an absolute dream, however I do have a few question before purchasing (I hope you don't mind!)

            my main concerns are about being able to implement additional commands into the spread sheets.

            I'm a 3D artist who has a very basic understanding of C++. The game I'm working on is a visual novel style concept. As well as a character portrait, I also want 3 UI elements, Which would be the characters (Hand drawn UMG elements) Anchored above the text box. These characters would have 8 different pictures/portraits each, as well as 2 basic UMG animations. If possible, I would like to be able to activate all those with commands inside the data tables, however with my limited programming knowledge, I'm worried about being able to extend that functionality.

            If possible, could you please give me, a basic guy, an idea on what it would be like adding commands into your system?
            Would it be possible to add blueprint functionality into commands?

            Thanks a ton!
            Hi Sneeman,

            Thanks for your interest

            Sure thing this is very possible. The Dialogue UMG interface will need to be customized (here's a small blurb about this in the documentation) of course, especially for the multiple characters thing, and you could definitely add customized functions, but it is a Blueprint only system, so there's no direct C++ interaction with the system.

            Take a look at the scripting section of the documentation, specifically the Custom Function section.

            The sample project that comes with it has examples of custom functions and interfaces, so you'll have that at your disposal as well.

            Cheers!

            Comment


              That's awesome! Great to see that content on the Marketplace!

              Thanks Grogger and congrats!!!

              Comment


                Originally posted by Harry_SofMagic View Post
                That's awesome! Great to see that content on the Marketplace!

                Thanks Grogger and congrats!!!
                Thanks very much

                Comment


                  Hello Grogger,

                  I have reviewed all the plug-in and blueprint dialogue systems on the Marketplace, looking for a few specific features and functions found in games like Fallout 4. Can you tell me if the following are configurable or even possible with changes to your system:

                  1. Can I turn off the typewriter feature...and play a voice over, while the subtitles are displayed on screen?
                  2. Can a branch choice by the player trigger a NPC dialogue animation (get angry, point finger) or action (such as attack the player or walk away) in addition to a sound or response (laugh, another dialog branch)?
                  3. Does this come with a camera control feature, if not how difficult would it be to add one?
                  4. Does this come with a feature linking dialog to specific conditions (mission or quest completion, completion of dialogue with another NPC, experience level, in game events like enemy appears)?
                  5. Does this support random passive dialogue by NPCs, with option to turn off subtitles and use voice only, and link passive dialogue to specific animations, such as a shop seller trying to engage you to buy something?
                  6. How difficult would it be to turn the head of an NPC towards the player during the dialogue then back away after the dialogue is complete, like we see in Fallout 4?

                  Thanks for you time.

                  Comment


                    Hi CrashA51, thanks for your interest!

                    I'll try to address your questions as best I can:

                    Originally posted by CrashA51 View Post
                    1. Can I turn off the typewriter feature...and play a voice over, while the subtitles are displayed on screen?
                    Yes, the typewriter feature could be made instant in order to disable it.

                    2. Can a branch choice by the player trigger a NPC dialogue animation (get angry, point finger) or action (such as attack the player or walk away) in addition to a sound or response (laugh, another dialog branch)?
                    Yes, the system features a customizable scripting system that you can trigger any custom blueprint code you'd like either Inline during the dialogue, as a post-action after the dialogue before the next, or as a pre-action before the dialogue starts. You could create your own functions that could trigger any type of actions.

                    There are pre-built functions and a convenient slot for audio voice overs.

                    3. Does this come with a camera control feature, if not how difficult would it be to add one?
                    It doesn't come with camera features, though using the custom functions mentioned above, you can do this quite easily (I've done this in my own project mentioned in my sig, but the implementation is too custom to put into the dialogue system).

                    4. Does this come with a feature linking dialog to specific conditions (mission or quest completion, completion of dialogue with another NPC, experience level, in game events like enemy appears)?
                    The system has several generalized mechanisms for this. First there's the branch conditions column that will help select which branch should be used at this time (based on your own custom script variables - eg. goblinKing@hasStartedQuest == true || GetPlayerLevel() > 5), and then there's the UseConditions which help inform the system whether an actor should be interactive at this time.

                    5. Does this support random passive dialogue by NPCs, with option to turn off subtitles and use voice only, and link passive dialogue to specific animations, such as a shop seller trying to engage you
                    to buy something?
                    Yes, a passive dialogue mode was added in v1.3, and a customized interface displaying nothing could be used to hide the subtitles, and animations/audio can be triggered as described above

                    6. How difficult would it be to turn the head of an NPC towards the player during the dialogue then back away after the dialogue is complete, like we see in Fallout 4?
                    Depending on how you implement the dialogue components, this can be as simple as checking if the dialogue is active on the specific character and looking at the player pawn if it is.

                    I hope that helps! Cheers

                    Comment


                      Hello again!

                      I've been having a lot of success with the system so far, but now I've hit an odd issue. I tried to package my game yesterday and failed, and after some time looking through the crash log and getting feedback from Epic staff, it looks like this add-on is the source of the problem. (Or one of the sources, at any rate.)

                      Here's the offending bit in the log:

                      Code:
                      UATHelper: Packaging (Windows (64-bit)): UE4Editor-Cmd: [2016.10.13-14.22.12:035][  0]LogBlueprint:Error: [Compiler BPC_SchoolDio] Error This blueprint (self) is not a TRASHCLASS_BPC_Dialogue_1387, therefore ' self ' must have a connection. from Source: /Game/BlueprintDialogues/Blueprints/BPC_Sch
                       UATHelper: Packaging (Windows (64-bit)): oolDio.BPC_SchoolDio
                      I'm not sure what any of that means, but I have a hunch.

                      For a little while now I've run into a weird bug where, every time I open the project, the child components that inherit from BPC_Dialogue refuse to compile. That "BPC_SchoolDio" you see in the log is one of the children I made. All I need to do is open BPC_Dialogue and compile it, then compile the children, and bam, they work.

                      So, easily fixed in the editor, but how do I fix things for a packaged project?

                      If you've seen anything like this or know how to proceed, please let me know. Thanks for being a cool cat, Grogger.
                      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
                        Hello again!

                        I've been having a lot of success with the system so far, but now I've hit an odd issue. I tried to package my game yesterday and failed, and after some time looking through the crash log and getting feedback from Epic staff, it looks like this add-on is the source of the problem. (Or one of the sources, at any rate.)

                        Here's the offending bit in the log:

                        Code:
                        UATHelper: Packaging (Windows (64-bit)): UE4Editor-Cmd: [2016.10.13-14.22.12:035][  0]LogBlueprint:Error: [Compiler BPC_SchoolDio] Error This blueprint (self) is not a TRASHCLASS_BPC_Dialogue_1387, therefore ' self ' must have a connection. from Source: /Game/BlueprintDialogues/Blueprints/BPC_Sch
                         UATHelper: Packaging (Windows (64-bit)): oolDio.BPC_SchoolDio
                        I'm not sure what any of that means, but I have a hunch.

                        For a little while now I've run into a weird bug where, every time I open the project, the child components that inherit from BPC_Dialogue refuse to compile. That "BPC_SchoolDio" you see in the log is one of the children I made. All I need to do is open BPC_Dialogue and compile it, then compile the children, and bam, they work.

                        So, easily fixed in the editor, but how do I fix things for a packaged project?

                        If you've seen anything like this or know how to proceed, please let me know. Thanks for being a cool cat, Grogger.
                        Hey Cinebeast,

                        What version of the editor are you running? I haven't seen a TRASH_CLASS bug since 4.12.

                        In my experience, these often had to do with circular references (eg. BPC_SchoolDio is aware of BPC_Dialogue, but was BPC_Dialogue changed to be aware of BPC_SchoolDio?). Another issue was with inherited blueprint functions and events that are several layers of inheritance deep (eg. a function declared in BPC_Dialogue is inherited by BPC_SchoolDio, and then again inherited by a child class of BPC_SchoolDio). The workaround to the function issue was to call a different inheritable function in the base class to avoid inheriting a function more than once or twice.

                        Comment


                          Originally posted by Grogger View Post
                          Hey Cinebeast,

                          What version of the editor are you running? I haven't seen a TRASH_CLASS bug since 4.12.

                          In my experience, these often had to do with circular references (eg. BPC_SchoolDio is aware of BPC_Dialogue, but was BPC_Dialogue changed to be aware of BPC_SchoolDio?). Another issue was with inherited blueprint functions and events that are several layers of inheritance deep (eg. a function declared in BPC_Dialogue is inherited by BPC_SchoolDio, and then again inherited by a child class of BPC_SchoolDio).
                          I'm running 4.13.1. I am, in fact, inheriting from a child component -- BPC_SchoolDio is a child of BPC_GenDio, which inherits from your own BPC_Dialogue. That explains it, then.

                          Originally posted by Grogger View Post
                          The workaround to the function issue was to call a different inheritable function in the base class to avoid inheriting a function more than once or twice.
                          Could you delve into this, please? I don't quite follow.
                          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
                            I'm running 4.13.1. I am, in fact, inheriting from a child component -- BPC_SchoolDio is a child of BPC_GenDio, which inherits from your own BPC_Dialogue. That explains it, then.
                            This is fine (it's how I do it too), but there shouldn't be circular references between them. Blueprints are a bit flimsy with this. <-- I'm guessing this will be the problem.


                            Originally posted by Cinebeast View Post
                            Could you delve into this, please? I don't quite follow.
                            It doesn't sound like this will be the problem because it's fixed in 4.13 afaik, but I'll explain it just in case:
                            Lets say you have a function called "Foo" in BPC_Dialogue, and in BPC_GenDio you override that function and it runs some custom code with a call to Parent::Foo, and then BPC_SchoolDio overrides the function again and also calls the Parent::Foo. BPC_SchoolDio's Foo function would cause a TrashClass bug (at least it used to).

                            The workaround would be to make a new function in BPC_GenDio (eg. Bar), and BPC_GenDio::Foo would call Bar. BPC_SchoolDio would then implement Bar instead of the very base Foo function

                            Comment


                              Originally posted by Grogger View Post
                              The workaround would be to make a new function in BPC_GenDio (eg. Bar), and BPC_GenDio::Foo would call Bar. BPC_SchoolDio would then implement Bar instead of the very base Foo function
                              I'm sorry, I'm not quite getting it yet I guess.

                              In BPC_GenDio I made a new function, which I called HandleScriptFunctionDio, where I moved all the scripting. Now all the original "HandleScriptFunction" does is call that function.

                              Click image for larger version

Name:	ue4_handlescriptfunction_child.png
Views:	1
Size:	41.4 KB
ID:	1116626

                              Unfortunately the error remains. In fact, it's worse -- now I can't compile GenDio without compiling the original BPC_Dialogue. Any clue what I missed?
                              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
                                I'm sorry, I'm not quite getting it yet I guess.

                                In BPC_GenDio I made a new function, which I called HandleScriptFunctionDio, where I moved all the scripting. Now all the original "HandleScriptFunction" does is call that function.
                                ...
                                Unfortunately the error remains. In fact, it's worse -- now I can't compile GenDio without compiling the original BPC_Dialogue. Any clue what I missed?
                                Yea, that's pretty much what I was talking about. Back when I was getting the trash_class issues with inheritance, that would fix it.

                                Have you checked for circular references with these three classes? That would be my best guess, I haven't dealt with trash_class errors outside of these two scenarios I'm afraid.

                                Comment

                                Working...
                                X