Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

Conversa for Unity - Graph-based conversation and dialogue design

Discussion in 'Assets and Asset Store' started by dbugger, Nov 9, 2021.

  1. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50


    Links
    - Asset store page
    - Discord server
    - Tutorials (recommended)

    Conversa is a tool that allows you to design and use conversations inside your game. It uses the same graph-based interface that Shader Graph uses, to provide a familiar look, and intuitive mechanism. Managing conversations has always been complicated, and the existing tools do not usually use the full potential of Unity's graph libraries. With Conversa, creating, editing and extending your conversations will feel like an after-thought and you will be able to modify them as easy as it would be to modify a simple text file.

    With Conversa you can create conversation with different flows of conversations, thanks to its multiple features:
    - Branch out the flow of the conversation, using all kind of parameters like booleans, floats or any other kind you wish to add.
    - Use choice nodes to separate the flow of the conversation, depending on user input
    - In-conversation events to trigger any kind of action, like updating your inventory, or firing an animation
    - For complex graphs, the bookmarking system offers a clean way to navigate your graph swiftly, without polluting the interface
    - Completely framework-agnostic! You can integrate it with any kind of system, and manipulate the flow of the conversation programmatically, to use it in all kinds of situation. From normal RPG-classic conversation to audio cutscenes. You have full control.
    - Totally customizable! Create your own event nodes or data nodes, to read information directly from your system!

    Feedback is always welcome, as well as suggestions and ideas to keep improving the system. Please feel free to join the Discord server (link below) to talk with me and all the other users already using it. I always appreciate the opinion of anyone interested in using it!

    You can learn more about how to create conversations, integrate them inside your game, and create custom conversation nodes watching the Conversa wiki (Link in the page at the Asset Store)

    If you have any doubt, question or support, feel free to join Conversa's Discord server
     

    Attached Files:

    Last edited: Aug 4, 2022
    one_one likes this.
  2. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50
    I have been thinking of new nodes to add to the system, like for instance a flow node that sends you to randoms branches.

    What nodes would you like to see?

     
  3. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50
    Version 1.2 is release!
    What's new?
    - Feature: Custom inspector
    - Feature: New nodes!

    upload_2021-11-19_12-54-17.png



    I look forward to your feedback!
     
  4. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50
    Version 1.2.1 has been released!
    What's new?
    - Feature: Sticky notes
    - Bugfix: Nodes sometimes being saved twice
     
  5. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50
    Version 1.2.2 has been released!

    What's new?

    - Feature: Advanced messages!
    - Feature: Parsing parameters into strings!
    - Feature: String literals
    - Bug fix: Choice node updating the graph multiple times per second
    - Bug fix: Graph was not able to save! (Sorry!)
    - Bug fix: Debug messages appearing in the console.

    I look forward for your feedback. Do not forget to use VCS to save your code before upgrading!

    upload_2021-11-24_14-42-29.png
     
    Last edited: Jan 3, 2022
  6. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50
    Version 1.3 has been released!

    Changes:
    - Feature: Nodes to update properties directly

    upload_2021-12-2_15-52-57.png

    - Feature: Default values for properties

    upload_2021-12-2_15-53-11.png
     
  7. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50
    Version 1.4 has been released!

    Changes:
    - Feature: New node (comparison)
    - Feature: Groups for nodes
    - Feature: Compatibility between ports of different types
    - Feature: Fallback fields for ports without direct connection
    - Improvements: Better validation for invalid values

    I look forward to your feedback. Do not forget to use VCS to save your code before upgrading!
     
  8. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50
    Version 1.4.1 has been released!

    Changes:
    - Feature: Now the choice node has an additional node "Body".

    This can be used optionally, to extend the capabilities of the choice node, to resemble the message node.
    With this you can set up a message to be shown, at the same time that you display some options:





    I look forward to your feedback. Do not forget to use version control before upgrading!
     
    Last edited: Jan 3, 2022
  9. one_one

    one_one

    Joined:
    May 20, 2013
    Posts:
    621
    Just stumbled across this here on the forum. I was a bit skeptical at first as to the benefits over all those existing dialogue assets but I think using unity's graph/node system is a big plus (also for the sake of reducing complexity/dependencies for the asset). I also like that the asset seems focused on just doing dialogues. Many other systems try to do too much, like handling dialogue UI etc.

    A couple of questions/ideas though:
    • For localization, it should be enough to fill in the replies as keys and then handle it myself in the UI, right?
    • If I want to add audio, it would be possible to simply inherit from your nodes and add the required fields & methods for my audio solution?
    • Do you support subgraphs? For example, this system could also probably be used for a quest system and subgraphs could contain dialogues or subquests. This could help in keeping complex setups at a manageable size.
    • Would it be possible to reference a node and start/resume a graph at that node? That would be important for storing progress in a quest system.
    • An integration into timeline would be very convenient (two-ways - the ability to both progress conversations from timeline as well as fire off timeline events from conversation)
    • Parsing from script-like (as in movie or theater script) documents
    • Exporting all lines to a .csv or other tabular formats, including who the lines are spoken by (which will be necessary for voiced dialogue)
    By the way, I think it would be useful if you include a link to the asset store page in here (ideally also in a kinda prominent position.) And perhaps also link to this thread from the asset store page.

    EDIT: It would also be nice if the asset had assembly definitions by default.
     
    Last edited: Dec 23, 2021
  10. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50
    @one_one Thanks for your feedback. Sorry that I could not answer you before, due to the holidays.

    About your feedback:

    - Localization: it has not been addressed yet, but it is in the backlog. The idea will be to have a simple dropdown on the editor graph, that will let you switch between languages. This will update all the fields inside the graph window, making it effectively also the l10n management tool. But this will be a big undertaking and I cannot promise how soon until it is delivered.
    - Sub-graphs: Still not yet supported. Another of the big features in the backlog. Initially seems simple but one has to take into account things like setting sub-variables contained inside each node and/or subnode, and the possibility of multiple exit points.
    - Audio nodes: Extremely simple. If you look at the tutorial videos and articles, you will see how to create a custom event node in 10 minutes. I will be happy to help you myself, if you join the Discord server.
    - Different entry points: The graph does contain bookmarks, so it should be possible to jump directly into any bookmarked point through code, or you might also handle the logic to decide in which bookmark to begin, directly at the beginning of the graph. It is doable.
    - Timeline: I have no experience with Timeline, so I cannot say much about this, but the graph API is completely open. The tool is just about designing the conversation, nothing else, which leads me to believe this should be perfectly doable, if you are familiar with Timeline's API as well as Conversa's API
    - Parsing documents: This is something that maybe we could discuss directly in Discord, since I would like to know more precisely what kind of documents you have in mind.
    - Exporting: In the backlog, but yes. I plan to export to XML, CSV or JSON soon.
    - Assemby definitions: You will be happy to know they have been added in version 1.4.3! Reduced compile times and also avoid class names collisions! :)

    Also, I cannot believe I forgot to add a link to the Asset Store page!!! :facepalm:

    Thanks again for your feedback! Feel free to contact me directly, if you have any more questions!
     
    Last edited: Jan 3, 2022
    one_one likes this.
  11. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50
    Version 1.4.3 has been released!

    Changes:
    - Feature: Assembly definition files have been added, to reduce compilation time, and avoid class name collisions, if you were to add classes to the global namespace (though you shouldn't do that)

    I look forward to your feedback. Do not forget to use VCS to save your code before upgrading!
     
    one_one likes this.
  12. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50
    Version 1.4.4 has been released!
    What's new:
    - Feature: You can start now from any bookmark, not only the start node!
    - Feature: Added variable to check if the ConversationRunner has started.
    - Improvement: Made some public API methods, that users should not really be using.
    - Bugfix: You can set up the properties of a runner before beginning the conversation.

    I look forward for your feedback. Do not forget to use to version control your code before upgrading!
     
    one_one likes this.
  13. one_one

    one_one

    Joined:
    May 20, 2013
    Posts:
    621
    No worries, thanks for the quick changes and the detailed reply!
    • As for Localization - I guess it would make most sense to provide some sort of interface or drop-in for a localization solution because there are a couple out there. I guess most use a string key of some sort, so that could be a solution?
    • Yeah, I can definitely understand sub-graphs being a pretty big feature. IIRC graph view might support sub-graphs as a built-in feature in the future though, not sure how accurate that is, but if that is the case it might make sense to wait for that.
    • Bookmarks sound like a good solution, thanks.
    • Definitely, that's also something I appreciate with keeping assets lightweight - the API tends to be much cleaner making it easier to extend and customize an asset. It was more of a 'nice to have' comment either way since dialogue and timelines/animations often work quite well in conjunction, I suppose.
    • To be honest, I don't have any specific documents in mind, though I'm quite sure most writers (also in the game industry) often don't write in a game engine, but rather most of the time in more or less plain documents. Screenwriting has a pretty standardized format, which might make parsing feasible while also being familiar to many writers.
    • Thanks for adding assembly definitions, and glad to hear exporting is in the backlog!
    Oh and a bit of feedback though I guess that's a bit late to change now - I feel like having nodes as class attributes is not such a nice solution. Many graph solutions (e.g. xNode or Node Graph Processor) do this based on member/field attributes, which just comes a bit more natural with the flow of things in Unity (where exposing fields in the inspector is quite common.)
     
  14. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50
    I guess there is no reason why there wouldnt be a set of plugins that people could download, like a "Conversa Timeline plugin" or "Cinemachine Conversa plugin", or something like that, that included types of nodes to the library. Anyone could actually build them, and heck, even sell it. :)

    And yeah, it is a bit late now for that. It is already hard enough to keep developing without introducing breaking changes. But please feel free to leave any suggestions. Someday I will have to begin with v2 anyway ;) (but not anytime soon. Still a lot of room for improvement in v1)
     
    one_one likes this.
  15. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50
    Version 1.4.5 has been released!

    Changes:
    - Feature: Actor profiles. Extendable and easy to refer.
    - Feature: Event nodes can stop flow
    - Feature: Settings page
    - Feature: Help links on the menu

    I look forward to your feedback. Do not forget to use to version control your code before upgrading!
     
    one_one likes this.
  16. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50
    Version 1.4.6 has been released!

    Changes:
    - Bugfix: Solved an error where builds were breaking
    - Feature: Bootstraping custom nodes

    Now, if you want to create new custom nodes, there is an option in the context menu that will create all the necessary files, along with the basic structure for them to work.

    I look forward to your feedback. Do not forget to use to version control your code before upgrading!
     
  17. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50
    Version 1.4.7 has been released!

    Changes:
    - Bugfix: Missing attribute in template for new nodes added

    Do not forget to use to version control your code before upgrading!
     
  18. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50
    Version 1.5 has been released!

    Changes:
    - Feature: Now the Conversation Runner provides the GUID of the current active node. You can use this, for instance, to initiate the conversation from a certain position, instead of the start node. This can be useful for save files.

    The Demo scene has been modified to show how this works.
     
  19. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50
    Version 1.6 has been released!

    Changes:
    - Feature: Stack for linear dialogues! This will make it much easier to build linear conversations without having to set up a new edge with every new line. I look forward to your feedback.

    Do not forget to use to version control your code before upgrading
     
  20. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50
    Version 1.6.3 has been released!

    Changes:
    - Mostly bugfixes

    Do not forget to use to version control your code before upgrading
     
  21. dbugger

    dbugger

    Joined:
    Jan 10, 2013
    Posts:
    50
    Version 1.6.6 was released today.

    Changes:
    - Bugfix where the value of properties was giving invalid values when fetched programmatically by the user. (Thanks to @boogoo for reporting)