Search Unity

[70% OFF - FLASH DEAL] Dialogue System for Unity - easy conversations, quests, and more!

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

  1. gumboots

    gumboots

    Joined:
    May 24, 2011
    Posts:
    298
    Heya @TonyLi - Thanks for the response! So I've tried out the process and it all seems pretty great! However I'm just attempting to use Adventure Creator with the pipeline, and am having an issue that I'm sure is straightforward but I can't work out! I followed your instructions in this video:


    And now have a component on the Action that initiates a conversation (with an easily navigatable menu, absolutely brilliant!) However when I initiate the conversation, which has two speakers in it, I only get the player's text showing up as buttons at the bottom of the screen. So my (obviously brilliant) test dialogue is:

    Player: "Hello."
    NPC: "Heya."
    Player: "See ya."

    But when I initiate it, I get a default Unity button at the bottom of the screen with the Player's line. I press that, then there's a short pause, and then the second player line comes up in the same way, skipping the NPC line.

    Help is of course greatly appreciated!
     
  2. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Hi @gumboots - On the Dialogue Manager's Adventure Creator Bridge component, untick Use Adventure Creator Subtitles Setting. Or, in Adventure Creator, enable subtitles. This is a fairly recent change to the Adventure Creator integration. I haven't had a chance to update the video tutorial yet, but you can read a bit more about it on the manual page.

    If you want to use Adventure Creator's lipsync/audio functionality, add an ACSpeech() sequencer command to the Sequence fields of your dialogue entry nodes. (You need to have recorded audio first of course.) Sequences are kind of like AC's action lists, but they're written in text instead of a special editor. This makes it easy to add simple actions such as playing audio, animation, or camerawork without breaking the flow of your writing.

    If that doesn't do the trick, then my guess is that the NPC line is playing but isn't visible. In that case, here are a few things to check:

    1. Temporarily set the Dialogue Manager's Debug Level to Info. Then play the scene. The Dialogue Manager will log a lot of information to the Console view. Look for lines line this:

    Dialogue System: Player says 'Hello.'
    Dialogue System: NPC says 'Heya.'
    Dialogue System: Player says 'See ya.'​

    If you see those lines, in particular the "NPC says 'Heya.'" line, then we know the conversation is running correctly under the hood, and it's just a UI thing.

    2. Then check your Dialogue Manager. If Display Settings > Dialogue UI is assigned, it will use the assigned dialogue UI. Otherwise it will look for a dialogue UI in the Dialogue Manager's children. (The default Dialogue Manager prefab in the Prefabs folder has a generic dialogue UI made in Unity UI that you can customize.) If it doesn't find a dialogue UI in the children, it will load a very generic-looking legacy Unity GUI dialogue UI. If it's using a dialogue UI that you've designed, it's possible that the NPC Subtitle area could be positioned off screen.
     
  3. gumboots

    gumboots

    Joined:
    May 24, 2011
    Posts:
    298
    @TonyLi - Disabling the AC subtitles did the trick! Thanks heaps!

    One other question, when using Espresso in articy, do I need to do anything in DSfU now? Because without following the final steps in your video, about saving variables, it all seems to be working perfectly? I only show a dialogue option based on whether the user has a cup or not. Once they click it, they get a cup. And that's all working perfectly fine straight from the import from articy to DSfU.

    Got to say, I'm amazed at how seamlessly I can go from writing in Articy, to fully functional non-linear dialogue in game, thanks largely due to DSfU. This is my first foray into a narrative-based game, and I'd started to write my own tools for all of this (loading dialogue from Google Docs, creating my own dialogue system), when I thought I'd check out what's already out there.

    You have saved me so much time, and given me such an awesome pipeline (After a few days of using it, I'm a big fan of articy:draft). So thanks very much!
     
  4. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Thanks! I'm glad the workflow is working out well for you. The articy converter does a best effort of converting expresso to Lua, which is what the Dialogue System uses. Unless you start writing really, really complex expresso code, it'll convert to the Dialogue System just fine.
     
  5. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Third Person Controller 1.3.2 Support

    Opsive just released Third Person Controller 1.3.2. If you're using it with the Dialogue System, you can download an updated integration package from http://opsive.com. Next week I'll look into expanding the package to take advantage of TPC's new camera states feature.
     
  6. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Dialogue System for Unity 1.6.5 Available on Asset Store

    Version 1.6.5 is now available on the Asset Store! You can read the release notes here. This version fixes one last serialization issue with the Dialogue Editor window. If you use the Dialogue Editor, this is the best version to use.
     
  7. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Dialogue System for Unity in this week's Asset Store Staff Picks

    I just noticed that the Dialogue System is in this week's Asset Store Staff Picks collection! :)
     
    Stefan-Laubenberger likes this.
  8. Eitrius

    Eitrius

    Joined:
    Dec 30, 2013
    Posts:
    19
    Hi @TonyLi, a couple of questions today.

    1. I just did a major update of the DS and now when I turn off the dialogue panel for a cutscene during a conversation then turn it back on, the alpha get set to 0 (won't even let me change it manually during play mode). The dialogue panel will then work normally on the next conversation, but for the rest of the conversation that I deactivate>activate it, the panel is not visible. Any ideas? (I emailed this question to you on your support form, but didn't know if this was the better way of getting ahold of you)

    2. Is there a way for me to switch to a different panel in a given scene? Say I want a dialogue box to the right of a character for one conversation, and a thin box at the bottom while looking at a monitor for a different conversation.

    Thank you
     
  9. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Hi @Mentalcase - I got your email and sent this reply:

    It sounds like the animator on the dialogue panel is keeping the alpha at 0. Recent updates included some improvements to the way panel animation is handled, and it must have affected the behavior of your UI. Here are a few options that should take care of it:

    1. Instead of using SetActive(), use AnimatorTrigger(Hide, Dialogue Panel) to hide the panel, and AnimatorTrigger(Show, Dialogue Panel) to show it. This will do a fade in/out if you're using the default animator controller. You could assign a different animator controller if you want it to, say, slide on and off the screen or something else like that. If you don't want that, you could try:

    2. Remove the Animator component from the Dialogue Panel, or clear the Show and Hide fields in the Unity UI Dialogue UI component's Animation Triggers foldout.


    You'll use a different dialogue UI. There are two ways to do it: add an Override Dialogue UI component to the monitor (see the Terminal Active object in the Feature Demo scene for exactly the same thing as you're describing), or edit the conversation, click empty canvas space to edit the conversation's properties, and tick the Override Display Settings checkbox. This will let you override display settings such as dialogue UI for the conversation.
     
    Last edited: Jun 30, 2016
  10. Aki0r

    Aki0r

    Joined:
    Oct 16, 2014
    Posts:
    1
    Hi Tony,

    I got the following problem, I imported and converted a Articy Draft Database and everything seems fine. But when I hit the playmode with a triggered dialogue the conditions dont work in the right way.
    I have a variable called "Story.waitTimer" and its Initial Value is zero. I set a value of 2 or 3 in the Script field and set the condition on every entry node with "waitTimer == 0". But even when I dont set the value to 2 or 3 or when I force the value via script to get set to 0 it wont pass the condition.

    Would be very nice if a quick answer could follow, Im kinda in a hurry, our studies project deadline is soon.

    Thank you :)
     
  11. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Hi @Aki0r - If you're writing the conditions and scripts in the Dialogue System, sure you're using the full variable name "Story.waitTimer" everywhere. Are you adding the conditions and scripts in your dialogue in articy:draft using regular articy draft pins and expresso or Lua? If it's built to run in articy, it should convert properly into Unity.

    Here are some ways to debug it:

    1. Open the Dialogue Editor window at runtime, click on the Watches tab, and from the menu select Add Variable. Then select your variable from the dropdown. Finally, tick Auto-Update. This will give you a live view of your variable's value so you can see when it changes. You can also add a Lua expression such as "Story.waitTimer == 0" to see when it's true. (Btw, the Dialogue System has built-in timer support for response menus. If that's what Story.waitTimer is for, you might want to use it instead.)

    2. Temporarily set the Dialogue Manager's Debug Level to Info. This will log a lot of info to the Console view. Look for lines that check the condition you set. Note that the Dialogue System always evaluates one level ahead, so you'll see "Dialogue System: Add Link" and Dialogue System: Block on False Link" lines on follow-up lines before the actual line that they follow.

    3. Add a Lua Console if you want to enter Lua code to check or modify variables at runtime.
     
  12. quesadillas

    quesadillas

    Joined:
    May 1, 2015
    Posts:
    23
    Hi again, Tony!
    I have a question relating to the layers that are used in the dialogue system. I have a character that I put through the NPC wizard, and I have a capsule collider on that character that will trigger when the mouse/crosshairs are on the collider and the player presses the E button. That works fine right now... if the character is on the Default layer. If I change it to any other layer, then it doesn't work.
    I know it's not the Physics on that layer because the Default layer has the same values in the collision matrix as the other layers. I'm not sure if maybe I missed an option somewhere where I can set what layer the trigger works on?

    Thanks!
     
  13. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Hi @quesadillas - it sounds like you're using a Selector component. Inspect the Selector component and add your NPC's layer to the Layer Mask field. The Dialogue Dystem doesn't require any specific layers for anything; you can use whatever layers you want. When the wizards add components such as Selector, they assign default values such as setting Layer Mask to Default.
     
  14. quesadillas

    quesadillas

    Joined:
    May 1, 2015
    Posts:
    23
    ...Ooooh my gosh, I forgot, lol. Sorry for such a basic question, I completely forgot that the Selector had that field, so I was only looking at the components I had on my NPC (I have the Selector on the player). Thank you!!
     
  15. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Happy to help!
     
  16. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Updated RPG Kit 3.1 Support Package Available

    The Dialogue System Extras page has an updated support package for Unitycoding's RPG Kit 3.1. It adds Icon Conditions to the Overhead Icon UI component. This allows you to specify which icon to show over an NPC's head based on conditions such as the player's level (for quests that have a level minimum) and the state of quests.

     
  17. Oshigawa

    Oshigawa

    Joined:
    Jan 26, 2016
    Posts:
    362
    Hi guys,

    i am really interested in your product. However, i cannot evaluate the usage via Playmaker. I imported the whole package but there's no components menu under window > dialogue system.
     
  18. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Hi @Kruko - Thanks for evaluating the Dialogue System! Here are some things to check:

    1. After importing the PlayMaker package from the Asset Store, it will show a welcome window. Click the "Install PlayMaker" button. If you've closed this window before installing PlayMaker, select menu item PlayMaker > Install PlayMaker. The "PlayMaker" menu is a top-level menu; it's not located under the Window menu.

    2. Import the PlayMaker Support package located in Assets/Dialogue System/Third Party Support. More info about the Dialogue System's PlayMaker Support is here.

    3. At this point you shouldn't need to use the menu bar to get started. The PlayMaker Support package will add Dialogue System-specific PlayMaker actions that you can access using PlayMaker's editor window. At some point you may want to configure your FSM(s) to receive events from the Dialogue System, such as when a conversation starts or ends. To do this, use the Component menu. This is also a top-level menu; it's not located under the Window menu. More details are here.

    If you get stuck on anything, just let me know. I'll be happy to help!
     
    Oshigawa likes this.
  19. Oshigawa

    Oshigawa

    Joined:
    Jan 26, 2016
    Posts:
    362
    Got it, thanks!
     
  20. Riff-Rex

    Riff-Rex

    Joined:
    Mar 14, 2014
    Posts:
    19
    Hi Tony!

    So I'm having difficulty getting Persistent Destructible/Persistent Active Data working for my collectible game objects. First I followed your video tutorial (with the red cubes) which uses Playmaker FSM and Increment On Destroy but no luck. Next I followed the documentation to simply use the Persistent Destructible component and my object still reappears after leaving a level and returning. From the documentation, I got the impression that I just need to assign that component to the object with a unique variable name and that should do the trick, but do I also have to reference this in a LUA string within my Persistent Data script or something?

    Your help would be much appreciated. Cheers!
     
  21. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Hi @Riff-Rex - Here's an example scene that demonstrates PersistentDestructible (the blue and red blocks) and PersistentActiveData (a new block that can be summoned during gameplay):

    PersistentDestructibleBlocks_2016-07-15.unitypackage

    To test it, play the scene and press Escape to open the main menu. Then select Save Game and/or Load Game to test saving and loading.

    The persistent data save system also works when changing levels, not just when saving games. But you need to use the Dialogue System's Load Level action in PlayMaker, which tells the Dialogue System to record persistent data before leaving the old scene and apply persistent data after entering the new scene. Alternatively, if you change scenes another way, use the Record Persistent Data before changing scenes, and then call Apply Persistent Data after changing.

    You may also want to add a Level Manager component to your Dialogue Manager if you haven't already. This allows saved games to load into the correct scene when you load them.

    If that doesn't help, please feel free to send me an example scene or project, and let me know which version of Unity to use. I'll be happy to take a look.
     
  22. Riff-Rex

    Riff-Rex

    Joined:
    Mar 14, 2014
    Posts:
    19
    Thanks for the quick reply! I will take a look at that example and make sure I'm getting right. I tried both using the Dialogue System's Load Level in Playmaker and manually calling Record/Apply but still... Anyway, I'll check this out.

    Much appreciated!
     
  23. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Happy to help! You may also find it handy to temporarily set the Dialogue Manager's Debug Level to Info. This will log a lot of information to the Console. If you're willing to wade through the spam, some of the info might actually be useful. :)
     
  24. Deckard_89

    Deckard_89

    Joined:
    Feb 4, 2016
    Posts:
    316
    On the subject of the save system I wonder if you could offer advice here. I'm using Adventure Creator as my "base" of my game, along with Opsive's TPC. AC's save system is great for it's intended uses; puzzles, actions, transforms etc. However, since I am using TPC, there are things not included in Adventure Creator's save system, such as health and inventory (weapons/ammo). In Dialogue System (which is integrated with both assets) the save system saves TPC weapons and ammo between scenes. There is also the Persistent Destructible/ Active Data mentioned in earlier posts, which can save destructibles - such as enemies like with the ufps integration (I looked at DS manual :D).

    Is there some way the Dialogue System's saved constituents be tied into Adventure Creator's Save System as global variables? Because DS offers more built-in save features, but Adventure Creator is the more "dominant" asset in the project, if you get my meaning.
     
  25. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Hi! As long as you set up both bridge scripts and AC's PersistentEngine prefab with the Dialogue System's save script it should just work. (See the AC & TPC sections in the Third Support section of the manual.) If you notice any issues, just let me know!
     
  26. Deckard_89

    Deckard_89

    Joined:
    Feb 4, 2016
    Posts:
    316
    @TonyLi Thanks for the fast response. I'll see how it goes then - for some reason I was under the impression the integrations were exclusive to each asset.
     
  27. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    The integrations are designed to work together for the most part. In the case of AC and TPC, here's how saving works:
    1. When you save a game, the DialogueSystemSaver script on AC's PersistentEngine prefab tells the Dialogue System to record its save data and store it in an AC global variable. (AC global variables are included in AC's saved game data.)
    2. The Dialogue System tells all persistent data components to record their save data.
    3. The DialogueSystemThirdPersonControllerBridge script is a persistent data component as well as handling all the bridge duties such as exposing TPC stats and inventory to conversations.
    And here's how loading works:
    1. The DialogueSystemSaver on AC's PersistentEngine tells the Dialogue System to restore its state from the AC global variable.
    2. The Dialogue System retrieves the variable and tells all persistent data components to restore their state.
    3. The DialogueSystemThirdPersonControllerBridge updates the character's inventory and position from the save data.
    Currently the DialogueSystemThirdPersonControllerBridge does not save health. This is coming in an update soon, as is support for different TPC camera states in conversations and other sequences.
     
  28. Riff-Rex

    Riff-Rex

    Joined:
    Mar 14, 2014
    Posts:
    19
    Hi Tony,

    Thanks for your help earlier, I got it working! I have one more question about how I might accomplish a tricky saving scenario.

    I have a collectible that should be temporarily destroyed until either a) the player dies, or b) they reach a checkpoint. If they reach a checkpoint it is destroyed and saved as collected forever. If they collect it but die before reaching a checkpoint, the collectible is lost and respawns to its original position/state. I'm not sure how to go about globally referencing the collectibles that have been collected to either destroy them permanently or reset them upon death. These collectibles/checkpoints are across multiple scenes. Any ideas?

    Thanks again for you help. Hopefully this will be the last time I need to bug you since I've just about fully integrated this wonderful asset into my project!
     
  29. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Hi @Riff-Rex - That's a tricky one. Here's how I'd approach it:

    PersistentDestructible uses a Boolean variable, which works if objects only have two states:
    • Destroyed: True
    • Exists: False
    Your collectibles have three states:
    • Untouched
    • Collected (but not saved)
    • Destroyed
    So you won't be able to use PersistentDestructible. But if you don't mind a little coding, you can write a similar script for your collectibles that handles three states instead of two. For a head start, copy Scripts/Template/PersistentDataTemplate.cs. Let's call the script PersistentCollectible in this example.

    Instead of a Boolean variable, I suggest using a Text (string) variable that can have these values:
    • "Untouched"
    • "Collected"
    • "Destroyed"
    Use a unique naming convention such as "collectible_XXX" (e.g., "collectible_Vase", "collectible_Statue", etc.).

    Then you can use the variable according to these rules:
    • Untouched collectibles start with the value "Untouched".
    • When the player collects a collectible, set the value to "Collected".
    • When the player reaches a checkpoint, find all variables that start with "collectible_". If the value is "Collected", change it to "Destroyed".
    • If the player dies, find all variables that start with "collectible_". If the value is "Collected", change it to "Untouched".
    • In PersistentCollectible's OnApplyPersistentData() method, check the variable value. If it's "Collected" or "Destroyed", destroy the collectible.
    Here's some example code to find all variables that start with "collectible_" and change Collected to Destroyed:
    Code (csharp):
    1. var variableTable = Lua.Run("return Variable").AsTable;
    2. foreach (var variableName in variableTable.Keys) {
    3.     if (variableName.StartsWith("collectible_")) {
    4.         var value = DialogueLua.GetVariable(variableName).AsString;
    5.         if (string.Equals(value, "Collected")) {
    6.             DialogueLua.SetVariable(variableName, "Destroyed");
    7.         }
    8.     }
    9. }
     
  30. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Adventure Creator Support Package Updated

    The Dialogue System Extras page has an updated support package for Adventure Creator 1.52. Note that AC 1.52 requires Unity 5.3.4+, so this package is built for Unity 5.3.4+.
     
    Deckard_89 likes this.
  31. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Third Person Controller Support Package Updated

    The Dialogue System Extras page has an updated support package for Opsive's Third Person Controller 1.3.2 with these changes:
    • Added the ability to load and save health & shields in saved games.
    • Fixed inventory loading so it doesn't drop old items on the ground.
    • Added sequencer command TPCCameraState(state, [apply]). The syntax is below:
    TPCCameraState( state, [apply] )
    Sets the TPC camera state.
        • state: The name of the camera state (e.g., "Default", "Zoom") to transition to.
        • apply: If true, applies the state. If false, reverts the state. Default: true.
     
    Deckard_89 likes this.
  32. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Dialogue System for Unity 1.6.6 Released!

    Version 1.6.6 is now available on the Pixel Crushers customer download site and should be on the Asset Store in 5-7 days. If you'd like access to the customer download site, please PM me your Unity Asset Store invoice number.

    Highlights of this version are:
    • Dialogue entries now have a UnityEvent to which you can assign event handlers.
    • Increment On Destroy can now fire on Disable instead of Destroy, making it useful for pooled objects and other systems that disable instead of destroy objects.
    • Added Letterbox style Unity UI Dialogue UI prefab.
    • Updates to support for Adventure Creator, RPG Kit, and Third Person Controller.

    Version 1.6.6

    Core
    • Improved: Dialogue entries can now execute UnityEvents.
    • Improved: If quest is updated while quest log window is open, window auto-updates.
    • Improved: QuestStateListeners now support Conditions.
    • Improved: Zoom2D() sequencer command now recognizes 'original' keyword.
    • Improved: IncrementOnDestroy now has option to fire on Disable instead of Destroy.
    • Fixed: Bug in PersistentPositionData saving position in levels with periods in their names when Restore Current Level Position was ticked.
    • Unity UI:
      • Added: Letterbox movie subtitle style UI.
      • Fixed: LocalizeUIText.UpdateFieldName wasn't correctly updating field name.
      • Fixed: LocalizeUIText if using Dialogue Manager's default localized text table didn't check if table had requested language.
    Third Party Support
    • Adventure Creator: Updated for AC 1.52. 'Use Adventure Creator Subtitles Setting' checkbox now defaults to false.
    • Chat Mapper: Converter now doesn't add AudioWait() commands for Audio Files if the commands are already in the Sequence.
    • RPG Kit: OverheadIconUI now supports IconConditions.
    • Third Person Controller:
      • Bridge now also saves and loads health & shields.
      • Added TPCCameraState() sequencer command.
      • Fixed bug when saving position in levels with periods in their names.
      • Removed deprecated API warnings in Unity 5.3+.
     
    hopeful likes this.
  33. elfrab

    elfrab

    Joined:
    Apr 8, 2014
    Posts:
    4
    hello,
    is there a component or something to view and edit the values of variables, items etc. at runtime?
     
  34. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Hi @elfrab - Yes, there are a few ways to do it. If you're playing in the Unity editor, you can open the Dialogue Editor window and go to the Watches tab where you can view and edit values:



    You can also add a Lua Console component which will let you open a console in your build to view and edit variables using Lua:



    Finally, you can add a Lua Trigger component to change values based on triggering events such as OnTriggerEnter. You can use a point-and-click wizard to specify changes so you don't have to actually type any Lua instructions:



    If you want to get or set values from your own scripts, you can use the DialogueLua and/or QuestLog class. For example:

    Code (csharp):
    1. QuestLog.SetQuestState("Slay the Dragon", QuestState.Success);
    2. DialogueLua.SetVariable("XP", DialogueLua.GetVariable("XP").AsInt + 500);
     
  35. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Updated NJG MiniMap Support Package Available

    The Dialogue System Extras page has an updated support package for NJG MiniMap 1.6.2, which had introduced a change that broke the NJGMapItem() sequencer command.
     
  36. elfrab

    elfrab

    Joined:
    Apr 8, 2014
    Posts:
    4
    thx you! watches is what I'm looking for.
     
  37. Mr-Nixon

    Mr-Nixon

    Joined:
    Mar 30, 2013
    Posts:
    140
    Hi TonyLi,

    Is there any way to search through the Conversations to find specific phrase/text?
     
  38. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Hi @Mr-Nixon - Yes. On the Conversations tab, select Menu > Search Bar. If you're using version 1.6.2 or higher, the search bar will appear in both editor modes (node and outline). If you're using an earlier version, it will only appear in outline mode. There currently is no search-and-replace, though. The easiest way to search-and-replace is to export to a text format such as Chat Mapper XML, use a text editor, then import it back. Also, searching doesn't cross conversations; it works on the current conversation. To search all conversations, export to a text format.
     
  39. Mr-Nixon

    Mr-Nixon

    Joined:
    Mar 30, 2013
    Posts:
    140
    Thanks, Tony!
     
  40. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Dialogue System for Unity 1.6.6.1 Available on Asset Store

    Version 1.6.6.1 is now available on the Asset Store!

    You can read the release notes here: Release Notes (listed under 1.6.6)

    If you're using a version earlier than 1.6.5 and using the Dialogue Editor window, I recommend updating to get the fix to an editor bug.

    As always with any package, please back up your project before updating!
     
    IFL and hopeful like this.
  41. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Dialogue System Menu Template Updated

    The Dialogue System Extras page has an updated Dialogue System Menu Template (based on Unity's Game Jam Template). A user on the Pixel Crushers forum identified an issue with cursor showing/hiding that's now fixed.
     
  42. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    320
    Are there any news about Quest Maker?
     
  43. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Still working on it! Hopefully soon.
     
    hopeful likes this.
  44. GamePowerNetwork

    GamePowerNetwork

    Joined:
    Sep 23, 2012
    Posts:
    257
    Hello, I'm sorry if this has been asked before (very long thread).

    Is there a way to export Dialogue System out to XML? I'd like to create my game in Unity, but I want to send the dialogue text out to a 3rd party for translations and voice over stuff. So it would be great if I could use XML instead of having everyone own Unity license to work on my game.
     
  45. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Hi @PyroStudios - Yes, from the Dialogue Editor window's Database tab, you can export to Chat Mapper XML format or two different CSV formats: Voiceover Script or regular CSV.

    Chat Mapper XML is the "Rolls Royce" format, since you can import it into Chat Mapper Indie/Commercial and then export it in a variety of formats, including a nice MS Excel format in which each conversation is on its own sheet. You can then import it back into Unity by way of Chat Mapper again, using the Chat Mapper Converter.

    Regular CSV can be imported into just about any spreadsheet software, such as MS Excel or Google Sheets. The format is documented on the CSV Converter page. A lot of studios use this because, once you get a handle on the format, it's easy to work with in a variety of applications.

    Voiceover Script CSV is a pared-down version of regular CSV that's best used for recording voiceover lines, not for translation.

    In addition to importing Chat Mapper and CSV formats, the Dialogue System can import articy:draft (see articy:draft Converter) and Neverwinter Nights (Aurora Converter) formats. It doesn't export articy or NWN, though, since those apps don't support external imports.

    This means you can write your dialogue in Chat Mapper, Excel/Google Sheets, articy:draft, Neverwinter Nights 1/2, or right in the Dialogue Editor window in Unity. articy:draft has a beautiful editor interface, but if you're working with multiple languages and considering a third-party editor I recommend Chat Mapper or NWN currently because articy's interface doesn't support language localization yet.
     
    GamePowerNetwork likes this.
  46. imaginationrabbit

    imaginationrabbit

    Joined:
    Sep 23, 2013
    Posts:
    349
    Need a little direction in creating a very simple dialogue system/Ui like the one used for NPC dialogue in Dark Souls.

    In the system I'm trying to create the player never speaks, dialogues are one way with only NPC's speaking- with the player only making Yes/No choices. I don't need any avatar icons or even any names for the NPC's- just simple lines of dialogue on the bottom of the screen that change when an audio clip finishes like so-

    I can create the dialog's/branching options and fire them off just fine- the issue that I'm having is with the Ui and presentation of the text- I can't get it to be this simple- would appreciate any tips- thanks!
     
  47. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Hi @mdotstrange - Here's one way:
    1. Add the Dialogue Manager prefab in the Assets/Dialogue System/Prefabs folder to your scene. This is just a convenient way to get a UI with all the trimmings, most of which you'll delete in the next few steps.

    2. Inspect the Dialogue Manager. Untick Subtitle Settings > Show PC Subtitles During Line. If you want to show NPC subtitles while the NPC plays the audio clip, tick Show NPC Subtitles During Line. If you want the NPC's subtitle to stay onscreen while the Dialogue System presents the player's Yes/No choices (i.e., response menu), tick Show NPC Subtitles With Responses.


    3. Expand Dialogue Manager > Canvas > Generic Unity UI Dialogue UI > Dialogue Panel.

    4. Under NPC Subtitle Panel, NPC Subtitle Reminder Panel, and PC Subtitle Panel, delete or deactivate the elements you don't want: Portrait Image, Portrait Name, Divider. If you don't want to show a separate subtitle reminder panel when the player Yes/No menu appears, move the NPC Subtitle Reminder Panel's NPC Subtitle Reminder Line to the NPC Subtitle Panel section instead. This way it'll just look like the NPC's subtitle stayed the same.

    5. On Generic Unity UI Dialogue UI, unassign those UI elements:


    6. Play a conversation and make sure the UI behaves the way you want. If it does, go ahead and style the UI (fonts, positions, etc.) to your liking, such as moving the NPC's subtitle to the bottom of the screen as in your screenshot, or removing the typewriter effect if you don't want it.
    If you have any questions or get stuck on anything, just let me know. Also feel free to send an example to tony (at) pixelcrushers.com. I'll be happy to take a look.

    If you haven't already set up audio, the way to play an audio clip during an NPC line is to add an AudioWait() sequencer command to the dialogue entry node's Sequence field. For example:
    • Sequence: AudioWait(MyNPC/OddOne)
    The audio clip "MyNPC/OddOne" should be in a Resources folder or asset bundle. (In this example, "MyNPC" is a subfolder name inside a Resources folder.)

    This can get tedious if you have a lot of lines of dialogue. You can simplify the process using entrytags.
     
    Last edited: Aug 7, 2016
  48. imaginationrabbit

    imaginationrabbit

    Joined:
    Sep 23, 2013
    Posts:
    349
    Thanks so much Tony- your help has allowed me to easily do exactly what I wanted- thank you :) Great support!
     
  49. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Happy to help! :)
     
  50. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Updated RPG Kit 3.1.4+ Support Package Available

    If you use Unitycoding's RPG Kit and plan to upgrade to RPG Kit 3.1.4, you can now download an updated support package for it on the Dialogue System Extras page.