UE5 | Ultimate Dialogue System - Tutorial - Pt1

Поділитися
Вставка
  • Опубліковано 26 жов 2024

КОМЕНТАРІ • 97

  • @silentwindstudio
    @silentwindstudio 3 місяці тому +13

    If you are wondering if this series worth your time, the answer is a big YES, this series is the best tutorial you will find on UE dialogue systems on UA-cam.

  • @magicalgirllexluthor
    @magicalgirllexluthor 7 місяців тому +6

    I like the order in which you put everything together, and the instructions are clear and easy to follow. Thank you for creating this! I'm learning a lot.

  • @Aliicide666
    @Aliicide666 25 днів тому

    I'm so happy to find someone who actually takes the time to teach and explain what they are doing rather than listing off a laundry list. Great video, I'll definitely be watching more! Thanks :)

  • @dyarynych
    @dyarynych 4 місяці тому +2

    Excellent series. I've been trying to find a good (there are some, but gosh they are overcomplicated) dialogue system for my game and was very frustrated. Until I've found your tutorial - building your own (even if just following a tutorial) is so much more rewarding, because I at least have a basic understanding of how it works. Thanks a lot!

  • @nickname20151
    @nickname20151 2 місяці тому +1

    These lessons are so cool that even I with poor knowledge of English could understand them! Thank you very much

  • @nicocoregames
    @nicocoregames Рік тому +5

    This video was extremly helpful! thanks Michael

  • @HoracioSchvemler
    @HoracioSchvemler 3 місяці тому +1

    Perfect, just what I was looking for

  • @HaikuTutorials
    @HaikuTutorials 2 місяці тому

    This is amazing!! Thanks mate :)
    Tutorial start: 4:45

  • @LastIberianLynx_GameDev
    @LastIberianLynx_GameDev 5 місяців тому +2

    Was just looking for this. Thanks a lot.

  • @lefobenam
    @lefobenam Рік тому +4

    hey man, in 22:43
    , u said we need to do an output Enum, but i cant find enum dialogue... I dont know why, plz help me, but nice tutoriel

    • @mpattym
      @mpattym  Рік тому +2

      Near the beginning of the tutorial, I show you how to create the enum.

  • @fosomayi1289
    @fosomayi1289 Рік тому +3

    When I am clicking on the Yes/NO after the first dialogue comes up, the flow is not going ahead and not showing the further dialogues. When I am connecting the node UPDATED rather than PASS THROUGH, then it is showing the ending statement directly. What could be the issue here?
    This Error is coming up on the message log : : Blueprint Runtime Error: "Accessed None trying to read property OwningDialogueComponent". Node: Update Selected Option Graph: EventGraph Function: Execute Ubergraph W Dialogue Option Blueprint: W_DialogueOption

    • @Jasonpasene09
      @Jasonpasene09 5 місяців тому

      I've got same issue! did you find a fix?

    • @Jasonpasene09
      @Jasonpasene09 5 місяців тому

      I found the fix. open 'W_DialogueOption' then go to 'Graph' and make sure on 'Update Selected Option' it goes 'Owning Dialogue Component = Target' then 'Dialogue Index = Progress Index' then 'Option Index = Option Index'... I had Dialogue index and option index mixed up lol.

  • @HeathGleason
    @HeathGleason Рік тому +3

    Question Michael, how would you go about having expressions for each different emotion a character is having?

    • @mpattym
      @mpattym  Рік тому +6

      Make an enum for your different emotional stats, in the dialogue function add a switch on enum based on your enum.
      If you add the enum to your character as a var, you can then get it from your dialogue and plug it into the switch node.

    • @ahmadruslanovich739
      @ahmadruslanovich739 Рік тому

      @@mpattym Can you show how to do that?

    • @youngjojo3052
      @youngjojo3052 Рік тому

      @@ahmadruslanovich739 brother, get the enum and then do a switch on it and base on the answer, play a anim montage.

    • @izzy-mew
      @izzy-mew Рік тому

      I dont think they are talking about animation. Like Rune Factory, that has facial expressions thats an image change on the Dialogue widget. If not, its a question I have anyways. and there are no tutorials on it so this creator could get lots of traction to their channel if they did a tutorial on how to make an image that changes along with set dialogue. @@youngjojo3052 @mpattym

    • @izzy-mew
      @izzy-mew Рік тому +2

      I figured it out. It took me 2 full days... but I got it
      - Make New Enum with all the emotions (I called mine Enum_Expression_Image)
      -In W_Dialogue Make a New Function called SetImage
      -In W_Dialogue in Designer, the image you wish to change, Make it a variable (I named mine EmotionalStateImage)
      -In W_Dialogue in Designer go to the appearance in the details panel and "bind" the -brush to EmotionalStateImage.
      --In SetImage Make "Switch on Enum_Expression_Image".
      --In SetImage Function (Set)-"EmotionalStateImage" to each expresion with the desired image
      -In W_Dialogue add SetImage to UpdateDialogue
      -In AC_Dialogue_Base Select the fist node in Add Dialogue and go to the Inputs in the details tab and add input. set it to Enum_Expretion_Image. It will then show as value on the Add Dialogue Node (Called Expression)
      -In AC_Dialogue_Base Add SetImage to the Add Dialogue Function after true on the branch and connect the Expression to Expression
      -In AC_Dialogue_Mouse In Dialogue Function the Add Dialogue component should have an Expression that you can then set as any expression from the Enum and when you talk it should be able to see the expressions how you set it up in the Widget.
      Let me know how you go. I tried to be as clear as possible
      @@ahmadruslanovich739

  • @nswayze2218
    @nswayze2218 9 місяців тому +1

    Wow this looks really good! How would you cause the dialogue to trigger without it being a 3D world? As in it just starts on run? (For people making a dialogue game)

    • @mpattym
      @mpattym  9 місяців тому +2

      You could add the dialogue component to the player controller and have it start the dialogue on begin play.

    • @nswayze2218
      @nswayze2218 9 місяців тому +1

      @@mpattym Got you. I’ll give this a try later on today. Thank you

  • @tristanbaker8198
    @tristanbaker8198 9 місяців тому +1

    Hello, sir. Did you know that Q straightens connections?

    • @mpattym
      @mpattym  9 місяців тому +1

      I do yes. :)

  • @trigger1641
    @trigger1641 Рік тому +1

    Hi, Michael! Good tutorial, it helps me a lot, but I'm confused about when I finished building it, everything looks fine but when I tried to click the options, it just can not respond my click and go through the conversation. So it always stuck at the very first, I'm not sure which part has a problem, I really need your suggestion! Thank you!!! Love your tutorials, you're so professional!

    • @mpattym
      @mpattym  9 місяців тому

      It's difficult to say why it's not working specifically but the first thing I would do is add a print string to the button press/release to make sure it's actually firing.
      If it is, you need to follow the functions that are called to make sure it calls the relevant things. It should update the dialogue progress and call the dialogue again. (To refresh)

    • @marie-pierneault1035
      @marie-pierneault1035 9 місяців тому +1

      Just went over all the video and spot a connecting wire missing in the Update Option function. Well! Well!Now it work, amazing!!!

  • @shirokyma
    @shirokyma 6 місяців тому

    Thank you for the tutorial, may I ask the "Dialogue Index" created 20:31 is different from the one created in the ACDialogueBase? What are their relationship?

    • @mpattym
      @mpattym  6 місяців тому +1

      That is an input for the function. The function is inside the dialogue widget that is used to update the dialogue text and show the options (if there are any). We pass the Dialogue Index to the widget (hence the name of the input var) so the widget know what dialogue index it needs to update when an option is selected.

    • @shirokyma
      @shirokyma 6 місяців тому

      @@mpattym Thank you very much.

  • @matteovergari141
    @matteovergari141 4 місяці тому

    Amazing tutorial, but I have a small issue i have encountered, after changing the character that interacts with the NPC the dialogue still works but for some reason it triggers twice, with the two windows overlapping each other and only one of them interactable, and even after one of the dialogues finishes (triggering the close conversation) the non-interactable second window does not disappear, what do you think might cause this? before switching characters it worked perfectly

  • @mysticprophecyroblox
    @mysticprophecyroblox 4 місяці тому

    Would this work in first person?
    As in having a cursor to select the options when the dialogue is open

    • @mpattym
      @mpattym  4 місяці тому +1

      Yes, it's set up to use mouse clicks so it should make a difference if you're using 1st or 3rd person.

    • @mysticprophecyroblox
      @mysticprophecyroblox 4 місяці тому

      @@mpattym Awesome

  • @NJoint
    @NJoint Місяць тому

    I have a weird bug by which if I use "remove dialogue progress", some dialogues are missing if I go again over the same branch. Can't understand why :(

    • @mpattym
      @mpattym  Місяць тому

      I'm not sure what you mean. As in it's goes back (shows the relevant dialogue) but then skips dialogue in the flow?

    • @nyx8694
      @nyx8694 6 днів тому

      @@mpattym yes essentially the code fires over the choices you made last time

  • @zrmdevelopment7260
    @zrmdevelopment7260 11 місяців тому

    Hi Michael, amazing series so far. I was wondering if there's a way to elaborate a bit on how to add voice acting to those dialogues. I've noticed that you told someone below this: "When you use the 'Add Dialogue' node, connect a 'Play Sound' node to the 'Updated' output" But there's no updated output or at least I cannot find it... (I'm also pretty new to Unreal). I simply added a play 2d sound after the dialogue node and the sound keeps on repeating whenever I press anything inside the dialogue... Is there a way to give us a few more steps on how to actually implement this if possible? Thank you! Keep it going:)

    • @mpattym
      @mpattym  11 місяців тому +1

      Sure, when I mentioned the 'add dialogue' node, I was referring to adding the play sound node inside that node after the bit that updates the dialogue.
      You can always join my discord and I can share a few screenshots of how I set it up in my more complex dialogue system when I get some time.
      discord.com/invite/g5ZWEAT2

    • @suomynona772
      @suomynona772 10 місяців тому

      @@mpattymoh, i found my problem. I did not change the state of the return node in the add dialogue function to updated 🙃But anyway, thank you for the quick answer!:)

  • @MrDJsArcade
    @MrDJsArcade 4 місяці тому +1

    Hi this is great. Do you have the source code?

    • @mpattym
      @mpattym  4 місяці тому

      I'm sorry but I don't provide a download for this system.
      If you're not wanting to make it yourself, you can always checkout 'Project Sunrise's on the UE marketplace. It includes a revamped and overhauled dialogue system that follows the same concept. (Amongst other systems)

  • @KenlieroGames
    @KenlieroGames Місяць тому

    There are some good ideas in this. Like it is simplified and easy to understand, but is does not scale well.

    • @mpattym
      @mpattym  Місяць тому

      @@KenlieroGames what issues have you had regarding scalability?

    • @KenlieroGames
      @KenlieroGames Місяць тому

      @@mpattym If we have massive amount of dialogs. It would be better to save those dialogs in datatables or structures and use them in nodes, rather than directly write dialog lines to nodes, then you can reuse the functions. I admit that I did not watch the whole video, but I saw the first minutes and saw texts written in nodes.

    • @mpattym
      @mpattym  Місяць тому

      @@KenlieroGames Ah, yea this system isn't recommended if you want to use datatable. I would say it's more of a preference than a scalability issue though. I hated working with datatables when trying to create dynamic dialogue flows. There are of course pros and cons to both types though.

  • @dreamscape_land
    @dreamscape_land Рік тому

    how do you create a vr dialogue system please? i haven't found any tutorials on it. can you help?

    • @mpattym
      @mpattym  Рік тому +1

      I've not made anything for VR for many years but I would imagine the only major difference would be having the Dialogue show in the world as opposed to being placed in screen space.
      It shouldn't be too difficult to make this work with VR, you'll just need to have the widget display inside a widget component that's attached to the player.
      Of course doing anything in VR does have an element of trial and error to ensure its easy on the players eyes to view and read.
      Hopefully, this will point you in the right direction.

  • @devvunknown
    @devvunknown Рік тому +1

    Yoo new upload!

  • @osamaalaa5570
    @osamaalaa5570 Рік тому

    any insights if i want to make the npc and the player character say the selected option out loud as well assuming i have it voice acted

    • @mpattym
      @mpattym  Рік тому +1

      When you use the 'Add Dialogue' node, connect a 'Play Sound' node to the 'Updated' output and select the sound you want to play. It might however be worth adding an audio component to the NPC that you use to play the dialogue so you don't get overlapping dialogue playing at once. It would just be a case of updating the sound the audio component plays.

  • @isonavi23
    @isonavi23 10 місяців тому

    Can I add to dialogue options to make npc moves forward to destination after choosing?

    • @mpattym
      @mpattym  10 місяців тому

      Yea, it should be possible. You can use the updated branch to trigger a move to event. However, there isn't anything in the system to delay the next dialogue showing until the move has completed.

    • @isonavi23
      @isonavi23 10 місяців тому

      @@mpattym can it be just a pup up widget with options and movement be made via waypoints?

    • @mpattym
      @mpattym  10 місяців тому

      @@isonavi23 I don't see why not but if your wanting complex movement such as way points, you might need to create a separate system that moves to character to and from way points that you can then call from the dialogue system.

    • @isonavi23
      @isonavi23 10 місяців тому

      @@mpattym I don't seem like understanding how to actually implement this. Could you help please? For example with function like ai move to or move to actor/location. And how to connect it to "updated" branch

    • @mpattym
      @mpattym  10 місяців тому

      @@isonavi23 When you use the add dialogue node it has an enum output that's determines the update state, using the switch on enum node, you will get the pass through and updated exec pins.
      It would just be a case of getting the owner of the dialogue component and using the AI move to node (connected to the Updated exec pin) on the part of the dialogue you want them to move.

  • @Drachir08
    @Drachir08 6 місяців тому

    Can this system be integrated into a Behaviour Tree?

    • @mpattym
      @mpattym  6 місяців тому

      That would depend on what you mean by integrated. If you just want the behavior tree to open up the dialogue, I don't see why not. You would just make a task that gets the controlled pawn and gets the dialogue component from it. Once you've done that you can call any of the functions from it.

  • @mahmoodhafez1496
    @mahmoodhafez1496 Рік тому +1

    can i make it with level sequence ?

    • @mpattym
      @mpattym  Рік тому

      With a few tweaks you could probably make it work, assuming you're not actually wanting the player to have options.
      I'm not too familiar with the level sequencer so I can't say for sure though.

  • @palmajd33
    @palmajd33 10 місяців тому

    Where is the Enum Dialogue State?

    • @mpattym
      @mpattym  10 місяців тому +1

      It seems you skipped the bit where I make the enum in the video. ;) It's just a custom enum.

  • @konrad129
    @konrad129 11 місяців тому +2

    19:16 This fu**d up 3h of my life... I forgot to delete the default values from Dialog progress, which result in broken mechanics

    • @mpattym
      @mpattym  8 місяців тому

      :( I think we've all be there. I spend half an hour debugging an issue with an NPC not moving only to realize I set their max walk speed to 0.

    • @konrad129
      @konrad129 8 місяців тому +2

      @@mpattym I mean, valid point, but it was on the video, and it wasn't ever shown deleted

    • @neonz6019
      @neonz6019 6 місяців тому

      MAN WTF hahahah 2h of my life checking each frame, every nodes, every numbers in the 3 videos 19:16

    • @greenmanmakingvideos5857
      @greenmanmakingvideos5857 2 місяці тому

      Brother I just spent 2 full days trying to fix this and you just saved me. I feel good knowing it isn't my fault now lmao.

  • @SilverSkylark
    @SilverSkylark Рік тому +1

    Would I be able to change the name of the character as we get to know him more? I'd like to unlock his nickname after reaching a certain point in the dialogue tree

    • @mpattym
      @mpattym  Рік тому

      Not out the box, but with a few small tweaks it shouldn't be too difficult.
      I would add a bool var for 'bDisplayName?' And have this set to false to begin with. Then where the name is passed to the widget, use a select node to return either something like '????' or the name in the name var.

  • @01yoto
    @01yoto 9 місяців тому +2

    Check out MakeCodeSimple_Unreal's UE5 | Ultimate Dialogue System - Tutorial, the description of the video is kinda the same as yours, you posted your vid earlier, so someone is stealing your content, not sure about the video itself.

    • @mpattym
      @mpattym  9 місяців тому

      Thank you for letting me know but yea, it looks like they've rehashed my dialogue system and attempting to pass it off as their own.

  • @CosmosisTR
    @CosmosisTR Рік тому

    Hi Michael, I have an error on your code and I can't fix it. Can you help me?

    • @mpattym
      @mpattym  Рік тому

      If you provide a description of the issue, I can see if I can help.

    • @CosmosisTR
      @CosmosisTR Рік тому

      @@mpattym I watched 3 of your videos and I applied the video stop and stop, but when I interact with the last part of the videos, it does not bring up the dialog widget. I checked all "creating widget" parts but everything is the same with you. I couldn't find the cause after all. Actually, I can share screen or etc when are your free if is it okay for you?

    • @mpattym
      @mpattym  Рік тому

      @@CosmosisTR the first you would need to due is debug the open conversation function as this created the widget.
      You can add a print string or break point to see if it gets to that point. If it doesn't, check how you're interacting with your NPC to make sure they're receiving the interact.
      If it does make it to the open conversation, check the create widget node is creating the correct widget and is added to the viewport.

    • @CosmosisTR
      @CosmosisTR Рік тому

      @@mpattym Now it works until creating widget, but creating only "W_Dialogue widget" not updating dialogue on AC_Dialogue_Base. I checked all nodes on base document but everything is same.

  • @oscarmoreno4307
    @oscarmoreno4307 2 місяці тому

    Hey man! I followed your tutorials, and my system it's working great! I have a really weird issue though, since every node I put between two "AddDialogue" keeps getting called every time the dialogue progresses. Per example, I have: AddDialogue > Switch on Enum_Dialogue State > Switch on Int > Print String > AddDialogue... The print string works fine the first time, but then it keeps getting called every time the dialogue progresses.
    I'd be very grateful if you could help me! I can send you any info you need.

    • @oscarmoreno4307
      @oscarmoreno4307 2 місяці тому

      Rewatching the tutorials I realized you actually explain that error happens. You didn't say if there's any fix or a way to change variables and stuff like that between dialogue phases, instead of on the update. Thanks on advance!

    • @oscarmoreno4307
      @oscarmoreno4307 2 місяці тому

      I found a fix: Just adding an empty "AddDialogue" node between the desired ones, and setting all the needed variables before calling the good dialogue. It may not be a good way to work normally, but it's doing the trick in a few situations.

  • @matteospo6426
    @matteospo6426 Рік тому

    hello from italy, i'm trying to recreate your code on my game but at the minute .... where should i add the enum dialogue state output i can't add it because it doesn't appear to me what can i do? please help me i'm desperate xD

    • @mpattym
      @mpattym  Рік тому

      At a guess I would say you've not correctly made the enum. The tutorial shows every step starting with the third person template. Be careful when skipping through as you might miss steps.

    • @matteospo6426
      @matteospo6426 Рік тому

      @@mpattym I watched the video 3 times from the first second but nothing I can not find the passage of the enum

    • @mpattym
      @mpattym  Рік тому

      @@matteospo6426 the enum is created at the 5 minute mark.

    • @matteospo6426
      @matteospo6426 Рік тому +2

      @@mpattym tnks very much i love you

  • @eikkou250
    @eikkou250 Рік тому

    Is it possible to play a short mini-game when the player selects the appropriate options?

  • @eunachaanakya
    @eunachaanakya Рік тому

    can i get this project?

    • @mpattym
      @mpattym  Рік тому

      I'm sorry but I don't provide the completed project files for my tutorials.

  • @賴泓濤
    @賴泓濤 2 місяці тому +1

    Enum_DialogueState (5:02)