If you value your time here on earth, I recommend to never implement a complex dialogue system in UMG and Blueprints!
Your data can be adapted for the system in a few different ways, it would be a matter of changing 2 or 3 overridable functions in an inherited BPC_Dialogue class:
The text is retrieved through an overridable ‘TArray<FDialogueItem> GetDialogueItem(FName textKey)’ and ‘TArray<FName> GetDialogueRowNames’ functions, if you can convert your data to fit DialogueTableItem (a blueprint structure, so the converter must be in blueprints) and either change the ‘GetNextState’ function and ignore the GetDialogueRowNames function, or implement the GetDialogueRowNames.
Let me know if you run into any trouble if you follow this route
Just bought this and it works great. Had a frame rate drop, but thankfully I read the earlier post to turn down the max trace radius on the scanner. Not sure if that’s a safe shippable fix… perhaps custom collision channels would put less of a strain on the trace hits? Seemed like when I got to an area with lots of characters walking around, the scanner chugged the frame with at least a 25ms drop. You know the system way better than me, just letting you know it might be an issue in a final level with lots of npc folks walking around.
I’m another person putting in a request for game pad support …please and thank you
So far this is a really robust and complete system. I can’t wait to see more tutorials, cause I’m well aware I have not done half of what the system is capable of doing, yet. Definitely happy with my purchase! Thank you!
Will you be adding 4.9 support for your plug-in anytime soon :)?
I’ll be starting my project this or the next week, and we’re planning on working with the 4.9 version.
Would be nice if we could include it in the new engine version ^^
Hi Paingate, that would probably help, though I was hoping to avoid that so there wouldn’t be an additional step in the setup or in the usable actor collisions. I do have ideas in mind for fixing this, though I haven’t tested them yet.
Noted!
Thank you! Hopefully I find the time to make more soon!
Hey Bram,
I do have time allocated for the dialogue system coming up, and I will be updating the system then (likely with some new features, unless everything goes horribly wrong).
That being said, I have tested the 4.8 version in 4.9 and it went very smoothly: everything worked, so I would say it’s safe to start your 4.9 project with the 4.8 version
Let me know if you encounter any issues in 4.9 and I’ll be sure to re-prioritize my schedule!
I’m having a hard time setting up portraits. I tried to use the one you provided as a test but I seem to be missing something because it doesn’t show up. Screenshot below:
Another question…is it possible to move and resize the text field in the umg widget? Was not having much luck with that either.
The SetPortrait won’t currently work in PreAction, it will be overwritten by the Speaker’s portrait (in this case, the Speaker attributes for NPC_Power).
You can use SetPortrait inline to easily work around this (eg. in the Text field: “*{SetPortrait(“Groggeroo_Talking”)}*I’m sure of it… etc.”)
The text is populated in the WrapBox “wbTextArea” (contained within a scrollbox), as long as that control exists, there should be no other restrictions. The scroll box is probably nice to keep around, but the responses don’t need to be contained with it.
Thanks for the quick response! Tried it over lunch and it worked like a charm. I read that section of the help file regarding SetPortrait getting stomped in the Preaction field but I saw that the sample file had it there so I gave it a shot. Is there another spot I can set the portrait? You mention the speaker attributes…does that mean i can assign a portrait to the actor? If so, where does that live?
The speaker attributes are what is references in the SpeakerId field. It’s so you don’t need to set the default portrait, name, or response behaviour everytime. I go over it briefly in the video here.
Hi Colin, the system can use multiple languages using the built in UE4 localization tools, or you can alter the getter functions in BPC_Dialogue (GetAsset, GetSpeakerAttribute, GetDialogueRowNames, and GetDialogueItem) to point to different data-tables based on your own language switches! This last method is useful if you have localized text images (as far as I know, UE4 does not support this natively yet).
Thanks NobleSpoon! While I have not tested the functionality on touch devices, it uses raw UMG which does support touch controls. Unfortunately I can only guess that it would work at this time (if any current users read this and can confirm, that would be great!).
Thanks for the quick response. I’ll likely hold off a bit to see if anyone using this for mobile can provide some input. One of the main things I want to ensure is customization features like the typewriter effect will still work. I intend on using this system to emulate an interactive Linux terminal.
There’s a touch simulation mode in the editor if you ever want to test it without a touch device. Project Settings > Mouse Properties > Use Mouse for Touch. Does a fairly accurate simulation, I think I recall there being some weirdness with drag/drop.
I was wondering how high controller support is on your priority list.
This since I’m working on a project at school and we are setting up a task list (don’t really have a lot of programmers, so any future updates that might help us with the dialogue system is obviously always perfect :).
Possibilities are we might port the game to PS4, and therefor would need controller support.
I’m working on fixing some issues reported first, and then going on to the new features (controller support being one of the top new features). Assuming it doesn’t go horribly wrong, it will be in the next update, but I can’t say if the update will be in a week or a month just yet (I haven’t done any estimates).
I was able to deploy on Android and the UI works out of the box (testing with 4.9 on an Samsung S3 Android - stock). All that is needed is to ‘GetActorUsables’ and call the Use message on the actor when you detect an interaction (if you get to this point, have a look at BPC_UseScanner and the sample ThirdPersonCharacter for these functions).
Hi Bram,
I am just confirming that gamepad support will be in the next version, which I should be submitting for an update sometime this week or next week. There is now a built in handling for controllers in the UI, but UMG is not built for Gamepads at the moment, so I also made it extensible by providing an ‘unmanaged input’ mode (which tells the dialogue system to do nothing about input) and exposing the function calls for selecting buttons, so that the Player Controller or Character classes can better handle gamepad interactions.
I’m kinda stuck, so I’m hoping you can help me out :).
In our narrative you can have several starting lines depending on the mood the NPC is in. Now i’ve seen that you can do this with your condition tab. However, upon checking the Demo for some initial explanation to see how it would work I find the !BranchVisited() condition. Sadly, I’m unable to find this function whatsoever, so is this just a placeholder function, am I blind (could very well be the case), and what would be the best location to put these condition tags?
Secondly, one of my team members found a possible bug in the system, which I thought could come in handy for people to know, namely:
if you have a branching dialogue line and add something in the post action tab, it will NOT be triggered, since it will go to the new line beforehand.