Announcement

Collapse
No announcement yet.

Blueprint Dialogue System

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

  • replied
    Originally posted by Candescence View Post
    Yeah, I'm really not making any progress on that front, unfortunately. The way the text is handled is so complicated that while I can stop the text from being cleared, I can't get it to go to a new line after the previous bunch of text, and I can't even figure out how where I would even look to do that. And, to boot, I can't even display responses for some reason. I feel like I'm breaking things more than I'm fixing them at this point.

    Though, in general, it would be really cool if the text/scripting system in this could be used for pretty much any input text, dialogue or otherwise, because the text system by itself is really cool.
    Hi Candescence, sorry I missed your last reply (I didn't receive email notification for it).

    To keep the dialogue in the same list, the system would maybe need to change quite a bit. When a branch is processed, a new UI is generated and populated to display the new dialogue.
    I can think of a potential work-around for this using multiple dialogue widgets and a widget to host all of them in a scroll box. I believe this could be made to work without changing the dialogue UI too much (responses would need to be optionally stripped away).

    eg. instead of opening a dialogue, a "host" widget would be displayed. It would read the history of dialogue and create those widgets as nested dialogue widgets (with responses removed) in a scroll box, and the new dialogue would then be displayed somewhere, maybe at the bottom of that scroll box.

    It sounds like a fair bit of work, but I think it would work (disclaimer: this is off the top of my head, I could be completely wrong and trying it may or may not create new and dangerous life-forms.)

    Leave a comment:


  • replied
    Yeah, I'm really not making any progress on that front, unfortunately. The way the text is handled is so complicated that while I can stop the text from being cleared, I can't get it to go to a new line after the previous bunch of text, and I can't even figure out how where I would even look to do that. And, to boot, I can't even display responses for some reason. I feel like I'm breaking things more than I'm fixing them at this point.

    Though, in general, it would be really cool if the text/scripting system in this could be used for pretty much any input text, dialogue or otherwise, because the text system by itself is really cool.

    Leave a comment:


  • replied
    Originally posted by Grogger View Post
    Oh I see what you mean. So that again isn't the out of the box behaviour, but it can definitely be adapted to it (you can define your own dialogue functions in BP for the scripting system, so there are many ways to skin this cat. Also, don't skin cats.)
    Right, I see. I can see what you mean. I'll have to do some tweaking, then, see what I can come up with.


    Actually, now that I think about it, what I really want with the text is a text box that can simply 'add' new lines of dialogue to the box (which would be in a scroll bar frame), either via the typewriter style or not, as opposed to each new line of dialogue overwriting the previous one. If that's doable, that'd be terrific.

    To reiterate what I want to do, I'd like a system where the player can use the dialogue choice menu to select a choice of nearby valid conversation partners, and then be able to call up the dialogue choice menu at any time without limiting the player's character inputs, and when making a choice, that choice is recorded immediately (non-typewriter style) into the 'chat box', before a new line from the conversant is recorded into the 'chat box' as well, providing the player a constant record of their dialogue choices and the responses, as well as being able to keep up with more dynamic scenes with multiple characters talking.

    But it sounds like it is possible, it's just that I'd need to modify the system a bit to handle that functionality. That being said, the actual BPs involved look awfully daunting, though, I'm still not quite sure what I should be looking into to get the functionality I need xD

    Edit: Okay, so I think the real meat of what I want to change is in the UI widget blueprint. Preventing a clear line should be simple enough, I guess, but should I just put the [br] tag at the beginning/end of each dialogue line or is there any way I could tell the dialogue UI that it should be doing that automatically? Also, would be nice to be able to insert the speaker name and portrait into the text itself, but that's something that I can do in the text itself, I guess rather than trying to program it in.
    Last edited by Candescence; 07-30-2017, 12:33 AM.

    Leave a comment:


  • replied
    Originally posted by Candescence View Post
    No, I don't mean the prologue stuff, I mean the radio conversations occurring throughout the game, where you basically initiate and progress conversations in real-time, without interfering with player input.

    And I suppose if that's not hard to extend in such a way, well, that's fair enough.
    Oh I see what you mean. So that again isn't the out of the box behaviour, but it can definitely be adapted to it (you can define your own dialogue functions in BP for the scripting system, so there are many ways to skin this cat. Also, don't skin cats.)

    Leave a comment:


  • replied
    No, I don't mean the prologue stuff, I mean the radio conversations occurring throughout the game, where you basically initiate and progress conversations in real-time, without interfering with player input.

    And I suppose if that's not hard to extend in such a way, well, that's fair enough.
    Last edited by Candescence; 07-29-2017, 02:53 PM.

    Leave a comment:


  • replied
    Originally posted by Candescence View Post
    Hey, so I was looking around at different dialogue systems, both free and paid, and the main thing I'm looking for is a system that's flexible enough to do what I want to do below:

    - Dialogue mechanics similar to Firewatch where you can bring up a menu at any time when dialogue is available, but also bring up the menu to select available options for people to converse with amongst anyone in range of your character
    - A text box similar to a multiplayer chat box that displays an existing log of previous dialogue lines, possibly including portrait icons.

    Is that viable with the system you've made? I mean, probably, but I want to be certain about that.
    Hi there Candescence,

    For the Firewatch dialogue, do you mean that full-screen text where it tells a bit of a story, and then gives you a few options for branching paths in the middle of it?
    If so, then this should be perfectly doable with this system, with a bit of a ui facelift to get the same look of course.

    For the chatbox, the system doesn't store previous dialogue out of the box, though it could be painlessly captured and stored so you could display it.

    The system was built with inheritance and customizability in mind, so I don't foresee (m)any snags to get these things working

    Cheers!

    Leave a comment:


  • replied
    Hey, so I was looking around at different dialogue systems, both free and paid, and the main thing I'm looking for is a system that's flexible enough to do what I want to do below:

    - Dialogue mechanics similar to Firewatch where you can bring up a menu at any time when dialogue is available, but also bring up the menu to select available options for people to converse with amongst anyone in range of your character
    - A text box similar to a multiplayer chat box that displays an existing log of previous dialogue lines, possibly including portrait icons.

    Is that viable with the system you've made? I mean, probably, but I want to be certain about that.

    Leave a comment:


  • replied
    Originally posted by Bloodwork View Post
    Thank you for the quick reply. I highly doubt Spine is compatible with UMG since it does bone based 2D animation with meshes, it works similarly to how 3D animation is done so controlling it via script in dialogue sounds like the best possible solution right now. I just bought your asset so I'll dig in and try to figure it out.
    Fingers crossed that it works out better than expected then! Thanks for checking out the asset

    Leave a comment:


  • replied
    Thank you for the quick reply. I highly doubt Spine is compatible with UMG since it does bone based 2D animation with meshes, it works similarly to how 3D animation is done so controlling it via script in dialogue sounds like the best possible solution right now. I just bought your asset so I'll dig in and try to figure it out.

    Leave a comment:


  • replied
    Originally posted by Bloodwork View Post
    Any idea if this asset could be linked with Spine animations for portraits? The system would need to spawn a Spine sprite and then play it's animation via scripting commands as seen in your video.

    Spine runtimes provide Blueprint support - here's more information on the topic including the available Blueprints for animation control: http://esotericsoftware.com/spine-ue4
    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.

    Leave a comment:


  • replied
    Any idea if this asset could be linked with Spine animations for portraits? The system would need to spawn a Spine sprite and then play it's animation via scripting commands as seen in your video.

    Spine runtimes provide Blueprint support - here's more information on the topic including the available Blueprints for animation control: http://esotericsoftware.com/spine-ue4
    The spine-ue4 runtime wraps the spine-c structs and functions and exposes them in idiomatic C++ as well as Unreal Engine Blueprints. Additionally, the spine-ue4 runtime imports files exported from the Spine Editor and stores them in custom Unreal Engine asset types."

    Leave a comment:


  • replied
    Originally posted by renalard View Post
    I managed to fix this by changing the BPC's Set Input Type function to use 'Set Input Mode Game and UI' for 'Mouse and Keyboard' as well. Movement input is disabled anyway, so there should be no interference. Just in case anybody runs into this problem...
    I did, and this fixed it! Thank you!

    Leave a comment:


  • replied
    Originally posted by Cinebeast View Post
    Hmm... I'm afraid I'll need a little more direction.

    I implemented BPI_Usable on one of my actors and set the CustomNotificationLocation like so:

    [ATTACH=CONFIG]144328[/ATTACH]

    (I have an arrow several units in front of the actor proper where I want the notification to appear.)

    But this had no effect. I'm probably missing something obvious.
    For example, this is how I figure out where to draw my arrow in my hud class (it doesn't need to be in the hud class - in fact, I don't like it much in there)

    Click image for larger version

Name:	CustomNotification.JPG
Views:	1
Size:	98.3 KB
ID:	1129275

    Leave a comment:


  • replied
    Originally posted by Cinebeast View Post
    Hmm... I'm afraid I'll need a little more direction.

    I implemented BPI_Usable on one of my actors and set the CustomNotificationLocation like so:

    [ATTACH=CONFIG]144328[/ATTACH]

    (I have an arrow several units in front of the actor proper where I want the notification to appear.)

    But this had no effect. I'm probably missing something obvious.
    Oh no, it has no effect by itself. You can call that function on the actor to get the new position where you'll draw your arrow. The use system doesn't try to dictate how or where to display the notification, it only gives a means to communicate with the actor that is 'chosen usable'.

    Leave a comment:


  • replied
    Originally posted by Grogger View Post
    Hi Cinebeast,
    How I handle this is by implementing the BPI_Usable interface and it's "CustomNotificationLocation" (I'm not fond of the name, but there it is). The implementation of the 'print string' is not meant to be production ready in the sample code, it's just debug text.
    Hmm... I'm afraid I'll need a little more direction.

    I implemented BPI_Usable on one of my actors and set the CustomNotificationLocation like so:

    Click image for larger version

Name:	ue4_dio_custom_anchor.png
Views:	1
Size:	49.1 KB
ID:	1129256

    (I have an arrow several units in front of the actor proper where I want the notification to appear.)

    But this had no effect. I'm probably missing something obvious.

    Leave a comment:

Working...
X