Search Unity

[RELEASED] Dialogue System for Unity - easy conversations, quests, and more!

Discussion in 'Assets and Asset Store' started by TonyLi, Oct 12, 2013.

  1. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Lake Released on Xbox, Steam, EGS

    Congratulations to Gamious on the release of the Lake, made with the Dialogue System for Unity! It's already garnering high praise and great reviews. It's currently available on Xbox, Steam, and the Epic Games Store.

     
  2. Stickeyd

    Stickeyd

    Joined:
    Mar 26, 2017
    Posts:
    174
    I did that and it helped! Can you add it to your new update?
     
  3. halo_of_the_sun

    halo_of_the_sun

    Joined:
    Sep 17, 2017
    Posts:
    64
    Hello, is there a way to have a conversation stay open until Trigger Exit? (I'm using this so the Player can walk up to a sign and it shows "location" until they walk away)
     
  4. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Yes, it's already in the upcoming version 2.2.20, which is releasing on Monday.

    (Side note: Version 2.2.20 will require Unity 2018.4 or newer. Unity no longer allows publishers to submit assets with Unity versions older than 2018.4.)

    Yes. Tick Stop Conversation On Trigger Exit:

    upload_2021-9-3_7-49-21.png

    The Dialogue System Trigger's GameObject should have a trigger collider. If the Conversation Actor or Conversation Conversant exit the trigger collider, the conversation will end. If you want the conversation to stay open until then, set the dialogue entry's Sequence to: WaitForMessage(Forever)
     
  5. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Dwerve at PAX West

    Check out dungeon crawling tower defense RPG Dwerve at PAX West this weekend. You can play the Dwerve: Prologue for free on Steam right now.

     
  6. Jakuri_F

    Jakuri_F

    Joined:
    Mar 9, 2020
    Posts:
    23
    Hi Tony,
    Is it possible to let the subtitle pause a while at every full stop? It feels weird to play at a constant speed now.
     
  7. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi - Yes; set the typewriter effect's Full Pause Characters. In the screenshot below, the typewriter will do a full pause on periods, exclamation marks, and question marks:

    upload_2021-9-5_7-45-12.png

    You can also set the quarter pause characters and the durations to pause.

    The typewriter also supports these RPG Maker-style control codes:

    upload_2021-9-5_7-47-4.png

    For example, if you put \. in your dialogue text, the typewriter will do a full pause there.
     
    Jakuri_F likes this.
  8. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Dialogue System 2.2.20 Released

    Version 2.2.20 is now available on the Asset Store!

    upload_2021-9-6_8-5-29.png

    This version introduces the beta release of Celtx import capability. Celtx is an all-in-one, web-based multiuser solution for film, video, and game production.


    Version 2.2.20 also adds integration with uMMORPG Remastered.

    Release Notes:

    Core:
    • Improved: Can now multi-select conversations in Dialogue Editor's conversation Outline mode to move to delete multiple.
    • Fixed: Obscure potential startup animation bug in StandardBarkUI.
    Third Party Support:
    • Celtx: Added support.
    • i2 Localization: Fixed issue in which updated Text Table asset might not be marked dirty.
    • Invector: FaceConversant no longer reports error if conversation doesn't have conversant GameObject.
    • uMMORPG Remastered: Added support.
    • uRPG: Sets Player actor's Display Name to uRPG player's name.
     
  9. halo_of_the_sun

    halo_of_the_sun

    Joined:
    Sep 17, 2017
    Posts:
    64
    Thank you for this! Hope you can help with one more thing...

    I have Language Settings on my Main Menu that work just fine:
    Capture.JPG

    But I'm having issues with the in-game Pause Screen, as the Dialogue Manager persists throughout the Scenes I'm having trouble detecting it to change the Language in the options panel. I was thinking of having a Localization box that is also DontDestroyOnLoad with it's own Canvas to always move with and detect the Dialogue Manager, but maybe that's a bit too jerry-rigged hah, any advice?

    Thanks again
     
  10. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi @halo_of_the_sun - If your options panel's text elements have LocalizeUI components, they'll use the Dialogue System's current language. (The translations should be in a text table asset assigned to the Dialogue Manager's Localization Settings.)

    If you don't want to do that, you can check the static property Localization.language.
     
  11. halo_of_the_sun

    halo_of_the_sun

    Joined:
    Sep 17, 2017
    Posts:
    64
    I'll take a look through that, I've actually had some luck with Playmaker as well with switching the languages:
    Capture.JPG

    Though the only issue I see with this is trying to set the language back to English (Default) as the Language field can't be blank
    Capture2.JPG
     
  12. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi @halo_of_the_sun - Here's a version that lets you leave the Set Language field blank. I'll include it in the next release of the Dialogue System, too.
     

    Attached Files:

  13. halo_of_the_sun

    halo_of_the_sun

    Joined:
    Sep 17, 2017
    Posts:
    64
    That worked great! Thank you very much ;)
     
    TonyLi likes this.
  14. EvanCrasbeek

    EvanCrasbeek

    Joined:
    Sep 11, 2018
    Posts:
    2
    Heya, thanks for the great asset. So far this asset has proven to be very valuable to us but we've run into an issue that prevents us from getting any further. When a character has a Dialogue System Trigger with a start conversation set, it always starts the same conversation. We're looking for a way to 'progress' into the story. How can we switch to another conversation once the first one has ended?

    Thanks in advance!
     
  15. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Please see this forum thread. The second post provides two ways to do that. Briefly: (1) add two Dialogue System Triggers and use Conditions to specify which one to start, or (2) use cross-conversation links to branch to different conversations from a starting "hub" conversation.
     
    EvanCrasbeek likes this.
  16. lolaswift

    lolaswift

    Joined:
    Jan 10, 2019
    Posts:
    151
    Hi just to be sure.
    1. It supports playing audio instead of text only dialogues, correct?
    2. It supports triggering playing animations?
    thx.
     
  17. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi @lolaswift - Yes.

    To play audio, drag your audio file into the conversation node's Sequence field. This will add an AudioWait() sequencer command to the field. You can leave the Dialogue Text field blank, but I recommend adding text, and unticking the Dialogue Manager's Subtitle Settings > Show Subtitles During Line checkboxes. This way, in the future you can add an option to turn on Show Subtitles During Line for hearing-impaired users.

    To play animations, you'll use AnimatorXXX() commands such as AnimatorPlay() in the Sequence field or, if you prefer, use a timeline editor such as Timeline, SLATE, or Cinema Director.
     
    lolaswift likes this.
  18. lolaswift

    lolaswift

    Joined:
    Jan 10, 2019
    Posts:
    151
    Just realized that I bought your asset already, well, long time ago. thanks for the reply. I might use it in the game I'm making. thx again for making the amazing asset!
     
    TonyLi likes this.
  19. Grimir

    Grimir

    Joined:
    Sep 5, 2017
    Posts:
    20
    Hello Tony,
    I'd like to clear accumulated text on the subtitle panel but don't know how. I tried using ClearSubtitleText(all) but there's no visible effect. I basically want to accumulate some npc entries, each separated by player responses, then at one point clear npc text and start over, accumulating following entries.
     
  20. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi! ClearSubtitleText(all) is the correct thing to use. Did you put it in a dialogue entry node's Sequence field? Are there any errors or warnings in the Console window? (Make sure your Console window isn't filtering out errors or warnings, and that the Dialogue Manager's Other Settings > Debug Level is set to Warnings or Info.)
     
  21. Grimir

    Grimir

    Joined:
    Sep 5, 2017
    Posts:
    20
    I double checked for typos and such before asking. Sequence is played, I checked with Debug Level Info but it does nothing. Could it depend on my dialogue setup? The way I override ui, display settings etc.?
     
    Last edited: Sep 14, 2021
  22. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi @Grimir - If Debug Level is set to Info, it should log two lines to the Console window:

    Dialogue System: Sequencer.Play( ClearSubtitleText(all)@0 )
    Dialogue System: Sequencer: ClearSubtitleText(all)

    The first indicates the time when the sequencer has scheduled the command to play (@0 means immediately). The second appears when the command actually runs. Do you see both lines in the Console? Are there any errors or warnings nearby in the Console?

    ClearSubtitleText() works fine with dialogue UI overrides, so that shouldn't be a concern.

    Would it be possible for you to send reproduction steps or a reproduction project to tony (at) pixelcrushers.com?
     
  23. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Suzerain 30% Off in Steam's We Live In A Society Sale

    Torpor Games' award-winning presidential sim Suzerain is currently 30% off in Steam's We Live In A Society Sale. Check it out for a very straightforward, engaging example of the Dialogue System in action.

    Suzerain will also be available on Nintendo Switch on September 23.

     
  24. MagicianArtemka

    MagicianArtemka

    Joined:
    Jan 15, 2019
    Posts:
    46
    Hi @TonyLi , I have a question - I try to pause dialogue with
    DialogueManager.Instance.Pause() and I want the subtitle typewriter effect will be paused as well. Instead of that typewriter become paused but then (after minSubtitleTime seconds) text just disappears. I don't use the last version of the plugin, but I didn't found anything related to that in the changelog list, so I believe an update wouldn't help me in this case.
     
  25. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi! Try setting the Dialogue Manager's Other Settings > Dialogue Time to Gameplay.
     
  26. gamesbydre

    gamesbydre

    Joined:
    Nov 25, 2014
    Posts:
    58
    Hello TonyLI. I have an issue I don't know how to fix. Somehow my camera cutscenes dont seem to be working properly. For example, when the conversation starts, there is just a split second of the closeup and it goes away immediately. Its as if something's wrong with the camera setup. Is there anyway to fix this?
     
  27. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi! It sounds like some other script is taking control of the camera. There are two ways to solve it:

    1. Temporarily disable the other script(s) during the conversation. You can add a Dialogue System Events component to the player GameObject as described in the Interaction Tutorial. Configure OnConversationStart() to disable the other script(s) and OnConversationEnd() to re-enable them.

    2. Or assign a different camera, or camera prefab, to the Dialogue Manager's Sequencer Camera field. During conversations, the Dialogue System will activate this camera and use it. If you set this camera's Depth to a higher value than your main gameplay camera, it will take precedence during the conversation.
     
  28. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Jenny LeClue - Detectivu Launch Anniversary

    Congratulations to Mografi on the two-year launch anniversary of Jenny LeClue - Detectivu, made with the Dialogue System for Unity!

    Two years ago, Jenny LeClue was part of the Apple Arcade keynote presentation:



    It's available on Nintendo Switch, Apple Arcade, Steam, and GOG.
     
  29. gamesbydre

    gamesbydre

    Joined:
    Nov 25, 2014
    Posts:
    58
    Thank you so much for the super quick response. I will try your solution soon.
     
    TonyLi likes this.
  30. gamesbydre

    gamesbydre

    Joined:
    Nov 25, 2014
    Posts:
    58
    I have tried both solutions. The first solution I tried by disabling all other cameras in scene, but nothing seems to work
    For the second solution, Ive added a second camera to use for the cutscene. The dialogue system now chooses the second camera, but it is not zooming in for the closeup to the speaker. I am using the following syntax: Closeup_Camera(Closeup).
     
  31. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Use:

    Camera(Closeup)

    Or, better yet:

    Camera(Closeup);
    {{default}}

    The command name is Camera(), and it controls whatever is currently being used as the conversation's sequencer camera. In most cases, devs don't assign a camera to the Dialogue Manager's Sequencer Camera field, in which case the conversation uses the existing camera that's tagged MainCamera. But in your case you've assigned a camera to Sequencer Camera, so it will use that one.
     
  32. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Suzerain - Nintendo Switch Release Today

    Suzerain, made with the Dialogue System for Unity, releases on the Nintendo Switch eShop today. There's still a short time left before release in which you can pre-order it for 20% off.

    Suzerain on Nintendo Switch

     
  33. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Integrations Updated for Emerald AI 3.0, Bolt, Excel

    The Dialogue System Extras page has a new download for Emerald AI 3.0 integration. This package will also be in Dialogue System version 2.2.21.

    The Extras page also has an updated integrations for Bolt and Excel import.
     
  34. Jakuri_F

    Jakuri_F

    Joined:
    Mar 9, 2020
    Posts:
    23
    Hi Tony,
    Is there a way to let bark messages get a continue button, or place normal messages into a speech bubble besides character, like what Crossing Souls did?
    I want to use this style for minor characters (e.g. shopkeeper) who don't have portrait image.
    ss6.png
     
  35. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi @Jakuri_F - Yes. To place normal messages in a speech bubble, see:

    How To: Show Overhead Bubble Subtitles

    I recommend doing that. But if you want to use barks instead, you can add a continue button to your bark UI. Configure its OnClick() event to call StandardBarkUI.OnContinue. Set the bark node's Sequence to wait for either a long duration (e.g., Delay(30)) or forever (e.g., WaitForMessage(Forever)).
     
    Jakuri_F likes this.
  36. i32gg7ar

    i32gg7ar

    Joined:
    Jan 3, 2021
    Posts:
    11
    Hi Tony!

    I've been looking into Dialogue System's integration with Ink, and found that in the integration code, the "Always Force Response Menu" option is always turned off for Ink conversations. Do you know why that is done? I changed the integration code to stop overriding the input settings, otherwise the response menu doesn't show up if there's a single choice (and I don't want that). I don't know if there are any unintended consequences of what I did, so I thought I'd ask here. If the input settings override was done for a good reason, is there any way that I can still show single-choice responses with Dialogue System + Ink?
     
  37. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi @i32gg7ar - Ink works a little differently. You specify choices using bullet points, like the line "+ But of course" below:

    === astonished ===
    "You are in jest!" I told him in dignified affront. "You make mock of me, Monsieur."
    "I am quite serious."

    + "But of course"
    -> ending

    Those choices (e.g., "But of course") will be shown in response menus.

    Notice that it's preceded by two lines of dialogue which will be shown as subtitles: "You are in jest!" and "I am quite serious." It's implied that the first line is spoken by the player, and the second line is spoken by the NPC Monsieur Fogg.

    Playing through Ink as plain text, the player can infer who is speaking. But when you need to determine which subtitle panel to use, what the subject GameObjects are, etc., you may need to be able to unambiguously specify the speaker. The Dialogue System's Ink integration lets you do this by putting the actor name in front of the text. For example:

    === astonished ===
    Player: "You are in jest!" I told him. "You make mock of me, Monsieur."
    Fogg: "I am quite serious."

    + "But of course"
    -> ending

    In the example above, the player will show "You are in jest" as a subtitle, followed by Fogg's subtitle "I am quite serious". Finally, it will show "But of course" in a response menu.
     
  38. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Dialogue System 2.2.21 Released

    Version 2.2.21 is now available on the Asset Store!

    If you use Opsive's Ultimate Inventory System 1.2, an update for the Dialogue System's integration is available on the Dialogue System Extras page. The full updated integration package should be available on Opsive's site soon.

    Release Notes

    Core:
    • Improved: Localize UI component can now localize TextMeshPro components in addition to TextMeshProUGUI.
    • Improved: Em Tag For Old/Invalid Responses takes precedence over other [em] tags.
    • Improved: StandardUIQuestLogWindow now has separate virtual methods to get quest title templates.
    • Improved: DialogueActor.SetupBarkUI is now virtual.
    • Improved: Can now assign a GUI Skin to Lua Console.
    • Improved: Added 'Suppress OnEnterState Events On Start' option to QuestStateListener.
    • Improved: Welcome Window provides warnings before enabling options that could cause compile errors if required package isn't installed.
    • Fixed: Custom subtitle panels not part of list of panels assigned to dialogue UI are now considered when waiting for panels to close.
    • Fixed: Ticking Welcome Window compiler options after moving Dialogue System to different folder now no longer reports error message.
    • Fixed: Removed redundant PixelCrushers.DialogueSystem.EncodingType definition.
    • Fixed: Updated CharacterInfo class to handle disabled domain reloading.
    • Fixed: InputDeviceManager when using Input System now ignores keycodes for mouse buttons.
    • Fixed: Moved sequencer command processing back to Update, with sequencer messages queued for LateUpdate.
    • Save System: Added version info to saved games.
    • Save System: DiskSavedGameDataStorer Added dropdown to use persistentDataPath, dataPath, or custom location.
    • Save System: DiskSavedGameDataStorer now saves to intermediate file first in case writing to file fails.
    • Save System: DiskSavedGameDataStorer will now rebuild saveinfo.data (catalog) automatically if missing.
    • Save System: DiskSavedGameDataStorer change -- will now throw exception if fails to write to disk.
    Third Party Support:
    • Adventure Creator: Start Conversation action now shows text dropdown instead of number field for "Start at entry ID".
    • Bolt: Added BoltEvent() sequencer command.
    • Celtx: Added [SEQ] sequence syntax checking; fixed import bug related to order in which sequences were added in Celtx.
    • Chat Mapper: Conversation overrides are now included in XML export/import.
    • CSV: Conversation overrides are now included in CSV export/import.
    • Emerald AI: Updated for Emerald AI 3.0.
    • Excel: Added option to specify conversation titles (in cell B2).
    • Ink: Now supports simultaneous conversations. Removed deprecated Include In Save Data checkbox. (Use InkSaver component.)
    • Opsive Ultimate Inventory System: uisAddItem/RemoveItem() Lua functions can specify item collection to operate on.
     
  39. SOSolacex

    SOSolacex

    Joined:
    Jan 10, 2018
    Posts:
    121

    Hey Tony, I've recently started getting an issue (after updating a couple of assets) with this code.
    I am currently getting: Assets\Opsive\UltimateInventorySystem\Scripts\UI\Panels\Save\PixSaveGrid.cs(117,30): error CS1061: 'SaveData' does not contain a definition for 'SetDateTime' and no accessible extension method 'SetDateTime' accepting a first argument of type 'SaveData' could be found (are you missing a using directive or an assembly reference?)

    The pixelcrushers assembly is already referenced, so I am not entirely sure what else I could be missing
     
  40. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi - That code isn't part of the Dialogue System. When you updated Ultimate Inventory System, did you follow Opsive's upgrade guide? In particular, make sure you remove the old version before importing the new one.
     
  41. SOSolacex

    SOSolacex

    Joined:
    Jan 10, 2018
    Posts:
    121
    Yeah, I used to have some issues in regards to versions before.. but I fixed all of that. Right now the only error I am getting is that one.
     
  42. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi - PixSaveGrid.cs is a custom script of your own. It's not part of the Dialogue System or UIS. If you're using it to save the slot positions of items, you can probably remove it and use UIS's own Inventory Grid Saver component. However, if you still need to use your custom script, you'll have to remove the reference to SetDateTime because UIS 1.2's SaveData class does not have a SetDateTime method.
     
  43. Jakuri_F

    Jakuri_F

    Joined:
    Mar 9, 2020
    Posts:
    23
    Hi Tony,
    qqq.png
    I wonder what does this icon called in English, and how can I add one, does Dialog System have a pre-installed one?
     
  44. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi - That's just the continue button. It's the same as this:

    upload_2021-10-12_10-24-48.png

    except I removed the child Text element and assigned a different image sprite.
     
  45. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Disco Elysium - The Final Cut Now Available on Nintendo Switch

    Disco Elysium - The Final Cut, made with the Dialogue System for Unity, is now available on Nintendo Switch! Also available on Xbox, PlayStation, Windows, Mac, and Stadia.

     
  46. Jakuri_F

    Jakuri_F

    Joined:
    Mar 9, 2020
    Posts:
    23
    Thanks, I thought it is something like "waiting-for-input" icon, which appears when the text is fully displayed. Does Dialog System support such a thing?
     
  47. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Yes. You can do that with the continue button. Configure the typewriter effect's OnCharacter() event to deactivate the continue button. Configure OnEnd() to activate it.
     
    Jakuri_F likes this.
  48. i32gg7ar

    i32gg7ar

    Joined:
    Jan 3, 2021
    Posts:
    11
    Thanks for the reply! I think I should clarify with an example, because I didn't get an answer to my question. I started a new project, added Dialogue System + Ink + Dialogue System's Ink support, and used the following Ink story:

    Code (CSharp):
    1. -> test_choice
    2.  
    3. = test_choice
    4. This is a line of text.
    5. + Ok
    6.   Bye!
    7.   -> END
    I added an Ink Trigger to start a conversation at
    test_choice
    . When the trigger runs, I see "This is a line of text." in a dialogue panel, but right after that, there's no response menu, and the dialogue skips straight to "Bye!".
    Essentially, the response menu isn't being shown, and the only way I found to show it is to comment the part of Dialogue System's Ink support code which always turns off "Always Force Response Menu".

    I wanted to know why this is done - is there something between Ink and Dialogue System that requires that option to always be turned off? Because my experience so far has been that the integration doesn't work as expected unless that option is turned on.
     
  49. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    No, you're correct. You can comment out that line. It was set to better match what the example Ink stories do. In the next release, the DialogueSystemInkIntegration component will have a checkbox 'Disable Always Force Response Menu' that will default to ticked (so existing projects will continue to function the same), but you can untick it. I'm attaching an advance copy to this post.

    The "Ok" line is actually being followed, but it's not visible because your Dialogue Manager's Subtitle Settings > Show PC Subtitles During Line checkbox isn't ticked.
     

    Attached Files:

  50. i32gg7ar

    i32gg7ar

    Joined:
    Jan 3, 2021
    Posts:
    11
    Got it, thanks! I see the "Ok" line being displayed if I tick that box, but unless "Always Force Response Menu" is also enabled, it doesn't really prompt the player to select a response. The next release will solve this, thanks for that!
     
    TonyLi likes this.