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. stalyan77

    stalyan77

    Joined:
    Nov 24, 2013
    Posts:
    14
    Pretty please Toni, adapt the Dialogue System for plyGame 2 (unirpg 2) instead! the beta will be released today and plyGame2 is not compatible with unirpg 1! As plyGame2 is free for all unirpg buyers, it makes the most sense.
     
  2. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi stalyan77, that's the plan. The integration packages will target UniRPG 2 (aka plyGame2) and the upcoming version of RPG Kit 2.0 which is due to be released pretty soon also.
     
  3. stalyan77

    stalyan77

    Joined:
    Nov 24, 2013
    Posts:
    14
    You made my day!! :D :D :D I'll be eagerly awaiting for more news!!

    Note: The plyGame beta was released on the asset store yesterday (it's not plyGame 2 as I thought).
     
  4. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Version 1.1.5 is now available on the Asset Store!

    Patch 1.1.5.1a is available on the Pixel Crushers customer download page. (PM me your invoice number if you need access.)

    Version 1.1.5.2, to be released in about a week, will have a significantly optimized Dialogue Editor window that will replace the current custom inspector for dialogue database assets.

    I hope to introduce plyGame integration in the following release, 1.1.6. RPG Kit 2.0 integration is on hold while the author of that product restructures his upcoming version.

    And more video tutorials are on the way. They were delayed while I set up some new recording hardware to give you better audio quality.
     
  5. stalyan77

    stalyan77

    Joined:
    Nov 24, 2013
    Posts:
    14
    Can't wait for the 1.1.6!! :D:D:D
     
  6. thedreamer

    thedreamer

    Joined:
    May 13, 2013
    Posts:
    226
    I have Convinced that Plygame and RPG KIT 2.0 's Developer Surely want you!!
    and I have question..
    Chat Mapper and articy:draft
    Which one would you recommend? I bought articy:draft se when steam is on sale but If I look at the past posts I am confusing Chat Mapper looks much better
     
  7. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi thedreamer, I'm in contact with both developers. I'll be working on plyGame soon. Zerano is still restructuring RPG Kit 2.0, so that may be a while off.
    It depends on your needs. For writing dialogue, I personally prefer Chat Mapper. In my experience with both, Chat Mapper has much better features for writing dialogue. articy:draft is better for organizing an entire project if that's what you're interested in doing.

    Also, Chat Mapper and the Dialogue System both use Lua, so you'll be able to do more with Chat Mapper. articy:draft uses its own articyScript. The Dialogue System's articy converter attempts to convert some articyScript into Lua to make it compatible with the Dialogue System, but it can only do so much.

    Since you already have articy:draft, you can download the free version of Chat Mapper and compare them. You can't import the free version of Chat Mapper into the Dialogue System, but it should at least give you an idea of what it's like to write and test dialogue. (You can't test dialogue in articy:draft because it doesn't have a simulator like Chat Mapper does.) If you decide to use Chat Mapper, please PM me your invoice number so I can send you the 10% discount code we've arranged with them.

    You can always use articy:draft to organize your project and Chat Mapper to write the dialogue. That would be my recommendation.
     
  8. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Version 1.1.6 has been submitted to the Asset Store and is available on the customer download page. If you need access, please PM me your invoice number. The planned version number for this release was 1.1.5.2, but it contains enough significant changes to warrant 1.1.6. It doesn't include plyGame 2 integration yet; the next release will be dedicated to plyGame 2 support.

    Things to Note:
    • The new and improved Dialogue Editor window replaces the custom inspector for dialogue databases. The old custom inspector is still available, but it will be removed in the next release.
    • Importing 1.1.6 into a project that had been upgraded from Unity 4.2 to 4.3 containing an older version of the Dialogue System caused Unity to crash when importing the DLLs. However, I was unable to reproduce the issue. If you experience the same issue, just delete the existing Dialogue System folder before importing 1.1.6 -- and please let me know! If it wasn't just a fluke in my test project, I'll submit a bug report to Unity.

    New in 1.1.6:
    • New: New Dialogue Editor window replaces the custom inspector, is significantly faster, and includes new features such as text search in conversations.
    • New: Added easy-access DialogueLua methods to get/set Lua data.
    • Improved: Added Reconvert button to dialogue database inspector to make it quicker to reimport from third-party authoring tools.
    • Improved: (Chat Mapper) Converter now splits pipes (|) into separate dialogue entries.
    • Improved: Added Include Name and Wait Until Sequence Ends checkboxes to bark UIs.
    • Improved: Added Skip Continue On Response Menu checkbox to Dialogue Manager.
    • Fixed: When DialogueTime is set to Gameplay and timeScale to 0, sequencer commands will now wait until time is unpaused.
    • Fixed: SetActive() sequencer command now finds in-scene objects first, including inactive objects but only if the inactive objects have a root parent that's active.
    • Fixed: LookAt(listener,X) sequencer command wasn't finding the right subject; also changed LookAt() without arguments to make the speaker and listener look at each other.
    • Fixed: (Chat Mapper) Implemented a workaround for a Chat Mapper XML bug that identified Booleans as Numbers.
    • Fixed: (Aurora NWN Converter) Now handles CDATA correctly; only adds jrl.xml or dlg.xml files as appropriate instead of all XML files.
    • (Killer Waves/Core GameKit) Killer Waves integration is now Core GameKit integration due to the product's name change.
    • (DFGUI) DaikonForgeDialogueUIs can now use dfRichTextLabels for subtitles.
     
  9. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    5,572
    Awesome Tony! I just want to stress that Core GameKit now includes a full pooling system (think Pool Manager) and Playmaker-like use of World Variables for *any* integer or float field in our Inspectors. That's complete flexibility! And it costs the same as Pool Manager currently, however you get all the rest *for free* if you care to look at it that way.
     
  10. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Definitely a good way to look at it. If you need pooling -- to spawn goblins in your RPG game, bullets in your shooter game, blocks in your Minecraft-style game, etc. -- get Core GameKit. It works great, integrates nicely with the Dialogue System, and you never know when you'll need wave spawning and variable systems, too!

    And if you need an interactive, scrubbing cutscene sequencer that integrates nicely with the Dialogue System, get uSequencer. The Dialogue System's built-in cutscene sequence commands and uSequencer play well together; you can mix and match however you want.
     
  11. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
  12. TheNorthridge

    TheNorthridge

    Joined:
    Jan 4, 2012
    Posts:
    193
    Loving the new tutorials! :D

    Hows the future looking for Dialogue System?
     
  13. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    It's looking good! We have a healthy roadmap of new features coming up (plyGame is first), and lots of interesting projects are using it in a whole range from indie to AAA studios to universities and serious games. I'm really looking forward to seeing what other uses developers find for it!
     
  14. thedreamer

    thedreamer

    Joined:
    May 13, 2013
    Posts:
    226
    Last edited: Feb 3, 2014
  15. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Thanks for letting everyone know about the 85%-off sale. I'll look into it to see if any kind of integration would be helpful. It's by Zerano, the author of RPG Kit 2.0, which will definitely get an integration support package as soon as Zerano finishes restructuring it.
     
  16. pixlweaver

    pixlweaver

    Joined:
    Dec 21, 2012
    Posts:
    92
    Hello again! I have another quick question. How would I go about showing dialogue choices while a sequence is playing? For example, I have a conversation sequence that has the camera slowly move towards an object. Rather than waiting for that camera move to finish, I would like the dialogue options to pop up during the movement. Is that possible?
     
  17. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Anything's possible. :) You ask a good question. I'll have to give it some thought. The issue, as you described, is that dialogue entries wait until their sequences are done before progressing to the next stage, which could be the player response menu or another dialogue entry.

    Off the top of my head, for a solution that you could implement right now, you could use the SendMessage() sequencer command to send "OnUse" to a GameObject with a SequencerTrigger component. This will trigger a sequence that's external to the conversation. I haven't tested this, though. There might be gotchas. And it isn't the cleanest solution.

    In a future release, some ideas that come to mind are:
    • A checkbox to specify whether to wait until the sequence is done or let it run in the background while progressing to the next stage
    • Another optional field for a second sequence that would kick off and run in the background
    • Something in the sequence text itself (either a special tag or a new sequencer command) that tells part or all of the sequence to run the background without waiting
    I'm also open to suggestions for how you'd all like this to work, so please let me know!
     
  18. socratous100

    socratous100

    Joined:
    Dec 5, 2013
    Posts:
    1
    Hey Tony, this Dialogue System is amazing, thanks for all the hard work you put into it.

    I've only been using it for a short while now so forgive me if this is a stupid question, but if I import emphasis tags from Chat Mapper and check the rich text box, the default UI writes out the code for the tag ( <b> <color # etc.) before converting it to rich text, and once converted it doesn't display the correct colour. I've made sure my emphasis settings are correct in the dialogue database. This isn't a build of the game, just testing using Unity's built in player.

    Any ideas what could be causing this?
     
  19. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi socratous100, I'm glad you're liking the Dialogue System!

    The first issue, writing out the code for the tag, is a current limitation of the typewriter effect. It writes the text character by character. I haven't had time yet to update it to handle rich text tags. If you happen to implement this before I do, and if you don't mind sharing the code, please send it along and I'll put it in the next release. You can also remove or disable the current typewriter effect to bypass the issue.

    I'll look into the inaccurate colors and get back to you later today and publish a hotfix on the download page if necessary. I opened a tracking ticket for this: http://pixelcrushers.com/mantis/view.php?id=12
     
  20. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    socratous100, thank you for bringing this to my attention. It was indeed a bug: I accidentally swapped blue and green when converting Color structs to rich text tags. Hotfix patch 1.1.6.1a fixes this. It's available now on the customer download page. Since it's a patch, please import it on top of your existing Dialogue System folder.

    Patch 1.1.6.1a:
    • Fixed: Conversion of emphasis tags to rich text had blue and green values switched.
    • Fixed: If speaker and listener are the same object, it will now only receive one OnBarkEnd/OnConversationEnd/OnSequenceEnd message.
    • Fixed: NullReferenceException if a Bark/Conversation/SequenceTrigger was set up in code at runtime instead of through inspector.
    • (DFGUI) Added DFGUI example that demonstrates keyboard bindings to response buttons.
     
  21. pixlweaver

    pixlweaver

    Joined:
    Dec 21, 2012
    Posts:
    92
    Here's a good example of several sequences happening while dialogue is flowing: http://youtu.be/NA5Zsy0JHtQ?t=3m47s. Watch around 3:47 to 5:00 (warning: there is some violence and language before and after the timeframe I mention, just FYI).

    Ideally I think a new sequencer command would be the best. Let's say I have a single sequence command MoveTo(door, speaker, 10) and I want to show the next dialogue at 5 seconds. This scenario wouldn't work if there was a separate text field for sequence commands to run in the background, nor would it work with the checkbox option. I would need a sequence command that I can add a delay to.

    This new command may need an optional parameter to tell the dialogue to wait for the sequence to finish playing before advancing again. Back to my MoveTo(door, speaker, 10) example. Let's say after 5 seconds the next dialogue is triggered but is finished before the MoveTo is done animating. For scenarios like this one, the optional parameter would come in handy.
     
  22. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Got it. Thanks also for the Walking Dead example. This will go on the roadmap to be implemented as soon as UniRPG integration is done. I'll put together an example scene that demonstrates it in action.
     
  23. Antigono

    Antigono

    Joined:
    Oct 20, 2013
    Posts:
    63
    Hello TonyLi, how are you?
    I am very interested in this package
    I wanted to know if there is the possibility of having more than 2 people talking with each other
    Maybe already answered in the forum and did not see it, if so apologies !
    Sorry for my English and thanks!

    Antigono.-
     
  24. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi Antigono, yes, it's possible to have conversations and barks with more than 2 people. Each dialogue entry is assigned to an actor. Conversations can switch between actors. The Dialogue System also includes an example scene with three NPCs barking at each other. Barks are one-off lines that occur during gameplay, versus conversations which string together multiple lines and responses.
     
  25. yung

    yung

    Joined:
    Nov 22, 2010
    Posts:
    274
    Hey TonyLi,

    Is the dialogue system able to do visual novel style conversation? A reviewer also mentioned that Dialogue System is able to create a Shop System as well, is this built-in or easy to do?

    Cheers!
     
  26. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi yung, yes, it's very easy to create visual novels with the Dialogue System. In fact, that's a perfect use case for it.

    The Dialogue System does not include a built-in shop system. I want to keep it clearly focused on being the best dialogue system available for Unity. In order to do this, however, it does include several features that you might find useful when building your own shop system, including a powerful Lua-based data framework and a sophisticated UI system that includes a WYSIWYG Unity GUI framework (although it's GUI-independent and includes implementations in Unity GUI, NGUI, DF-GUI, and TK2D out of the box). The included UFPS integration package does include a weapon loadout example that you could use as a starting point or learning point for a shop system.
     
  27. yung

    yung

    Joined:
    Nov 22, 2010
    Posts:
    274
    That sounds like a deal for me! Would look into purchasing it this few days! Can't wait to get my hands on it!
     
  28. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    When you have your invoice number, PM me or email it to tony (at) pixelcrushers.com to get access to the customer download page and the 10% discount code that we've arranged with the makers of Chat Mapper. Chat Mapper certainly isn't required, but it's a very nice product that makes writing dialogue more fun.
     
  29. ACarrozzini

    ACarrozzini

    Joined:
    Mar 24, 2013
    Posts:
    16
    Hello,

    Firtsly, thank you for this great product !
    I have a question, how do I know when a conversation is finished ?

    My NPC is walking. when I start the conversation the NPC stops. And I would like him to start walking again when my conversation is finished.

    Any idea ? I use the "OnUse" message to start the conversation, is there something like "OnUseExit" ?

    Thank you !
     
  30. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi tbgd, you have several options:
    • Use OnConversationEnd(), or
    • If you're using SetEnabledOnDialogueEvent component to disable and enable the component that handles walking, you can resume walking in OnEnable(), or
    • If you're not using SetEnabledOnDialogueEvent, you could manually resume the walking in the last dialogue entry's sequence.
     
  31. ACarrozzini

    ACarrozzini

    Joined:
    Mar 24, 2013
    Posts:
    16
    Thank you a lot !

    Cheers.
     
  32. EmeralLotus

    EmeralLotus

    Joined:
    Aug 10, 2012
    Posts:
    1,462
    @TonyLi,

    I've been learning KopiLua the past few days and it's going great.

    Since you've got quite a bit of experience with integrating KopiLua into Dialogue System, I was wondering
    if you could shed some light on the following:

    From Lua:
    1. Is it possible to AddComponent to a gameobject ?
    2. Create gameobject, create events, add event listeners and handle events.

    Any help is greatly appreciate it.

    Cheers.
     
  33. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi rocki,

    You can add functions to Lua using the Dialogue System's Lua class, which is a high-level wrapper around a KopiLuaInterface VM instance. Use the Lua.RegisterFunction() method.

    For example, the DialogueLua class registers several Chat Mapper functions used to manage statuses and relationships between actors. They use Lua.RegisterFunction() like this:
    Code (csharp):
    1.  
    2. Lua.RegisterFunction("GetStatus", null, typeof(DialogueLua).GetMethod("GetStatus"));
    3.  
    4. ...
    5.  
    6. public static string GetStatus(LuaTable asset1, LuaTable asset2) {
    7.     // (C# implementation of GetStatus is here)
    8. }
    9.  
    You could do something similar, such as this: (warning - untested since I'm not near Unity right now)
    Code (csharp):
    1.  
    2. Lua.RegisterFunction("AddComponent", null, typeof(MyClass).GetMethod("AddComponent"));
    3.  
    4. ...
    5.  
    6. public static void AddComponent(string gameObjectName, string className) {
    7.     GameObject.Find(gameObjectName).AddComponent(className);
    8. }
    9.  
    Then in Lua you'd write something like:
    Code (csharp):
    1.  
    2. AddComponent("My Object", "NavMeshAgent");
    3.  
    The Dialogue System has observers (listeners) for changes to Lua data. Here's the documentation for Setting Lua Observers.

    To go the opposite direction, you could write a Unity component -- for example in C# or UnityScript, or even PlayMaker or plyBlox -- that listens for an event and then use Lua.Run() to do something in Lua.
     
  34. EmeralLotus

    EmeralLotus

    Joined:
    Aug 10, 2012
    Posts:
    1,462
    Lua is great but it really needs better integration with Unity.

    I'm very happy to see that you've done a higher level wrapper to make working with Lua and Unity more smooth.
    Super Nice.

    I'm wondering if it's possible to do all of the following in Lua without having to writing any preparatory C# code.

    1. Define an onPowerUp event.
    2. Create a button that fires the onPowerUp event.
    2. Create a cube using Lua.
    3. Create a listener function
    4. Attach listener to cube.

    So when the user clicks the button, the onPowerUp event fires, the cube then fires the listener function.

    Edit: I found this posting
    hegallis.blogspot.in/2009/02/lua-in-net.html

    Is there a way to define event delegates so that they can be totally generic so that lua can create its own custom events.
     
    Last edited: Feb 11, 2014
  35. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi rocki, a visual scripting tool like PlayMaker or plyGame might serve your purposes better here. The Dialogue System supports both. Is there a specific reason you want to do this in Lua?
     
  36. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Version 1.1.7 of the Dialogue System for Unity is now available on the customer download page! If you need access, please PM me your invoice number. It should be available on the Asset Store in about 7 days.

    Version 1.1.7 Release Notes:
    • New: Added plyGame Support (UniRPG 2).
    • New: Added Prefabs/iOS/link.xml file to support iOS Pro code stripping.
    • New: Added right-click context menu in Project view to open Dialogue Editor or Chat Mapper, and to create dialogue databases.
    • New: Added Response Menu Sequence (plus localized versions) for sequences that can play during the response menu.
    • New: Added WaitForMessage() sequencer command.
    • New: Added command(...)@Message(X) syntax to allow sequence commands to wait for a message.
    • New: Added Sequencer.Message() static method to send messages to sequence commands that are waiting for messages.
    • Improved: Dialogue Editor now helps prevent an author from being able to corrupt or delete a conversation's start entry.
    • Improved: Added DialogueManager.ConversationHasValidEntry() function to check if a conversation is currently valid; added Skip If No Valid Entries checkbox on Conversation Trigger and Start Conversation On Dialogue Event trigger.
    • Improved: Proximity Selector now also works with 2D trigger colliders.
    • Improved: Added access to the underlying LuaInterface virtual machine via the Lua.VM property.
    • Changed: OnConversationLine is now broadcast to the target's children, not sent just to the target.
    • Changed: Replaced default parameters with overloaded methods to assist UnityScript users in these classes: Lua, QuestLog, PersistentDataManager.
    • Fixed: Conversion of emphasis tags to rich text had blue and green values switched.
    • Fixed: If speaker and listener are the same object, it will now only receive one OnBarkEnd/OnConversationEnd/OnSequenceEnd message.
    • Fixed: NullReferenceException if a Bark/Conversation/SequenceTrigger was set up in code at runtime instead of through inspector.
    • Fixed: Bug in QuestLog.AddQuest that prevented the quest from displaying in the quest window.
    • Fixed: Bug in UnityQuestLogWindow that prevented quest entries from displaying properly.
    • (DFGUI) Added DFGUI example that demonstrates keyboard bindings to response buttons.
    • (PlayMaker) Improved: Actions with return values now have events to make branching easier.
    • (PlayMaker) Improved: Added Get/Set actions for Lua tables, variables, and quest entries; added Does Conversation Have Valid Entries action.
    • (PlayMaker) Fixed: Get/SetQuestState now ensures quest state strings are lowercase to conform with Lua values.
     
    Last edited: Feb 12, 2014
  37. Deleted User

    Deleted User

    Guest

    Hey,

    I've been trying to get a multiple response to work, but I have not been able to so far.
    It's possible that I've missed something very rudimentary, but I've tried to copy everything from the "Feature Demo Using Daikon Forge GUI" without any success.. :(

    I have this in articy:
    View attachment 86632

    I then import it, which works (I get all the dialogues etc in-game when speaking to the Old Man):
    View attachment 86633

    I have also set the dialogue manager to this:
    View attachment 86634

    And my MainGUI to this:
    View attachment 86635

    On my Old Man I have this;
    View attachment 86636


    The only thing I have which is a bit "off", is that the Actor ("Player" Transform) in the Old Man Conversation Trigger, is actually a prefab and not an object on the scene. What I do is instantiate this player prefab when the game is started. I'm not sure if this could be the cause of this though. I can't even press Continue to continue the conversations actually, I need to press ESC to continue the conversations.
     
  38. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi speedis, it sounds like this might be two separate issues.

    Are you using one of the provided continue-button-enabled DFGUI UI prefabs or your own? If you're using your own, please make sure that the continue button(s) are configured to send "OnContinue" to the dialogue UI, as shown below:
    $DFGUI Continue Button.jpg

    If they're already configured that way, please set Dialogue Manager > Debug Level to Info, reproduce the problem, and PM me the editor log or email it to tony (at) pixelcrushers (dot) com.

    Other than the continue button issue, is something happening with the Player? If so, does the problem go away if you add an instance of the Player to the scene at design time and assign that instead? Also, you can probably just leave the Actor property blank on your Conversation Trigger. If the player triggers the conversation and no actor is assigned, it will automatically assign the player to the Actor property.
     
  39. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Some updates on customer requests:

    Version 1.1.7 introduces several features to allow cutscene sequences to run in the background of response menus:
    • Response Menu Sequence field (including localized versions) for sequences that run during the response menu.
    • WaitForMessage() sequencer command, command(...)@Message(X) syntax, and Sequencer.Message() static method (and corresponding PlayMaker and plyGame actions) to allow sequences to synchronize with gameplay action.
    I haven't had a chance yet to put together an example scene, but something like the Walking Dead example that plxweaver wrote about here is on the "to do" list.


    Also, customers have asked for the source to the Dialogue System 2D Platformer Demo. It's now available on the customer download page. You need to import Unity's 2D Platformer project and the Dialogue System as well as the demo package on the customer download site.
     
  40. pixlweaver

    pixlweaver

    Joined:
    Dec 21, 2012
    Posts:
    92
    Awesome, thanks TonyLi! I haven't checked this update out yet but plan to soon.

    I have another question for ya. Is there a way to skip over the player's options menu? For a line of text that I want the player to automatically say?
     
  41. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi pxlweaver, yes, just untick Force Response Menu on the Dialogue Manager object. Then if the player menu only has one choice, it will automatically play it instead of showing the menu. This is the default behavior in Chat Mapper, but it sometimes threw people in the Dialogue System so I changed the default. If you later want to force the response menu for a particular choice, just put the "[f]" tag in its text. You can read more about tags here.
     
  42. Deleted User

    Deleted User

    Guest

    Thanks, that solved the continue button issue!
    The issue with the player not getting any response choices were indeed an overlook by me. The player object were set as NPC in the "Actors" part, so once I changed that to Player it gave the selections etc (figured it out by seeing that all text that came out of the conversation was being put in the NPC Label).

    Once more, thanks a lot for the help!
     
  43. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Happy to help! I'm glad it's working now!
     
  44. Parallaxe

    Parallaxe

    Joined:
    Apr 9, 2013
    Posts:
    118
    Hi there

    I'm using both articy:draft 2 and Chat Mapper and know their pros and cons (at least the pros and cons from my perspective (-; ). However, I wondered which of these two is being supported "better" by Dialogue System. Are there any differences in the level of integration into Dialogue System? Is one integration into Dialogue System more convenient than the other?
     
    Last edited: Feb 15, 2014
  45. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi Parallaxe, that's a great question!

    The short answer is that Chat Mapper integration is better, although both products are fully supported and used very successfully by many customers.

    Both are excellent products. articy:draft is ideal for pulling all the different parts of a game development effort together, and I think it's better than traditional design documents, especially if you're doing agile development.

    That said, Chat Mapper provides dialogue validation, a conversation simulator, and many other features that give the author more power than articy:draft when writing and testing dialogue. The Dialogue System started as a Chat Mapper-to-Unity tool, so internally it's structured just like Chat Mapper -- a Lua interpreter, the same data structures and terminology, etc. It adds a lot of features that Chat Mapper doesn't have, of course, because in Unity you need cutscene sequences, quests, QTEs, GUIs, and so on.

    There's no reason why you can't use both in your project! I just recommend Chat Mapper over articy:draft when working with the Dialogue System. Both are supported, both work well with the Dialogue System, but Chat Mapper just has an edge when you look solely at dialogue authoring.
     
  46. Parallaxe

    Parallaxe

    Joined:
    Apr 9, 2013
    Posts:
    118
    Hi TonyLi

    Thanks a lot for your kind answer! I just bought Dialogue System and will try out both Chat Mapper and articy:Draft with it.
     
  47. Deleted User

    Deleted User

    Guest

    Hi TonyLi,

    I wanted to make a request that if "Skip Continue On Response Menu", then the Continue button should not be visible. The way it works now (and I've tried it on the "Feature Demo Using Daikon Forge GUI and Continue Button" as well) is that if this checkbox is checked, the button is shown and it then progresses automatically to the response menu. I can personally see no real value of showing the Continue button if "Skip Continue on Response Menu" is checked.


    Thanks!
     
  48. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Thanks! If you have any questions or feature requests, feel free to post them here or email tony (at) pixelcrushers (dot) com.

    Hi speedis, I see your point. My rationale for showing it is so the player can skip ahead without having to wait for the line to finish, which is what some customers wanted. I'll add another checkbox to let you turn this off.
     
  49. EDarkness

    EDarkness

    Joined:
    Feb 1, 2013
    Posts:
    506
    Alright. I'm back to working on dialogue after leaving it behind for a while to work on other...more important...things. So now that I'm getting back into it, I'm wondering what I need to do in order to use this system without using any of your UI stuff? Most of what I've seen with this package is confusing and just seems to me like it was written for games like Mass Effect more than anything else. I have no use for a Mass Effect system. I just want the dialog to pop up in the boxes I want in my own UI and don't want to mess around with something else. This includes quests.

    So how can this be done?
     
  50. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi EDarkness, it's easy! The UI stuff is separate from the internal stuff for this very reason. You just need a class that implements the IDialogueUI interface, as documented on the Creating your Own Dialogue UI page. You can add the methods to your own existing class, or you can use the template located in Scripts/Templates. Then add an object or prefab with that class to the Dialogue Manager.

    I'll paste the template here for your reference:
    Code (csharp):
    1.  
    2. using UnityEngine;
    3. using System;
    4. using System.Collections;
    5. using PixelCrushers.DialogueSystem;
    6.  
    7. public class TemplateDialogueUI : MonoBehaviour, IDialogueUI {
    8.  
    9.     public event EventHandler<SelectedResponseEventArgs> SelectedResponseHandler;
    10.    
    11.     public void Open() {
    12.         // Add your code here to do any setup at the beginning of a conversation -- for example,
    13.         // activating or initializing GUI controls.
    14.     }
    15.    
    16.     public void Close() {
    17.         // Add your code here to do any cleanup at the end of a conversation -- for example,
    18.         // deactivating GUI controls.
    19.     }
    20.    
    21.     public void ShowSubtitle(Subtitle subtitle) {
    22.         // Add your code here to show a subtitle. Subtitles contain information such as the player
    23.         // type (PC or NPC), portrait texture, and the formatted text of the line.
    24.     }
    25.    
    26.     public void HideSubtitle(Subtitle subtitle) {
    27.         // Add your code here to hide a subtitle.
    28.     }
    29.    
    30.     public void ShowResponses(Subtitle subtitle, Response[] responses, float timeout) {
    31.         // Add your code here to show the player response menu. Populate the menu with the contents
    32.         // of the responses array. When the player selects a response, call:
    33.         //    SelectedResponseHandler(this, new SelectedResponseEventArgs(response));
    34.         // where the argument "response" is the response that the player selected.
    35.         // If (timeout > 0), auto-select a response when timeout seconds have passed.
    36.     }
    37.    
    38.     public void HideResponses() {
    39.         // Add your code here to hide the player response menu.
    40.     }
    41.    
    42.     public void ShowQTEIndicator(int index) {
    43.         /// Add your code here to show the Quick Time Event (QTE) indicator specified by the given
    44.         /// index. If your project doesn't use QTEs, you can leave this method empty.
    45.     }
    46.        
    47.     public void HideQTEIndicator(int index) {
    48.         /// Add your code here to hide the Quick Time Event (QTE) indicator specified by the given
    49.         /// index. If your project doesn't use QTEs, you can leave this method empty.
    50.     }
    51.        
    52.     public void ShowAlert(string message, float duration) {
    53.         // Add your code here to show an alert message. Note that the dialogue system will not
    54.         // call Open() or Close() for alerts, since alerts are meant to be shown outside of
    55.         // conversations.
    56.     }
    57.    
    58.     public void HideAlert() {
    59.         // Add your code here to hide the alert message if it's showing.
    60.     }
    61.    
    62. }
    If you don't want to implement any functionality (such as Quick Time Events), just leave the method blank. It's that easy! If I can provide any help with it, please post here for feel free to email me any time at tony (at) pixelcrushers. (dot) com.
     
    Last edited: Feb 16, 2014