Announcement

Collapse
No announcement yet.

Dialogue Plugin

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

  • replied
    Originally posted by Nemo1991 View Post
    Hey there.
    I have a question about the dialogue events functionality:
    Is it possible to turn it in some kind of a static event dispatcher? In the tutorial video I see that You've used a controller blueprint to interact with other actors. Is there a more modular approach possible?

    Essentially I would like for it to work along these points:
    1. I create an instance of my blueprint that shows a dialog in a level when a player goes near it. (imagine a NPC that starts a conversation when You approach him)
    2. I chose in the instance which dialogue should be used here. (may be kept as variable in the blueprint - no problem)
    3. I add some events to the dialogue to make it more influential on the environment and define it's parameters. (ex. event that would change a light color and I pass in the dialogue node the color value)
    4. I add listening functionality to some actor's blueprint (a blueprint class maybe?) that listens for a particular event and does something with it. (ex. a light changes it's color defined previously in the dialogue)
    5. I create 5-6 more instances of the light and they should automatically listen for the same event.
    6. I create a different blueprint that also listens for the light changing event and do something different with it. (ex. when the player choose the red color the gate with the same color opens)

    I've already tried event dispatchers, but You need a target to bind in to that, and I don't know how to get an instance of the event from a different blueprint.
    Please, let me know if the explanation is sufficient enough and You get what I'm trying to achieve here (reusability is the key). Also, I should mention that I'm new to the Unreal Engine stuff as I previously worked with Unity for couple of years (there I would simply do it with a static event and a Monobehaviour that adds a delegate to it), so this may be a trivial issue or some known design pattern that I can't seem to grasp.

    Thanks in advance and I hope for Your, much needed, support.
    To answer your question, nodes such as "Get All Actors of Class", "Spawn Actor from Class", "Set Timer By Event", etc have all been exposed to the plugin's conditions/events system in the later versions of the plugin (rendering the tutorial slightly obsolete), so now you don't have to interact with the environment through the PlayerController. It's all possible right inside the condition/event logic.

    Leave a comment:


  • replied
    Originally posted by cloganart View Post
    Hey there

    I was wondering the network capabilities of this project. We are working on an MMO and we need a dialogue system that we can incorporate with our quests. I was wondering the network replication capabilities of This system in particular.
    There's no out of the box network support, no. Dialogue lines in MMOs aren't normally sent through the network, so I would suggest sending node ids from client to server every time you select a dialogue line. Clients would have authority in navigating the dialogue tree (so no delay occurs), but the server would have to check if the navigation that is happening is allowed, and if so, would fire necessary events.

    Originally posted by SirCashinOut View Post
    How can I get animations played on NPC Answers?
    Depends. There are multiple ways to go about it depending on how frequently you want animations to play, and if you want specific montages to play or just a random chit chat animation to play every time the NPC says something.

    If it's the former, I'd suggest each node to have an enum chat_animation {Angry, Casual, Casual 2, Amused, etc}, and to have the UMG widget trigger that animation on the NPC every time a new NPC line is displayed. I can go into more detail about that if this is what you need.

    And if you simply want to play a specific montage, try doing it through the event system that is described in tutorial #2.


    Originally posted by codarth View Post
    The NPCActor node coming off 'Event Recieve Event Triggered'... What does it return? I tried printing just the name of the 'whatever it is' and get nothing. The Considering Player node gives me the player controller.


    PS... Receive is spelt wrong. Thought you should know.

    Make sure something is connected to the NPCActor pin when spawning the dialogue widget:

    Last edited by CodeSpartan; 06-03-2018, 11:53 AM.

    Leave a comment:


  • replied
    Originally posted by Wu Yao View Post
    Could you make a video how you trigger the dialogue with gamepad? Many thanks
    Code Spartan made a few videos showing how to do this.
    - Part 1 https://www.youtube.com/watch?v=Xs1m...ature=youtu.be
    - Part 2 https://www.youtube.com/watch?v=4wq1...ature=youtu.be

    Leave a comment:


  • replied
    The NPCActor node coming off 'Event Recieve Event Triggered'... What does it return? I tried printing just the name of the 'whatever it is' and get nothing. The Considering Player node gives me the player controller.


    PS... Receive is spelt wrong. Thought you should know.

    Leave a comment:


  • replied
    Could you make a video how you trigger the dialogue with gamepad? Many thanks

    Leave a comment:


  • replied
    Hey there

    I was wondering the network capabilities of this project. We are working on an MMO and we need a dialogue system that we can incorporate with our quests. I was wondering the network replication capabilities of This system in particular.

    Leave a comment:


  • replied
    Hey there.
    I have a question about the dialogue events functionality:
    Is it possible to turn it in some kind of a static event dispatcher? In the tutorial video I see that You've used a controller blueprint to interact with other actors. Is there a more modular approach possible?

    Essentially I would like for it to work along these points:
    1. I create an instance of my blueprint that shows a dialog in a level when a player goes near it. (imagine a NPC that starts a conversation when You approach him)
    2. I chose in the instance which dialogue should be used here. (may be kept as variable in the blueprint - no problem)
    3. I add some events to the dialogue to make it more influential on the environment and define it's parameters. (ex. event that would change a light color and I pass in the dialogue node the color value)
    4. I add listening functionality to some actor's blueprint (a blueprint class maybe?) that listens for a particular event and does something with it. (ex. a light changes it's color defined previously in the dialogue)
    5. I create 5-6 more instances of the light and they should automatically listen for the same event.
    6. I create a different blueprint that also listens for the light changing event and do something different with it. (ex. when the player choose the red color the gate with the same color opens)

    I've already tried event dispatchers, but You need a target to bind in to that, and I don't know how to get an instance of the event from a different blueprint.
    Please, let me know if the explanation is sufficient enough and You get what I'm trying to achieve here (reusability is the key). Also, I should mention that I'm new to the Unreal Engine stuff as I previously worked with Unity for couple of years (there I would simply do it with a static event and a Monobehaviour that adds a delegate to it), so this may be a trivial issue or some known design pattern that I can't seem to grasp.

    Thanks in advance and I hope for Your, much needed, support.

    Leave a comment:


  • replied
    How can I get animations played on NPC Answers?
    Last edited by SirCashinOut; 04-23-2018, 08:05 AM. Reason: Fixed my other problem...

    Leave a comment:


  • replied
    Had to resubmit again, since Epic have some problem with building plugins for IOS due to an internal bug.
    The 4.19 version will be unavailable for Mac until they fix it.

    Leave a comment:


  • replied
    Originally posted by Firiatss View Post
    When will the 19 version of the engine appear?
    Sure. I submitted it a while ago, but Epic is tied up with the GDC at the moment, so it may take them a while to process the update.

    Leave a comment:


  • replied
    When will the 19 version of the engine appear?

    Leave a comment:


  • replied
    Originally posted by CodeSpartan View Post
    It looks like you did something wrong...​​​​
    Sorry, I was updating my post as I worked on it so I figured all that out as you were replying. Didn't expect you to reply so fast Looks like you replied to a version while I was still playing around.

    I got it working mostly and figured out that I can hide the mouse cursor after the Event Destruct is called so no worries there.
    In the Dialogue widget I made the mistake of connecting the "Next Text" into the Set Text node instead of the "NPCtext" so that fixed the issue with the PC dialogue showing up as the continue button.

    The "Continue" button does flash on for a split second just before the NPC text is displayed which is odd.
    I also didn't know what you meant by add a second delay to the Set Timer by Event node. I just put a standard delay node in between the Clear Children of the Player Vbox and the Set Visibility of the Next button.



    Leave a comment:


  • replied
    Originally posted by TorQueMoD View Post
    however the after selecting your response, it's pushed over to the right side of the screen but when I open the widget there's no indication of where this response is going to appear so I can't move it to a better location.
    Originally posted by TorQueMoD View Post
    Also instead of being replaced with "Continue" now, the entire PC text is being turned into a continue button which makes it a bit confusing.
    It looks like you did something wrong. Double check everything, and if that doesn't help, send me your widgets to codespartan.supp@gmail.com

    Originally posted by TorQueMoD View Post
    Another point I was going to make is that there's no delay in between the NPC text/audio and your responses showing up so it disrupts the flow of the conversation in that you see your response options before the NPC finishes speaking their lines.
    Yes. Add a second to the "Set Timer By Event" node that you made.

    Originally posted by TorQueMoD View Post
    As for the animations, I can't code C++ yet so I was hoping for an easy way to trigger them via blueprint. Something simple like the ability to trigger a custom event inside the NPC blueprint would be enough for me to get the animations working. I'm guessing your event system tutorial would show how to do this?
    Yes, it would.

    Originally posted by TorQueMoD View Post
    Oh, also, how do I detect when a dialogue has ended?
    Section 5.2 in the documentation.

    Originally posted by TorQueMoD View Post
    Essentially I think it's being moved to the "Continue" button location which was going to be my next question for you since it's not in the widget I don't know how to move it's location.
    It's in the DemoDialogueWidget. There's an "eye" next to it which hides it, just click on it.

    Leave a comment:


  • replied
    Originally posted by CodeSpartan View Post
    2) I slightly modified DemoDialogueWidget and DemoReplyWidget to achieve what you basically have in Witcher 3. It's very basic, so if you need to modify it further, you should be able to. Here's what I did:
    Firstly, thanks so much for the quick reply! Your solution SORT OF works... It's playing the PC audio now which is awesome, however I had to add in a delay based on the duration of the NPC audio to avoid audio doubling if the player clicked on their next choice before the NPC finished talking. Figured I'd point that out before you implement it into the next update.


    Also, you had the PC text being pushed to the "Next Button" slot after you choose your reply which is confusing because instead of saying "Continue" it was filling it with the response that you just selected so I broke that and just entered "Continue" into the Set Text Slot so it always shows as a continue button when it needs to. Also the way you had it configured if you clicked on that PC response that was filling the Next button text while the player audio was playing, it would skip to the next NPC line without waiting for the player audio to finish playing so you got audio doubling again. I added in another delay based on the duration of the PC audio which fixed this but it would be nice for "captioning" purposes if I could have the player responses clear the previous NPC text and appear in that same spot. Then anyone playing without audio would still get a chance to read the response as it plays. It's not a huge thing though since you do get to read it before you click on it. I'm sure I could get it working if I try as it's likely just a matter of playing around with the nodes in the dialogue widget, it's just taking me a while to figure out where everything is.

    As for the animations, I can't code C++ yet so I was hoping for an easy way to trigger them via blueprint. I was thinking I could just fire an event off of each NPC Answer node in the Dialogue that triggers a custom event inside my NPC blueprint which plays a canned animation. I'm guessing your event system tutorial would show how to do this but I haven't watched it yet.

    Thanks!
    Last edited by TorQueMoD; 03-16-2018, 08:49 PM.

    Leave a comment:


  • replied

    Originally posted by micabreen View Post
    is it possible for some lower level beginner tutorials for working with events and conditions? i am having a problem doing anything with the plugin as far as dialogue events go.things i want to do
    when a answer is chosen (examine) do a fly around of the npc. i am guessing this will be using the sequencer but not to worried about this one currently..
    the other thing is i have made my npc's all randomly generate stats. and i have these stats displaying on a widget and i wish to show this widget for the specified npc but cant figure how to reference it from the event dialogue blueprint you instruct in tutorial for creating events.. some handy small tutorials would be great to give me a idea on some things.. i am only 3-4 months into unreal so excuse my lack of knowledge i am trying to learn all that i can
    on another note i notice when you create a dialogue event is has considering player and npc actor nodes on override event
    what are these for?

    When you create your widget, save a reference in gameinstance. Gameinstance is a persistent singleton that exists while the game is running, isn't replicated, and transitions between levels. It's very typical to store umg references into it. Then access the reference by getting game instance from events/conditions.
    As for the camera flying around, I never did anything like that and I'm not familiar with the sequencer, so I can't answer that. I'd suggest you join Unreal Slackers, it's a discord channel for ue4 users of all level, and there's a strong chance that you'll find help there with all kinds of questions you may have while learning unreal.

    Originally posted by TorQueMoD View Post
    Just purchased this plugin after having miles of headache with another one. I just have two questions:
    1) What is the best way to trigger animations when an NPC is talking? Should I use the event system or?
    2) How do I play sound files when the player gives their response?

    Thank you.
    2) I slightly modified DemoDialogueWidget and DemoReplyWidget to achieve what you basically have in Witcher 3. It's very basic, so if you need to modify it further, you should be able to. Here's what I did:
    - In DemoDialogueWidget, create a variable 'CurrentPlayerNode' of type 'DialogueNode'. Create a variable 'PlayerReplyTimer' of type TimerHandle.
    - In DemoDialogueWidget, create a method 'PlayPlayerReply', here's the code for it: https://i.gyazo.com/3be81efa6c26e229...5558695ab7.png (also create GoToNpcReplyTimer method)
    - Modify DemoDialogueWidget in this section like so: https://i.gyazo.com/008f297d6c8032db...925ec12236.png
    - Modify DemoDialogueReply in this section like so: https://i.gyazo.com/030ce4a1eafa8345...adfc83c1f1.png

    That should do it. When you click on a player reply, it's now going to be displayed for the duration of the sound file. You'll also have a "continue" button. If you use the dialogue waves, you'll have to slightly alter the code, but it should be fairly easy.

    It's a good addition. I'll add all this code to the 4.20 version of the plugin, the 4.19 version already having been submitted.

    1) Depends on the implementation that you want. If I was making an RPG, I'd insert two enums. One for facial morph targets, like "angry expression", and another for gesticulation (hands, body posture, head movement, etc). And I'd just have two arrays of animations on an NPC, and play whichever was selected in the two enums.
    If a special animation had to be played, I'd add an anim montage field. I'd be adding those things in Dialog.h, right where "isPlayer" variable is. Adding a UPROPERTY with appropriate fields to a variable would automatically expose the variable just like "isPlayer" is exposed.
    Let me know if you need a more in-depth explanation on that.
    Last edited by CodeSpartan; 03-15-2018, 10:51 AM.

    Leave a comment:

Working...
X