Search Unity

Dialoguer - A Dialogue Creator Tool For Unity

Discussion in 'Assets and Asset Store' started by tonycoculuzzi, Mar 22, 2013.

  1. Fellshadow

    Fellshadow

    Joined:
    Dec 2, 2012
    Posts:
    169
    Great, thanks for the response!

    You're working on a remake of the UI? When do you expect to release that?
    I don't want to spend hours building complex trees by chaining lots of conditional nodes just to have an else-if function added in when I'm halfway done, haha. (For example, if I have 30 different areas, 5 different friendship levels, and 4 different time of day settings, that's a few hundred conditional nodes just to figure out the START of the dialogue)

    Will the UI remake also feature multiselect? Sometimes I may want to move a whole group of nodes around, rather than just one at a time.
     
  2. ikelaiah

    ikelaiah

    Joined:
    Apr 15, 2013
    Posts:
    154
    Bought it and follow your tutorial on your website.
    When I call
    Code (csharp):
    1. Dialoguer.ContinueDialogue ();
    I can't move forward to the next node.

    However, if I add the following in the init.cs

    Code (csharp):
    1. if (GUI.Button (new Rect (10, 10, 100, 30), "Start!")) {
    2.             Dialoguer.StartDialogue (DialoguerDialogues.MY_Tutor);
    3. }
    it works. So, how do I immediately show GUI without using GUI firing event?
     
    Last edited: Apr 1, 2014
  3. ikelaiah

    ikelaiah

    Joined:
    Apr 15, 2013
    Posts:
    154
    Ok, I solved my problem by moving

    Code (csharp):
    1. Dialoguer.StartDialogue (DialoguerDialogues.MY_Tutor);
    in my Start function;

    Code (csharp):
    1. void Start ()
    2. {
    3.     Dialoguer.StartDialogue (DialoguerDialogues.MY_Tutor);
    4. }
    5.  
    Thanks, great dialogue system!
     
    Last edited: Apr 1, 2014
  4. tonycoculuzzi

    tonycoculuzzi

    Joined:
    Jun 2, 2011
    Posts:
    195
    I'm not quite sure, but I'm hoping within the next few months. The new UI will be fully backwards compatible with the current one, and it will allow you to select/move multiple nodes at once. :)
     
  5. chris200x9

    chris200x9

    Joined:
    Mar 22, 2014
    Posts:
    8
    I'm not quite sure how to use the event calling I'm trying to know when a dialogue is over but can't figure out how to, any help?
     
  6. muppetpuppet

    muppetpuppet

    Joined:
    Jul 29, 2013
    Posts:
    47
    Would that mean the playmakers bindings will be released after that? just wondering?
     
  7. ikelaiah

    ikelaiah

    Joined:
    Apr 15, 2013
    Posts:
    154
    I'd like to know how this is done as well. I'm sure this is extremely simple, but not sure how to.
     
  8. andy_watson00

    andy_watson00

    Joined:
    May 16, 2013
    Posts:
    2
    Hey did you manage to fix the problem with deserialization on iOS? If so is the fix something i can apply to the free version?
     
  9. tonycoculuzzi

    tonycoculuzzi

    Joined:
    Jun 2, 2011
    Posts:
    195
    For this, take a look at the Getting Started video located here: https://www.youtube.com/watch?v=SvELH4QqPDg
    This video goes into detail on how to use the Dialoguer events.


    I'm actually still working on these haha, I'm hoping to get them in very soon. They're planned to be in before the UI update, which is to say soon hopefully. I've had some trouble getting the integration working though, and everywhere I go for help seems to lead me to a dead end. I'm hoping to get these in really soon though! Hopefully in the next minor update. :)


    I did, the iOS serialization issue is completely fixed, unfortunately it is not available for the free version.
     
  10. muppetpuppet

    muppetpuppet

    Joined:
    Jul 29, 2013
    Posts:
    47
    great news, the playmaker forums feature some very helpfull hutong devs.. Lemme know if you need me to find you one to assist ;)
     
  11. ikelaiah

    ikelaiah

    Joined:
    Apr 15, 2013
    Posts:
    154
    I was happily making branches in my dialogues, then, all nodes disappear with the following error

    ArgumentOutOfRangeException: Argument is out of range. Parameter name: index

    When I restart Unity editor, and click the problematic dialogue, gave me the same error. To fix the error, I had to delete all the dialogue from the bottom of the list until the problematic dialogue is eliminated. Help! What can I do next time?
     
  12. desyashasyi

    desyashasyi

    Joined:
    Nov 22, 2012
    Posts:
    73
    Hi Bullardo, thank you for the opportunity to learn how to hook up dialoguer to NGUI. Can you send me the video? thanks
     
    Last edited: Apr 10, 2014
  13. tonycoculuzzi

    tonycoculuzzi

    Joined:
    Jun 2, 2011
    Posts:
    195
    This is strange, can you tell me exactly what you were doing before this happened? I'll see if I can reproduce it.
     
  14. tonycoculuzzi

    tonycoculuzzi

    Joined:
    Jun 2, 2011
    Posts:
    195
    Would you be alright with talking over skype or something so I can pick your brain about PlayMaker and hopefully push this update forward?
     
  15. muppetpuppet

    muppetpuppet

    Joined:
    Jul 29, 2013
    Posts:
    47
    sure,, its tomas.sala on skype,, but I only have a headset at the office, so its a hit and miss proposition wether im at my desk...

    But I'm an utter coding disaster (hence playmaker), but at the playmaker itself i'm pretty crackin..;)
     
  16. Ben-BearFish

    Ben-BearFish

    Joined:
    Sep 6, 2011
    Posts:
    1,172
    I noticed my CPU gets eaten up every time I open your Dialoguer Editor window in Unity. Is there anyway you can perhaps optimize the window editor code to prevent this from happening? It causes my computer to go jet-engine with the CPU fan every time I use your plugin. Otherwise, good job on the plugin.
     
  17. ikelaiah

    ikelaiah

    Joined:
    Apr 15, 2013
    Posts:
    154
    Hi Tonzie,

    I was simply adding branches into my dialogue. And that occurred. I'm sorry I can't be much help. Now I am saving and exporting my dialogues more often.
     
  18. Jean-Fabre

    Jean-Fabre

    Joined:
    Sep 6, 2007
    Posts:
    335
    Hi Tonzie,

    my skype is jean-fabre, I provide support for the Playmaker community. if you want to chat about integrating PlayMaker. I'll be happy to help :)

    bye,

    Jean
     
  19. tonycoculuzzi

    tonycoculuzzi

    Joined:
    Jun 2, 2011
    Posts:
    195

    Thanks guys, I'll try to get in touch with both of you as soon as I can!
     
  20. Stickworm

    Stickworm

    Joined:
    Apr 24, 2011
    Posts:
    67
    This plugin is very nice, but the crazy cpu use isn't helpful and I really need zoom to deal with large trees.

    Could I ask how soon these issues will be addressed?

    Cheers
     
  21. ikelaiah

    ikelaiah

    Joined:
    Apr 15, 2013
    Posts:
    154
    How do I step back in a dialogue? The Unity GUI example is nice and helpful, but I'd like hints as how to step back in dialogue.
     
  22. tonycoculuzzi

    tonycoculuzzi

    Joined:
    Jun 2, 2011
    Posts:
    195
    These issues will be addressed once I've finished the new UI update! :)



    Hmm, that's not something that is necessarily supported currently, but I can see how useful it would be. I'll see if I can get this in soon!
     
  23. ikelaiah

    ikelaiah

    Joined:
    Apr 15, 2013
    Posts:
    154
    @Tonzie,

    Please let me know if it is possible to go back a dialogue. I am using your package to create a built-in tutorial, but people don't pay attention well and would like to go back to previous steps.

    I'm willing to pay extra to have this feature added.
     
  24. tonycoculuzzi

    tonycoculuzzi

    Joined:
    Jun 2, 2011
    Posts:
    195
    As far as I can tell right now, you're not able to do so, but I'll try to get this feature in for the next big update. I can see why it would be useful.
     
  25. Ben-BearFish

    Ben-BearFish

    Joined:
    Sep 6, 2011
    Posts:
    1,172
    Are there plans to have a localization feature/support in Dialoguer? It would be very helpful for game development.
     
  26. MrPhil

    MrPhil

    Joined:
    Sep 22, 2010
    Posts:
    39
    I was wondering if there was an easy way to move the text bubble. What want to do a sort of conversation style back and forth between two characters.
     
  27. tonycoculuzzi

    tonycoculuzzi

    Joined:
    Jun 2, 2011
    Posts:
    195
    Of course, localization in Dialoguer is very simple. See this link for more information about it: http://www.dialoguer.info/faq.php#localization


    That all depends on your GUI controller that you create to handle Dialoguer. You can set the Position values in each text node if you'd, or set their metadata to the character's name, etc. Then, in your GUI Controller, you can parse that data and move your GUI around accordingly. :)
     
  28. ikelaiah

    ikelaiah

    Joined:
    Apr 15, 2013
    Posts:
    154
    Hi Tonzie,

    At the moment, I am going back by creating a branch called "BACK" and link it to previous dialogue. It works that way.
    Thanks!
     
  29. ikelaiah

    ikelaiah

    Joined:
    Apr 15, 2013
    Posts:
    154
    Hi Tonzie,

    When I reload the same scene containing Dialoguer for the second time using Application.Load(), I ended up with "Unity MissingReferenceException...." during Message Event Handler. Is there a way to get around this?

    What I did was:
    Code (csharp):
    1. Load scene without Dialoguer (A) -> Load a scene with Dialoguer (B) -> (A) -> (B)
    . Here I get Unity missing ref when I call Dialoguer.continue.
     
    Last edited: May 14, 2014
  30. tonycoculuzzi

    tonycoculuzzi

    Joined:
    Jun 2, 2011
    Posts:
    195
    It looks like you forgot to unsubscribe from the Dialoguer events, and Dialoguer is still trying to call your subscribed methods, which no longer exist because they were destroyed with the scene. To do this, you can add an OnDestroy method in your GUI Controller, and call either Dialoguer.ClearAll() or unsubscribe from each event individually, inside the OnDestroy method.
     
  31. BortStudios

    BortStudios

    Joined:
    May 1, 2012
    Posts:
    48
    Hi, great tool, just some questions / suggestions I have for it

    First of all, how exactly is the complete Wait node used? When I put in a wait node and put it to complete after a text node, I advance the dialogue past the text node, WaitStart message is played, I hit continue again and WaitEnd message is played, but it never advances past that - when I hit to continue again it just does the WaitEnd message over and over again. How is that supposed to work?

    Also, I am kind of wondering what the best way of doing what I'm trying to do would be. I want to have it so that when a new message comes up it types the text up (I have this already), and you can only advance when the text is typed up. I also want it, sometimes, to go through dialogues after waiting, without the user clicking through. So what I was going to do was have a new text sent into the script, start the typing, when the typing is done automatically advance the dialogue, which goes to a wait node, and when you hit advance there it goes to the next one. Therefore I could control it so that you can't advance till the dialogue is done going, and if I want it to not wait for you I can just put wait nodes with seconds specified inbetween. It works on paper, but in reality I kind of feel like that would get bulky, with a lot of Wait nodes. Is there a better way you have thought of, Tonzie?

    Now, for bugs / suggestions

    Sometimes when I click the red box to remove a node, it removes all of the nodes and starts throwing errors in the debugger, forcing me to restart Unity. I'm only testing it right now, so nothing bad has happened yet, but I am afraid of that bug for when I am actually working on something bigger

    As for suggestions I have, I think it is too laborious right now to navigate your dialogues. I mean, I'm using it not only for dialogue, but also for shouts, events when you click on items (like the character thinking about what it is), etc. I can easily see the number of dialogues being way over 100, which would be really laborious to use in the program right now. Is the issue of not being able to delete dialogues that are not at the bottom being done away with? And in general, I think there needs to be some way to organize your dialogues, instead of just having them in the order of their creation

    Finally, I am currently using it by giving gameobjects that need a dialogue by giving them a public DialoguerDialogues variable, which lets me select what dialogue they should have from a drop down list. Again, with 100+ dialogues, using this drop down list will be painful. Is there another way?

    I think a good way for solving both problems would be having the dialogues as gameobjects in your assets folder, so we can utilize an actual file system for the dialogues, and can drag and drop them from there onto the gameobjects to be used. But I'm no professional, so I don't know how it's 'normally' done

    Sorry for the long post, thanks for reading, I really like the product overall, just these few little things would make it worth about 3 times what I paid for it
     
    Last edited: May 23, 2014
  32. tonycoculuzzi

    tonycoculuzzi

    Joined:
    Jun 2, 2011
    Posts:
    195
    Try throwing a Dialoguer.ContinueDialogue() into the onWaitComplete method. That should advance the dialogue for you.

    I think a good way to accomplish this would be to include a string in the Advanced>Metadata field. Something like "waitForSeconds:2" which you can then parse in your GUI controller. Split that string using the ":" character, and the second item in the array will be the number of seconds your dialogue should wait before advancing. That way, you can control it directly without having to use a wait node, and omitting the string will just cause it to work like normal, waiting for the player to continue it with input.

    Thanks for the suggestions! For the first bug you mentioned, I've had some people reporting that but I haven't been able to reproduce it myself. I'll keep looking into it though because it sounds bad.

    As for the problem with the Enum being really large, I agree. I've been trying to come up with a way to solve this. One idea I had was giving the user the option to make groups, which would allow the user to sort their dialogues into specific groups like "Item Descriptions" or "Story Dialogue", etc. I'm really considering doing this, as I've been using Dialoguer for a project of mine and that is the most annoying part of the whole system.

    Also, I'm really sorry that it took 5 days for me to get back to you. I'm going to look for a notification setting in the Unity forums control panel so I get an email every time someone posts on this thread.
     
  33. Trouch

    Trouch

    Joined:
    Nov 29, 2009
    Posts:
    87
    Hi, im complete newb who doesnt understand xml saving and loading. (Thats why i use "Json +Binary")

    In your DialoguerTestSceneMain script, for me to save and load, would it only be a matter of saving to "returnedString" and then loading by "Dialoguer.SetGlobalVariablesState(returnedString); "?
    assuming my third party tool, Json will create the XML of "returnedString"

    Or is it more complicated? Just trying to gauge what i need to learn and what i dont (I also code in java, so C# is abit of a pain)
     
    Last edited: Jun 1, 2014
  34. tonycoculuzzi

    tonycoculuzzi

    Joined:
    Jun 2, 2011
    Posts:
    195
    You got it, that's about it. It's as simple as storing the returned string, and loading that returned string back in when you run the game next time.

    Though, converting the XML to JSON sounds like it could have some issues, so I'd recommend against it, but if you can get that working then all the power to you!
     
  35. Izitmee

    Izitmee

    Joined:
    Jan 27, 2011
    Posts:
    3,227
    Hi Tonzie,

    I got interested in Dialoguer when you released it for free, and now I finally bought it and got to try it. From a quick first look it's pretty cool, and big compliments for that. Although I have two issues, which is why I jumped here:
    1. Dialoguer seems to be built for games that don't have much dialogues, organization-wise. There should be a way to organize dialogues in sub-groups, inside the Dialogue Selector window, otherwise when you have many it might become kind of a mess. Or am I missing something?
    2. While I love good GUIs, and Dialoguer surely has one, it's also pretty resource intensive, and my computer heats up pretty quickly when I have the Dialogue Editor panel open. Any chance you're considering making it more lightweight in future updates?
     
  36. tonycoculuzzi

    tonycoculuzzi

    Joined:
    Jun 2, 2011
    Posts:
    195
    I'm actually coming up with a way to sort the dialogues in a more understandable and uncluttered manner, as I agree, this is one of Dialoguer's worst qualities.

    As for the resource intensity, I'm also working on that. It should be fixed when the new GUI is implemented! :)
     
  37. Izitmee

    Izitmee

    Joined:
    Jan 27, 2011
    Posts:
    3,227
  38. BortStudios

    BortStudios

    Joined:
    May 1, 2012
    Posts:
    48
    Are there any plans to have Dialoguer support multiple dialogues firing at once? For instance, I know that it wouldn't be possible to have multiple dialogues going that are controlled by advancing with button presses, but I am working on something where there can be pop up boxes of people talking to you based on events going in the game, and they say their bit and get off, with no input from the user. I can use Dialoguer to set it up so they advance their dialogue trees automatically, but I can never have more than one going at the same time.

    Perhaps there can be a subcategory of dialogues we can create, "shouts" or something of that nature, which are not intended to be advanced by the player and are less robust than a typical dialoguer dialogue, and which run independently of one another?

    If this is already in Dialoguer and I am simply misusing it, even better. But if not, is this something that is possible in the future? It seems to me like it may be pretty simple to implement, but I don't think I have access to the Dialoguer source code to do it
     
  39. VX967

    VX967

    Joined:
    Jun 11, 2014
    Posts:
    6
    Hi, sorry to interrupt, but I'm having a bit of trouble setting up the Dialoguer. I posted this in another thread a few days ago but got no luck, so I'll try here.

    At 7:20 into the tutorial video, a button shows up on screen after some initialization script is written. Problem is that I'm not getting that button on screen. I've followed the tutorial exactly, so I'm not sure what's going wrong. Any clue why it might not be working for me? I'm using the free version of Unity, by the way.

    I'm a bit of a noob with Unity, so I apologize if this ends up being a stupidly simple problem.
     
  40. tonycoculuzzi

    tonycoculuzzi

    Joined:
    Jun 2, 2011
    Posts:
    195
    You should be able to already do that with Dialoguer. It's just a matter of setting some metadata in the dialogue to tell your dialogue GUI that the dialogue will be a "shout". Then, in your GUI controller, every time you receive the onTextPhase event, store the data and continue, so you have all the dialogue data storred without need the user's input. It all depends on how you've set up your GUI controller.

    Though, literally two Dialogues running side-by-side with user and Dialoguer interaction is not in the plans. It was something I considered, but it made things far too complicated.


    If you followed the video tutorial, and the first GUI button is not popping up, it's not a Dialoguer issue. Make sure you have all your functions properly named (including capitalization) - This seems to be a problem a lot of people have with Unity when they're just starting out.
     
  41. BortStudios

    BortStudios

    Joined:
    May 1, 2012
    Posts:
    48
    But then I can't have a shout running on the node based system, right? I'm wanting my shouts to be able to say multiple things of text, and utilize the wait system, not just grab some text and go on

    It seems then like the only way I'll be able to do it is to write my own thing that quickly runs through all of the dialogue and waits and messages in a shout, stores the info, and then actually plays it back using my own implementation of giving dialogue and waits and messages?
     
  42. tonycoculuzzi

    tonycoculuzzi

    Joined:
    Jun 2, 2011
    Posts:
    195
    Right, you wouldn't be able to utilize any Dialoguer functionality at that point, including Wait.

    You could always store metadata in your dialogues that are "Shouts" that tell your GUI controller to wait, but it wouldn't be the same.
     
  43. VX967

    VX967

    Joined:
    Jun 11, 2014
    Posts:
    6
    Yeah, just went over it again and found out I typed onGUI() instead of OnGUI(). Figures. Thanks for the help. :D
     
  44. kenlem

    kenlem

    Joined:
    Oct 16, 2008
    Posts:
    1,611
    Hi,

    I'm really impressed with Dialoguer and how clean and easy it is to understand and use. I have compared it to a number of other solutions from the asset store and was put off by how complex and hard to learn they are.

    The only thing I would like is some way to handle quests and missions? I understand a quest could be handled as a conversation but not sure how to implement a quest log or quest status. Would you consider adding quest support or is that something that can already be done?
     
  45. tonycoculuzzi

    tonycoculuzzi

    Joined:
    Jun 2, 2011
    Posts:
    195
    I feel like most other dialogue solutions on the Asset Store are weighed down and cluttered with the addition of quest/mission/inventory systems. Those types of systems only tailor to one specific type of design, and that (to me) defeats the purpose of a modular system that can be used for anything. It's like if Unity were to include a "RPG battle system" - suddenly that feature is only good if people want to make games with an RPG battle system.

    If you'd like to implement a quest system, it's very easy to add to the functionality of Dialoguer, and you could easily link a chain or array of DialoguerDialogues to your quest, whichever way you want. You could then call on these dialogues with your quest system, keeping the quest system and Dialoguer completely independent of one another. That's one of the good things about Dialoguer, is that it's very easy to integrate into your own systems without creating too many dependencies.

    For example, I'm currently working on a game where I allow Dialoguer to handle the cutscene events (character movmement, etc) using MessageEvent nodes. This system is great for my game, but wouldn't be useful for many others, so I'd never include it in Dialoguer, but the ability to add systems like that is always there.

    So I guess in short, no, I will not be cluttering Dialoguer with anything that is not specifically related to the dialogue system, in order to keep it a simple clean system that you can build onto without hassle. :)
     
    kenlem likes this.
  46. kenlem

    kenlem

    Joined:
    Oct 16, 2008
    Posts:
    1,611
    Hi Tonzie,

    That's actually the answer I was sort of hoping to hear. Dialoguer is nice and clean now and it would be a shame to ruin it by overworking it. I agree with your assessment regarding the other dialogue systems. While they do have some nice features, there have way more in there then I care to add to my project.

    OK. So I'm sure sure I figure out a good way to use Dialoguer for my own quest system. Keep up the good work.
     
  47. Trouch

    Trouch

    Joined:
    Nov 29, 2009
    Posts:
    87
    For your next update, would it be possible to include an xml file that can load or save? I just simply cant get my head around using XML, i know im probably the only person, but it would be really neat.

    Im just confused about importing and accessing an xml file in conjunction with dialoguer, especially in c#.

    thanks

    Edit: Infact, ill paypal somebody $10 if they can get dialoguer to save and load for me. Just message me if interested with paypal details.
     
    Last edited: Jul 2, 2014
  48. kenlem

    kenlem

    Joined:
    Oct 16, 2008
    Posts:
    1,611
    Hi,

    I'm calling Dialoguer.EndDialogue(); when I start a new game and get an exception when a dialogue is not in progress. Is there a way to determine if a dialog is in progress or should I keep track of that myself?


    Otherwise I just added a null check in DialoguerDialogueManager.cs

    Code (csharp):
    1.  
    2.   //Resetcurrentdialogue
    3. if (dialogue != null) {
    4.    dialogue.Reset();
    5. }
    6.  
     
  49. tonycoculuzzi

    tonycoculuzzi

    Joined:
    Jun 2, 2011
    Posts:
    195
    I'm not quite sure what you mean. There's an XML importer/export in Dialoguer, but I'm not quite sure what you're trying to say. Could you explain in more detail?



    That's something I'll add in the next release, a way to check whether or not there is a dialogue currently running, and a null-check in the Dialoguer.EndDialogue() call. Thanks for the info! :)
     
  50. Trouch

    Trouch

    Joined:
    Nov 29, 2009
    Posts:
    87
    Im a complete noob (Im not a programmer)

    I have an empty XML file. How do i go about using it in dialoguer? What exactly do i need to do?