Announcement

Collapse
No announcement yet.

Dialogue Plugin

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

  • replied
    I've played with this plugin for a while, it' great, I can customize almost what I want in UMG.




    However, some behaviors are reall weird.

    By default user have to click continue to move forward a NPC node, I know that there is a video teaching how to implement Soul style dialogue, it's indeed doable.




    But my point is that NPC node should flow automatically by default, PC node is something for choice/interaction.

    Consider following scenario:

    PlayerCharacterController choose A reply choice

    PlayerCharacter: say something

    NPC1: say something

    PlayerCharacter: say something

    NPC2: say something

    PlayerCharacterController choose B reply choice

    PlayerCharacter: say something

    NPC1: say something

    PlayerCharacter: say something

    Currently I can use NPC node for both PlayerCharacter/NPC1/NPC2, but I have no info in each node for their names.




    My suggestion is that, NPC node should be renamed to Character node not only for NPC, it should move forward automatically and have name property. PC node should be renamed to Interaction node, it's just for choice and should not contain sound info.

    Leave a comment:


  • replied
    I've been trying to integrate this with some custom events / conditions, and have hit some kind of restriction that I don't understand.

    I'm using the EasyMultiSave plugin which has a 'PersistantSave' actor that I'm using to store a map of booleans (a rudimentary game flag system). But whenever I try to cast to it within a 'Dialogue Conditions' blueprint function, the cast fails.

    Click image for larger version

Name:	SharedScreenshot.jpg
Views:	342
Size:	324.0 KB
ID:	1707532

    The same cast in a regular function works fine. Is there something about the function in the Dialogue Conditions class that I'm missing, that prevents normal casts working?

    Leave a comment:


  • replied
    Originally posted by CodeSpartan View Post

    In short, for 1 you have to pull the name from your NPC actor in your Get_npcname function. You may want to save a reference to the NPC you're talking to in your character, for instance. Just follow the tutorial on %variable%-like strings here.

    And for 2 all you have to do is call a dialogue event that would display a widget on your screen with an input field. But it's a bit more advanced, because you'd also want to tie it in with some other mechanics, like "you can only progress in the dialogue once you've typed something in", which isn't exactly complicated, but would require some blueprints experience.
    Hello, I have a quick one for you I'm hoping you can assist with... There was actually a PM sent I believe, regarding it but I have a feeling you may have missed it. In any case, if all of your great plugins and toolkits are of any indication I know you're incredibly busy, but if you could find the time to PM me it would be greatly appreciated. Thank you!

    Leave a comment:


  • replied
    Originally posted by CodeSpartan View Post
    Ctrl+v is supposed to "paste" whatever human-readable serialized nodes you have in your clipboard buffer. It creates all these nodes, and they're supposed linked the same way, etc. I can't imagine you haven't tried it though?
    This was exactly the idea - that two writers can share this json-like text between themselves with a simple copy-paste through some instant messaging like Discord. I also wanted to serialize conditions/events, but never went that far.
    I did find that it pasted a JSON format when spit out into a text editor after I asked, which will work closely enough for what I want to do. I'm essentially looking at how feasible it'd be to convert a large articy:draft project to this dialogue plugin (through some home-brewed python).

    With the JSON formatting I can get 80% of the way there (script converts articy exported dialogues/objects to dialogue plugin JSON) The rest will be manually importing/connecting/etc individual pieces and building, as you said, conditions and the like.

    Events and conditions being serializable would be a big win.

    I think my original ask was if there was a way to have a specific filetype imported to unreal as a dialogue (binary) object. So I could (in theory) manually build out the JSON for a conversation, stick it into a file ("file.dlg" or somesuch), and have Unreal be able to import/reimport/etc. It'd allow third party implementations of how to organize and build dialogue trees. If that makes sense?

    Leave a comment:


  • replied
    Originally posted by Namesis View Post
    Hi,

    I have few questions.

    1. Is there is a input box for NPC Name. I tried adding %npcname% but it wont take it. is there a way to show the NPC Name (on the run, say same Dialogue but different NPCs). This is where the "Calvin" name shows up. Not in the PC Answer or NPC Answer part.

    2. Is there a way to add a input text? meaning, if you have this "Guild NPC" that can create guilds, so in one of the PC_Answers the player can write"DialogPluginGuild" (instead of choosing, since everyone wants their own guildname).. then hit continue to create it.
    In short, for 1 you have to pull the name from your NPC actor in your Get_npcname function. You may want to save a reference to the NPC you're talking to in your character, for instance. Just follow the tutorial on %variable%-like strings here.

    And for 2 all you have to do is call a dialogue event that would display a widget on your screen with an input field. But it's a bit more advanced, because you'd also want to tie it in with some other mechanics, like "you can only progress in the dialogue once you've typed something in", which isn't exactly complicated, but would require some blueprints experience.
    Last edited by CodeSpartan; 01-06-2020, 10:06 PM.

    Leave a comment:


  • replied
    Originally posted by daveSchoneveld View Post
    Is there a way to get color or rich fonts in the dialogue plugin text?

    What I want to is 1, Highlight key words. and 2. show extra information, in my case what language they are speaking.

    Ex "You'll find him in the Barons Den near the south side docks" (French)

    I first looked into using the vars but that's not going to work unless its added to the code.

    EDIT SOLVED! in 4.20 there is a Rich Text Block. Following this, I can now do exactly what I wanted, it does take a bit of set up to get to work but its pretty straight forward. Match the text box in all settings then replace it's 2 reference in the graph.
    https://www.unrealengine.com/en-US/t...ich-text-block

    EDIT2 I'm pretty excited about this. So awesome!Click image for larger version  Name:	result.jpg Views:	34 Size:	30.3 KB ID:	1703411
    Click image for larger version  Name:	setup.jpg Views:	38 Size:	92.9 KB ID:	1703410
    Great idea, I'll try to add it in the next version out of the box for other users.


    Originally posted by jwainwright View Post
    Is there any way to import Dialogue payloads?

    Export seems to work without issue (pushes the data structure into COPY or T3D file, which is human-readable), but I can't find a way to import that data back into a Dialogue object in-engine.

    Ctrl+v is supposed to "paste" whatever human-readable serialized nodes you have in your clipboard buffer. It creates all these nodes, and they're supposed linked the same way, etc. I can't imagine you haven't tried it though?
    This was exactly the idea - that two writers can share this json-like text between themselves with a simple copy-paste through some instant messaging like Discord. I also wanted to serialize conditions/events, but never went that far.
    Last edited by CodeSpartan; 01-06-2020, 10:10 PM.

    Leave a comment:


  • replied
    Is there a way to get color or rich fonts in the dialogue plugin text?

    What I want to is 1, Highlight key words. and 2. show extra information, in my case what language they are speaking.

    Ex "You'll find him in the Barons Den near the south side docks" (French)

    I first looked into using the vars but that's not going to work unless its added to the code.

    EDIT SOLVED! in 4.20 there is a Rich Text Block. Following this, I can now do exactly what I wanted, it does take a bit of set up to get to work but its pretty straight forward. Match the text box in all settings then replace it's 2 reference in the graph.
    https://www.unrealengine.com/en-US/t...ich-text-block

    EDIT2 I'm pretty excited about this. So awesome!Click image for larger version

Name:	result.jpg
Views:	225
Size:	30.3 KB
ID:	1703411
    Click image for larger version

Name:	setup.jpg
Views:	258
Size:	92.9 KB
ID:	1703410
    Last edited by daveSchoneveld; 01-01-2020, 01:50 PM.

    Leave a comment:


  • replied
    Originally posted by the_tubby1 View Post
    Is there a way to check if a node has been visited?
    Lets say you only want an NPC to say something once, then say something else every time
    Yes you have to make a system for managing that. But it will be condition branch. Here's something I made quick, but it will depend on your needs.
    So whats happening is in a branch I set a condition. In that condition I set a position of an array, and check that value. I would set that value if I had already talked to the person. So default all values are 0 for everything I need to track. When I talk to someone I set that position in the array to 1. When I do what they asked, I set it to 2. Each of those are saved on the player character, and pulled up and checked against in the condition in the dialogue tree. Its basically setting up a simple quest system. You'd probably want to use a data table since this will be harder to manage, and prone to bugs in human error.

    Click image for larger version  Name:	gamestates.jpg Views:	0 Size:	80.8 KB ID:	1703394
    Last edited by daveSchoneveld; 01-01-2020, 12:23 PM.

    Leave a comment:


  • replied
    Is there a way to check if a node has been visited?
    Lets say you only want an NPC to say something once, then say something else every time

    Leave a comment:


  • replied
    Is there any way to import Dialogue payloads?

    Export seems to work without issue (pushes the data structure into COPY or T3D file, which is human-readable), but I can't find a way to import that data back into a Dialogue object in-engine.

    Leave a comment:


  • replied
    Originally posted by JR_SilentGames View Post


    In case anyone else had this issue, it was resolved by rebuilding after downgrading VS2019 to 16.2 (issue occurs on 16.3).
    Upgrading VS2019 to 16.4.1 also seems to fix the issue.

    Leave a comment:


  • replied
    Originally posted by Namesis View Post
    Hi,

    I have few questions.

    1. Is there is a input box for NPC Name. I tried adding %npcname% but it wont take it. is there a way to show the NPC Name (on the run, say same Dialogue but different NPCs). This is where the "Calvin" name shows up. Not in the PC Answer or NPC Answer part.

    2. Is there a way to add a input text? meaning, if you have this "Guild NPC" that can create guilds, so in one of the PC_Answers the player can write in a inputbox"DialogPluginGuild" (instead of choosing, since everyone wants their own guildname).. then hit continue to create it.
    bump on this question

    /10char

    Leave a comment:


  • replied
    Originally posted by CodeSpartan View Post

    Adding "BlueprintReadWrite" worked for me.

    Have you copied the plugin into your project, removed the plugin from engine (in Epic Launcher), changed the lines in your project's version of the plugin, then recompiled the project? Because you may have done everything right, but your project is using the engine's plugin, not your project's version of the plugin.
    Hey thanks a ton CodeSpartan, your suggestion worked like a charm. Appreciate the support. Cheers!

    Leave a comment:


  • replied
    Originally posted by hydr0k View Post
    Hi there,

    I am trying to get access to dialogue events in blueprint. When I break the DialogueNode, I do not see Events or Conditions. How can I see them in Blueprints? To try and expose to BP, I modified Dialogue.h from:
    Code:
    UPROPERTY(Instanced, EditDefaultsOnly, Category = "Dialogue Node")
    TArray<UDialogueEvents*> Events;
    to:
    Code:
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Dialogue Node")
    TArray<UDialogueEvents*> Events;
    to no avail.

    Anybody have any suggestions?
    Adding "BlueprintReadWrite" worked for me.

    Have you copied the plugin into your project, removed the plugin from engine (in Epic Launcher), changed the lines in your project's version of the plugin, then recompiled the project? Because you may have done everything right, but your project is using the engine's plugin, not your project's version of the plugin.

    Leave a comment:


  • replied
    To anyone having trouble compiling this with 4.24 now that TScopedPointer is fully deprecated:

    Change DialogueViewportWidget.h line 218 to
    Code:
    TUniquePtr<FDialogueZoomLevelsContainer> ZoomLevels;
    and DialogueViewportWidget.cpp line 128 to
    Code:
    ZoomLevels = TUniquePtr<FDialogueZoomLevelsContainer>(new FDialogueFixedZoomLevelsContainer());

    Leave a comment:

Working...
X