Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

[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,670
    3.5 Turbo works about the same as Davinci003 at 10% of the price. When you have access to GPT-4, you can just change the addon's Model dropdown to GPT-4 and the addon will use it.
     
    AGregori likes this.
  2. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Dialogue System 2.2.35 Released

    Version 2.2.35 is now available on the Asset Store! This version adds integrations for FMOD and Wwise, updated integrations for RPG Builder and other assets, and more.


    Release Notes:
    Core:
    • CHANGED: Timeline() sequencer command will now allow timeline to play forever if Wrap Mode is set to Loop.
    • Added: Actor/Item/QuestIDToName() Lua functions.
    • Improved: Conversation dropdown search bar is now case insensitive.
    • Improved: StandardUIInputField now monitors touchscreen keyboard's Done/Cancelled status.
    • Improved: Added new vertical auto arrange algorithm to Dialogue Editor window's node editor [courtesy Barky Seal]
    • Improved: Dialogue Editor node group headings now scale up for easier reading when canvas is zoomed out.
    • Improved: LuaConsole methods are now virtual.
    • Improved: Added [DialogueEntryPopup] attribute.
    • Improved: Added queue limit options to Bark Group Manager.
    • Fixed: AudioWait() with multiple Addressable clips no longer stops after first clip.
    • Fixed: Response menu wasn't using ScrollbarEnabler if menu was configured with Show animation.
    • Fixed: QuestStateListener now updates when saved game is loaded.
    • Fixed: MissingReferenceException that could occur if exiting editor play mode while showing StandardUIInputField.
    • Fixed: SetPortrait() sequencer command didn't work when setting an actor's Display Name.
    • Fixed: LocalizeUI components on inactive GameObjects wouldn't update when changing languages unless the GameObject had previously been active.
    • Cinemachine: Added CinemachineZoom() sequencer command.
    Third Party Support:
    • AC: When changing AC language, quest log window localization is also updated.
    • articy:draft: Importer now handles negation (!) in front of functions and expressions; three-slash comments (///) are now removed from expressions, letting you include Lua code after without syntax warnings.
    • Celtx: Breakdown improvements; portrait import improvements; fix for null conditions.
    • FMOD: Added support.
    • i2 Localization: Added support for Em Tag For Old Responses to I2 Language when Use I2Language At Runtime is ticked.
    • Lively Chat Bubbles: ClearSubtitleText() sequencer command now works on LCB subtitle panels.
    • RPG Builder:
      • Added Pause Game During Conversation and Disable Player Control During Conversation checkboxes to AI > Dialogue System module.
      • Bypass Interaction Panel checkbox now works without flashing interaction panel.
      • Fixed issue where NPC wouldn't stay in player interaction state during conversations.
      • Added disablePlayerControlInAllConversations checkbox to bridge.
      • Added Lua functions: rpgGetPlayerGender, rpgSetInteractableObjectState, rpgPlayCombatEffect, rpgGetTreePoints, rpgCanRankUpRecipe, rpgGetCurrencyAmount.
      • Added sequencer command: rpgCraft.
      • Added helper component for quest journal button in toolbar.
      • Added cursor blocking image to background of dialogue UI.
    • Wwise: Added support.

    Dialogue System Addon for OpenAI

    We also just released the Dialogue System Addon for OpenAI! This addon is fully integrated into the Dialogue Editor to make it easy for your to prototype and revise conversations and other text using OpenAI/ChatGPT. This addon requires Dialogue System 2.2.35+.




    Going to GDC? Use the Dialogue System or interested in using it in the future? Come join us for lunch on Thursday. There are a few seats still available! Please RSVP for free.
     
    AGregori and Homicide like this.
  3. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Dialogue System + ORK RPG Framework Tutorial (Indie Tutorials)

    Guillermo at Indie Tutorials just released a nice tutorial on how to integrate the Dialogue System for Unity with ORK Framework:

     
    AGregori likes this.
  4. vresu

    vresu

    Joined:
    Sep 26, 2011
    Posts:
    4

    Hi there, new here, I would like to ask is there is the tools possiible to make cinematic cutscene for 2d pixel? like controlling the NPC to move here and there and play animations? and play player animation then after the cutscene player able to control it again, while lefting the npc playing the loopoing animation (example training swinging sword).

    is there is any video for that?
    I am intrested in the tools.

    Thank You
     
  5. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    If you just want to play a cutscene by itself, there may be more appropriate tools for that, such as SLATE or Unity Timeline. However, if you want to play a cutscene during a conversation, the Dialogue System is more than capable. You can even use SLATE or Timeline within the conversation if you prefer, or you can use the Dialogue System's text-based cutscene sequence commands (tutorials).
     
  6. Frostinemolv

    Frostinemolv

    Joined:
    Jan 5, 2023
    Posts:
    5
    Hello, I am new to the dialogue system. I am following the tutorial. I added a 'usable' to the NPC, and a selector to the player. When I come close to the npc, I can press 'space' to interact with the npc, but I can't use mouse right click to interact wih the npc. I tried to change the 'Use Key' from 'space' to mouse 0 and mouse 1. There is still no reaction/ In my game, I need the player to use mouse click to start the conversation. But it seems that the mouse click cannot be detected by the dialogue system. What can I do?
     
  7. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi! Are you using Unity's built-in input manager, or have you switched to a different input manager such as Rewired or the Input System package? If you're using the Input System package, for example, it doesn't use key codes. You'll need to define an action in your InputActions asset, register that action with the Dialogue System, and enter the action name in the Selector's Use Button field. To register actions with the Dialogue System, see page 5 of the Input_Device_Manager.pdf manual or the video tutorial.
     
  8. Frostinemolv

    Frostinemolv

    Joined:
    Jan 5, 2023
    Posts:
    5
    Thank you so much! That works!
     
  9. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Happy to help!
     
  10. jamie_unity

    jamie_unity

    Joined:
    Feb 3, 2017
    Posts:
    4
    I have an issue with response menus always selecting the first option to continue the conversation. I checked the EventSystem to see what is selected when I hit enter, thinking it might be the continue button which is over the whole screen which is being triggered and defaulting to the first response, but the event system is saying the correct button is selected (response 1, 2, 3 in this case).

    Any pointers as to what is causing this? I've been changing settings to try and fix it all day. I tried creating another conversation with some simple responses and it happens there, too.
     
  11. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi! Did you by any chance add a UI Button Key Trigger component to your response button(s)? If you did, try removing it.
     
  12. jamie_unity

    jamie_unity

    Joined:
    Feb 3, 2017
    Posts:
    4
    I did have a UI button key trigger on it yes, because I want to use gamepad and keyboard controls over mouse clicks in this game.

    I removed the UI button key trigger component just now, but the effect has been that now the response buttons won't do anything. I tried manually assigning the OnClick method from the Standard UI Response Button component, but it isn't doing anything either.
     
  13. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Leave the response button's OnClick() event completely empty -- or, if you want to assign something else to it, also configure it to call StandardUIResponseButton.OnClick. But the easiest setup is to simply leave the OnClick() event completely empty.

    You don't need UI Button Key Triggers if you just want to use the gamepad or keyboard to navigate response menu buttons (e.g., left stick/d-pad to navigate, 'A' button to select), like this:

    upload_2023-4-12_20-17-40.png

    The Dialogue System works with Unity UI's standard EventSystem navigation. Make sure your scene has an EventSystem and that it's configured for the input system that you're using. If you're using Unity's built-in input, it should have a StandaloneInputModule. If you're using Unity's Input System package, it should have an InputSystemUIInputModule. If you're using Rewired, it should have a RewiredStandaloneInputModule.

    Then inspect the Dialogue Manager GameObject's Input Device Manager component and tick Always Auto Focus. While showing the response menu, this will keep a response button selected (focused) so the EventSystem can navigate them with the Vertical and Horizontal inputs.

    The Input Device Manager component has an Input Device setting that tells it what type of input device it's using: joystick, mouse, keyboard, etc. When you move the mouse or click a mouse button, it automatically switches to Mouse mode. When you press joystick inputs, it automatically switches to Joystick mode. When it's in Joystick/Keyboard mode, or if Always Auto Focus is ticked, it will keep a response button selected to allow joystick/keyboard navigation. If you don't want a response button to start selected when the response menu opens when you're in Mouse mode, UNtick Always Auto Focus.

    ---

    On the other hand, if you want to tie responses to specific gamepad buttons like this:



    Then you will want to use UI Button Key Triggers. Add 4 buttons to the Standard UI Menu Panel's Buttons list. Add a UI Button Key Trigger to each one, and set each Button Name field to an input definition that maps to a gamepad button.
     
    AGregori likes this.
  14. jamie_unity

    jamie_unity

    Joined:
    Feb 3, 2017
    Posts:
    4
    Thanks Tony, your suggestion about the input system module on the event system was right, along with the UI button key triggers. I've removed all the button key triggers and set the input module to standalone and everything works as it should now.
     
    TonyLi likes this.
  15. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Glad to help!
     
  16. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hunt the Night - Just Released

    Congratulations to Moonlight Games on their release today of Hunt the Night, made with the Dialogue System for Unity. It's available on Steam and GOG, and it already has lots of great reviews. It plays great on PC, but people are loving it on Steam Deck.

     
  17. GrassWhooper

    GrassWhooper

    Joined:
    Mar 25, 2016
    Posts:
    108
    Hey
    Small question/suggestion
    so, we want to play an autoplay feature in our game, and i saw the method used in ConversationControl.cs
    it basically changes the continue button type to "Never".

    now while that works, and conversation just continues and never waits, which is the script working as intended, but the issue is that, in 99% of the cases it would be more practical to have the currently active conversation line "Wait" for a period of time, to give players a room to read and whatnot, and then the continue should happen.

    so to resolve this issue i attempted to add an extra delay in the OnConversationLine message, but it simply did not work, whether i was appending the delay at the start of the sequence or end of sequence it had no difference,
    (probably because i added a value that is lower than the length it takes for the entire text to be done, but i do not want to calculate how long text would take and then add that to the delay it seems convuluted).

    but what worked is the following:

    we need to keep the continue button mode to "Always", and send a custom message once the entire Sequencer has finished playing, and there is the
    ConversationView.OnFinished() function

    Code (CSharp):
    1.      
    2. //this is from ConversationView.cs
    3.  private void OnFinishedSubtitle()
    4.         {
    5.             //my change start
    6.             NotifyParticipants("My_OnSequencerFinishedSubtitle
    7. ",lastSubtitle);
    8.             //my change end
    9.             FinishSubtitle();
    10.         }
    now, i just listen to this custom message of mine, and trigger the continue manually after whatever extra delay or custom unique conditions i add.

    tldr; i wanted to add a simple delay in the autoplay functionality, but in the ConversationControl.cs it was immediate, right after the conversation line is done, and modifaying the sequence at its end or its start using the OnConversationLine message simply did not work, it had zero effect, so i added a custom message that is sent once the sequencer is done, and from there i add whatever delay and call continue manually.

    and generally i think having an extra message we listen to, that is called once the entire sequencer is done can be useful? maybe?.

    so i just wanted to share this case, and perhaps make a suggestion, if possible could we have a message called once sequencer is done by default in future versions maybe? it sounds like a useful message to listen to.

    Or maybe i am just overcomplicating a simple issue, i do not know really, if there is a simpler solution i would be grateful to hear it.
     
  18. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @GrassWhooper - You can do that much more simply. If continue button mode is set to Never, subtitles will automatically advance after their Sequences finish. Set the Dialogue Manager's Default Sequence (or the conversation's Override > Default Sequence) to something like:

    Delay({{end}})

    This will delay for a duration based on text length, and is the default behavior of the unmodified Dialogue Manager prefab that ships with the Dialogue System.

    Then just set continue button mode to Never or Always depending on what you want to happen (auto advance or wait for player to click continue). If you do this while a conversation is active, call this line to update the visibility of the continue button:

    DialogueManager.conversationView.SetupContinueButton();
     
  19. fax58

    fax58

    Joined:
    Dec 27, 2021
    Posts:
    42
    Hi Tony!
    I'm having problems to understand how the "StandardDialogueUIShowInvalidResponses" is working.
    I checked the example scene, deleted "StandardDialogueUI" from my GO and added the new script. Checked "Include Sim Status" in other settings. I have few questions:

    1- Shoud I just add the new script to "StandardDialogueUI" or replace it? The original "StandardDialogueUI" seems much longer.
    2- Is it correct that now to every invalid entry I need to add the line in the screenshot? Seems like by default, if I don't set the var to true, is false automatically.
    3- I noticed that that script is from 2019. Is it still the correct way to show/hide invalid entries when we check true "Include invalid entries" in the Input Settings?

    Many thanks!
     

    Attached Files:

  20. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi - I don't recall which example you're referring to, so I'll just go ahead and answer the questions with general answers:

    > 1- Should I just add the new script to "StandardDialogueUI" or replace it? The original "StandardDialogueUI" seems much longer.

    If StandardDialogueUIShowInvalidResponses is a subclass of StandardDialogueUI, replace it in-place like this: How To: Replace Script with Subclass and Keep Field Assignments. You can tell if it's a subclass if it contains a line like this near the top:

    Code (csharp):
    1. public class StandardDialogueUIShowInvalidResponses : StandardDialogueUI
    If it's not a subclass, look for comments at the top of the script that might explain how to set it up. If you don't find any, add it in addition to the existing StandardDialogueUI component; don't replace StandardDialogueUI.

    > 2- Is it correct that now to every invalid entry I need to add the line in the screenshot? Seems like by default, if I don't set the var to true, is false automatically.

    Sorry, I don't know what screenshot you're referencing.

    > 3- I noticed that that script is from 2019. Is it still the correct way to show/hide invalid entries when we check true "Include invalid entries" in the Input Settings?

    Probably. Nothing should have changed there.

    Maybe this is the article you're referencing. Even if not, it should still be helpful for what you want to do: Conditionally Show Invalid Entries.
     
  21. Dumpling007

    Dumpling007

    Joined:
    Dec 13, 2018
    Posts:
    32
    Hi Tony, I found a problem when packing and testing demo. The Dialogue Manager Database in my scenario came from different data references, one was from "Village Database", The other scene references the “Dungeon Database”, but only scenes referencing the “Village Database” work properly in the Demo, while scenes referencing the “Dungeon Database” don't. I'm not sure if it's because the Village Database overwrites the Dungeon Database when loading across scenes.
    • By the way, everything worked until it was packaged as a demo
     
    Last edited: Apr 24, 2023
  22. fax58

    fax58

    Joined:
    Dec 27, 2021
    Posts:
    42
    Hi Tony, sorry, I forgot to link the forum page where I took the script and the example. Anyway yes, is the link you posted in your reply.
    What I meant was: after I integrate StandardDialogueUIShowInvalidResponses in my project, every time there is an invalid entry, I need to add (under All Fields in the dialogue entry) the "show invalid" variable. Without adding any line of code and regardless if the variable should be true or false, right?
    Thanks for the response!
     

    Attached Files:

  23. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @Dumpling007 -
    • By default, the Dialogue Manager GameObject acts as a persistent singleton. This means that, at runtime, the first instance of the Dialogue Manager will survive scene changes and replace any Dialogue Managers in subsequently-loaded scenes. Make sure the first Dialogue Manager to appear in the scene list of your build settings is properly configured.
    • If you are using more than one database, see Working With Multiple Databases.
     
  24. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    You can add it once to your dialogue entry template (see Templates) and set a default value (true or false) there. Then, for any dialogue entries that you don't want to use the default value, inspect that dialogue entry and change the value.
     
  25. fax58

    fax58

    Joined:
    Dec 27, 2021
    Posts:
    42
    Thanks!
     
  26. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Glad to help!
     
  27. Dumpling007

    Dumpling007

    Joined:
    Dec 13, 2018
    Posts:
    32
    Thanks my friend!!
     
  28. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Also glad to help! :)
     
  29. Dumpling007

    Dumpling007

    Joined:
    Dec 13, 2018
    Posts:
    32
    Hi tony, I looked at the document about using multiple Databases. I used the component "Extra Databases", created an empty subject under the original Dialogue Manager, and mounted the component. I then used Dungeon Database as an Extra Database, and now I have a few questions for you:

    1. How does this component determine which database I need to use in a given scenario?

    2. The ids in the additional database, including the role names, should the variables not have the same names as the data in the original database?

    3. After mounting the "Extra Database" component, do I need to reset a global database with global variables?
     
  30. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi - If you're talking about this manual section: Working With Multiple Databases, I can provide answers below. I also recommend re-reading the Working With Multiple Databases section since you have more context now, so it will make more sense.

    At runtime, the Dialogue Manager works with a single in-memory master database. (You can access it in C# using the DialogueManager.masterDatabase property.)

    When the Dialogue System starts, it initializes the master database with the contents of the Dialogue Manager's Initial Database.

    If an Extra Databases component adds additional databases at runtime, their contents are also merged into the master database.

    You do not need to reset anything. However, you must make sure that internal IDs do not conflict between your databases. One way to do this is to run the databases through the Unique ID Tool. Another way is to set a different Base ID value in each database.

    I recommend creating all of your global variables in a global database assigned to the Dialogue Manager's Initial Database field. Then sync those global variables to your other database(s) so you can reference them in your other database(s)' conversations. (See Sync Assets)
     
  31. Dumpling007

    Dumpling007

    Joined:
    Dec 13, 2018
    Posts:
    32
    Thank you very much for your answer Tony, I would recommend the Dialogue System to more of my fellow game developers, it's so great!!
     
    TonyLi likes this.
  32. Dumpling007

    Dumpling007

    Joined:
    Dec 13, 2018
    Posts:
    32
    HI,Tony, I have solved the problem of switching the dialog database using global variables according to your instructions, but I found that some dialog characters' avataras would display confusion. I checked the "Actor" and "Connversant" of the dialog and there is no problem, I don't know what is the problem
     

    Attached Files:

  33. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi - Please review this manual section: Character GameObject Assignments. Hopefully that will resolve the issue. If it doesn't resolve the issue, please check if your scene has two Dialogue Actor components that are both set to the same actor.
     
  34. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Martin Hanses (Team Clam) Interview on Indie Dev Game Break Podcast

    upload_2023-5-1_10-34-57.jpeg

    Martin Hanses of Team Clam, currently making Clam Man 2 using the Dialogue System for Unity, recently did a very insightful interview on the Indie Dev Game Break podcast. In addition to offering some kind words about the Dialogue System, he shares great thoughts on:
    • writing dialogue options that are more interesting than simple good vs. evil choices
    • writing RPGs that bring character and dialogue more to the forefront
    • his writing philosophy of writing for fun
    • and much more.
    Listen on Apple Podcasts or Spotify
     
  35. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Dialogue System 2.2.36 Released

    Version 2.2.36 is now on the Asset Store.

    Release Notes:
    Core:
    • Improved: Pressing Enter in Dialogue Editor conversation search bar jumps to first conversation matching search string.
    • Improved: Increment On Destroy component now lets you specify dialogue database for variable dropdown.
    • Improved: InputDeviceManager.IsKeyDown now handles Mouse# key codes when using Input System package.
    • Improved: Updated shared UI panel code: if panel has Event Trigger with Select event, Auto Focus now invokes event when opening panel & selecting first selectable.
    • Improved: If StandardUIMenuPanel blockInputDuration > 0, does not select a response button until duration elapses.
    • Fixed: Removed error message if Dialogue Manager's Warmup mode was set to Extra and no StandardDialogueUI was assigned to Dialogue UI field.
    • Fixed: If response menu timer is counting down, it can now resume if GameObject is deactivated and reactivated mid-countdown.
    • Fixed: Possible coroutine start error with StandardUIMenuPanel using TextMesh Pro and autoscroll.
    • Fixed: ChangeActorName() now works when active conversation uses a different actor for primary conversant than actor set in database.
    • Fixed: DialogueActor.GetActorName() now handles [em#] tags (e.g., [em#] tags in Display Names).
    • Fixed: Conditions that consist only of a comment now return true.
    • Fixed: Gracefully handles conversations that contain entry ID conflicts; reports conflicting IDs.
    • Fixed: LiveCamera() without subject defaults to speaker.
    • Fixed: PersistentDataManager excludes fields with blank Names from save data.
    Third Party Support:
    • articy:draft: Now recognizes Grantable and ReturnToNPC quest states; now handles input pins/condition nodes that contain only a comment.
    • Gem:
      • Updated branding to (Backlight) Gem instead of Celtx Gem.
      • After importing, updates Dialogue Editor window.
      • Elements in sequence nodes are now given their own Celtx ID values in dialogue entries.
      • Fixed: Issue with missing actor/conversant assignment under certain circumstances.
      • Fixed: Custom breakdowns in certain circumstances would import as the wrong custom type.
      • Possible known issues with conditions and custom breakdown items (will be addressed in a patch).
    • Corgi: Updated for v8.3.
    • Feel: Updated for v3.11.
    • Opsive UCC: Updated for v3.0.9.
    • RPG Builder:
      • Pause during conversation now unpauses after conversation.
      • New character after deleting character now resets save data.
      • CombatEntityEvent now runs OnDeath() only once even if RPGB invokes CombatEvents.EntityDied multiple times.
      • Kill Skeletons quest now asks to kill 3 skeletons to demonstrate how to increment counter variable.
    • Twine: Updated Twine importer for change to Conditional() Lua function in 2.2.34 that affected Twine (if:) statements.
     
  36. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Dialogue System Addon for OpenAI - Version 1.0.2 Released

    upload_2023-5-2_10-16-55.png

    Version 1.0.2 of the Dialogue System Addon for OpenAI is now available on the Asset Store!

    In addition to using GPT-4, GPT-3.5, and other language models to write conversations and barks, punch up text, fix spelling and grammar, and translate dialogue database content, version 1.0.2 adds these new features:
    • Generate portrait images using DALL-E
    • Generate voice audio for your dialogue using ElevenLabs
    • Play runtime-generated conversations in which the player can respond by menu buttons or freeform text input
    • Play runtime-generated barks
    • Runtime-generated conversations and barks can adapt to the current game state using by referencing Dialogue System data such as DS variables -- or, in fact, any info in your project by registering the info with the Dialogue System's Lua environment
     
    blueivy and flashframe like this.
  37. flashframe

    flashframe

    Joined:
    Feb 10, 2015
    Posts:
    789
    That's pretty cool Tony!
     
    TonyLi likes this.
  38. Dumpling007

    Dumpling007

    Joined:
    Dec 13, 2018
    Posts:
    32
    Can I understand that if I set the avatar in "Actors" and I use the "Actor" in the dialogue then the avatar will use the avatar in "Actors", right?
    I want to know, if I set the avatar of Actor A in "Actors" and I use that "Actor A" in the dialogue, will the avatar use the avatar set in "Actors A"? So if I also add the "Dialogue Actor" component and set the dialogue role to another Actor B, will Actor B's avatar cover Actor A?
     
  39. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    If you write a conversation with Actor A as the conversant, and then at runtime specify to use Actor B as the conversant, then Actor B will speak any lines that were assigned to Actor A in the conversation. More info: Character GameObject Assignments
     
  40. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Updated Importers for Arcweave & Backlight (Celtx) Gem

    The Dialogue System Extras page has patches that updates the importers for Arcweave and Backlight (formerly Celtx) Gem.

    The Arcweave patch handles changes in the latest release of Arcweave, including the ability to add Arcscript code expressions to connections. It doesn't handle the new visits() function yet.

    The Gem patch handles updates to Gem and improved handling of custom breakdown eitems.

    If you're using the Dialogue System's built-in editor or any of the other importers (articy:draft, Chat Mapper, Twine, Ink, etc.), there's no need to import either of these patches. They'll be included in the next full release.
     
  41. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Dialogue System 2.2.37 Released - Now With Yarn Spinner 2 Import

    Version 2.2.37 is now available on the Asset Store. The update features the addition of Yarn Spinner 2 import capability, as well as updates to the Arcweave and Backlight (formerly Celtx) Gem importers.

    It also adds the option to show "[new]" indicators next to new quests, use quest group display names, and a handy Stats section in the Dialogue Editor to see word counts and more.


    Release Notes:
    Core:
    • Changed: Removed internal vertical offset from bubble panels (bark, subtitle, menu).
    • Improved: Added quest log window option to show "[new]" indicator for unviewed quests; added support for group display names.
    • Improved: Added Dialogue Editor > Database > Stats section (word count, etc.).
    • Improved: Database Editor > Localization Export/Import now exports translation table for actor display names.
    • Improved: DialogueManager.currentActor & currentConversant are now set when calling ConversationHasValidEntry().
    • Improved: Added improved vertical auto-arrange contributed by Fairmoon Museum dev.
    • Improved: Sequences can now contain escaped commas (\,) to embed commas in parameters instead of splitting parameters.
    • Fixed: GameObjectUtility.FindObjectsOfTypeAlsoInactive() didn't search Don't Destroy On Load GameObjects.
    • Fixed: UILocalizationManager no longer reports warning when exiting editor play mode in certain circumstances.
    • Fixed: Timing of "Typed" messages from quickly-running typewriter effects.
    • Fixed: Accumulated text in subtitle panels omit RPG Maker-style codes, now handles TMPro tags of form <#rrggbb[aa]>.
    • Fixed: QuestStateListener now correctly observes multi-state selections.
    • Post Processing: Updated DOF() for Post Processing v2 package; added optional volumeSubject parameter.
    Third Party Support:
    • Arcweave: Updated importer for latest version; handle Arcscript in connections; convert HTML codes in text and codes; supports multi-player variables for local coop games.
    • Celtx: Fixed issue with multiple multitag breakdowns. Updated to handle conditions on links due to JSON change.
    • Corgi: ConversationZone now supports multiple Dialogue System Triggers on same NPC (e.g., with different Conditions).
    • RPG Builder: Added rpgOpenPanel, rpgClosePanel, and rpgOpenCharacterTab Lua functions.
    • Yarn 2: Added support.



    Also, the Dialogue System is currently 50% off in the Spring Sale.
     
  42. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Quick Tip: Stats Window

    Version 2.2.37 has a new Stats window. Quickly see how many conversations are in your database, word count, etc.

    upload_2023-5-10_14-14-25.png
     
  43. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Quick Tip: Other Export Formats

    You probably know that you can export your dialogue database to alternate formats such as Chat Mapper. But you can also export Voiceover Script for voice actors or Language Text to get a list of characters your game's fonts need to support.



    Reminder: The Dialogue System 50% off in the Spring Sale.

     
  44. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Quick Tip: Custom Fields

    You can add your own custom fields & field types to your dialogue database.

    Bonus: Empower writers by adding a field for Lua code to run when completing a quest. This way they can define what happens when the player completes a quest (e.g., give rewards, open doors, etc.) without having to do any scripting, designing timelines, etc.



    Reminder: The Dialogue System 50% off in the Spring Sale.
     
  45. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Jenny LeClue 92% Off on Switch - Team Clam Interview on Indie Dev Game Break

    Jenny LeClue, made with the Dialogue System for Unity, is in the top 20 listing and a whopping 92% off on Nintendo Switch right now. You can also get it in Apple Arcade, Steam, and GOG. It's wonderfully written and voice acted.




    Check out The Indie Dev Game Break podcast's interview with Martin Hanses of Team Clam. Martin shares some kind words about the Dialogue System for Unity and gives great advice on writing dialogue choices that are more interesting than simple good-vs-evil. Team Clam is working on Clam Man 2: Headliner using the Dialogue System. You can wishlist it on Steam and play the prologue, Open Mic, for free.

     
  46. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Dialogue System Integrations With Sale Items For Extra Savings

    The Dialogue System for Unity is 50% off in the Spring Sale. It integrates with many assets, including these assets that are also in the Spring Sale:
    • Playmaker
    • RPG Builder
    • uMMORPG Remastered
    • Corgi Platformer Engine
    • TopDown Engine
    • Adventure Creator
    • Opsive Ultimate Character Controller, UFPS, Third Person Controller
    • Invector Third Person Controller
    • Opsive Ultimate Inventory System
    • Behavior Designer
    • Emerald AI
    • Feel
    • Text Animator
    • RT-Voice Pro
    • SALSA LipSync Suite
    • Master Audio
    • Slate Cinematic Sequencer
    • Hurricane VR
    • VR Interaction Framework
    • Enhanced Scroller (for free Textline addon)
    • Doozy UI
    • Easy Save
    • Quest Machine
    On just the first page alone, the Dialogue System has integrations with all of these assets:

    upload_2023-5-12_20-51-58.png

    and more on the other pages of the sale, too.
     
  47. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Stendhal Speech Recognition System Price Drop

    Stendhal Speech Recognition System just had a 20% price drop. The Dialogue System has Speech Recognition System integration if you're looking to add speech recognition that doesn't require an Internet connection.
     
  48. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Quick Tip: Node Groups

    You can group dialogue entry nodes to organize different branches of your conversations trees and move them around as a group. Lasso a group of nodes and hold Ctrl when releasing the mouse.

    upload_2023-5-15_10-26-41.png

    The Menu > Show... submenu also has lots more options such as showing portrait images, and you can also assign your own methods to DialogueEditorWindow.customNodeMenuSetup to show additional own custom info on nodes.

    Reminder: The Dialogue System 50% off in the Spring Sale.
     
  49. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
  50. claudius_I

    claudius_I

    Joined:
    May 28, 2017
    Posts:
    251
    Hello Tony.

    I am using the Dialogue system with Salsa and TextSync. My question is, can I make the character stop speaking when the dialog changes?

    The character continues moving their mouth even when it's the other character's dialogue.

    Thanks