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

    TheNorthridge

    Joined:
    Jan 4, 2012
    Posts:
    193
    Nice Updates lately Tony :)

    Any plans for more video tutorials?

    -Sean
     
  2. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Hi Sean. I'm taking my new eyes out for a quick spin (just got LASIK yesterday, don't tell the doctor :)). Yes, I have four in the works for when I have the all clear to look at a screen for longer periods of time.
    • Cutscene sequences
    • Camera angles
    • NPC PC Setup Wizards
    • Killer Wave integration
     
  3. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    5,572
    Awesome! Will be watching these for sure, to get the basics down. I assume your Lasik went well then :)
     
  4. TheNorthridge

    TheNorthridge

    Joined:
    Jan 4, 2012
    Posts:
    193
    Cool! Hope your eyes get better and dont become sentient and crawl out of your sockets! :D *thumps up*

    Get well soon!

    If you are doing Cutscenes, Could try showing a simple and advanced one? Might really show the work of the system!
     
  5. dreamlarp

    dreamlarp

    Joined:
    Apr 22, 2011
    Posts:
    854
    Get well soon TonyLi. We will need you soon.
     
  6. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Thanks for the well-wishes, everyone! I wasn't expecting to smell burning during the procedure, but I guess the laser has to cut through something, eh? :) All's well, and I'm looking at the screen at 20/20.

    Good idea. Will do!
     
  7. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    I forgot to add that, if you're using the non-HUD Text bark component, it looks for a CharacterController or CapsuleCollider on the NPC and places the bark above it. If your NPC doesn't have either, you should create a template in the bark root (see the example) and offset the template to your desired height. Then assign the template to the NPC's bark UI.
     
  8. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Patch 1.1.4.1a is available on the Pixel Crushers customer download page. (PM me your invoice number if you need access.)

    Please import this patch on top of your existing 1.1.4.1 Dialogue System folder.

    In the Patch:
    • New: Added Stop Conversation If Too Far component.
    • New: Added sequencer command ShowAlert()
    • New: Dialogue Manager now has CurrentActor and CurrentConversant properties (valid during conversations).
    • Improved: Animation() sequencer command can now play any number of animations in sequence.
    • Improved: Selector ProximitySelector now have a checkbox to choose between SendMessage or BroadcastMessage when sending OnUse to the target.
    • Improved: Added a checkbox to allow Conversation Trigger to stop the conversation if the other participant leaves trigger area.
    • Changed: OnConversationEnd is now sent to participants after the dialogue UI is closed. This allows StartConversationOnDialogueEvent (OnConversationEnd) to properly reopen the UI.
    • Fixed: Bug in the MoveTo() sequencer command that left the subject facing wrong direction.
     
  9. NicholasYoung

    NicholasYoung

    Joined:
    Jan 6, 2014
    Posts:
    2
    Hi Tony, I'm very impressed by what I've seen so far of Dialogue System - both the product and your ongoing support appear to be very professional!

    I'm trying to decide if it's appropriate for my game, so I've been going through the documentation and videos, but I have some questions still...

    I'm making a very nonlinear game, with characters that persist across multiple overlapping missions - some characters are present in every mission in the game, any of which might overlap. It would be highly undesirable to have all of the dialogue for the entire game, for a given character, in the same database - I would much rather split the database per mission rather than per character.

    1. I see you can load multiple databases at once, so I could have one database per mission and load the databases for all currently active missions. But I assume - correct me if I'm wrong - that I wouldn't be able to have multiple conversations with the same name/ID. That means that when the player goes to talk to a character, I'd only be able to start the conversation for one of the currently active missions. I'd like to display all of the top-level branches for all of the currently active missions when the player goes to talk to a character - perhaps to merge multiple conversations at the root somehow. Could your system accomplish that? I'm happy to modify code if you think your system could do this somehow in principle...

    2. I assume that when a database is loaded, it creates all of the LUA variables specified by that database. I also assume it cleans them up when the database is unloaded? What would happen if multiple databases specified the same variables/actors/items/etc., and these databases are loaded and unloaded at arbitrary times? Would it all play nicely?

    3. What do you think about programmatically assigning conversants to conversations? Essentially using conversations as templates... Obvious use might be for generic NPCs like shopkeepers, though I'd like to use it for dynamically populating my missions. Could your system be modified to allow this? Again, happy to do it myself if the architecture would reasonably support it...
    (This would also be great for background NPC barks - one conversation could be used by a whole crowd of NPCs)

    Thanks for your thoughts on this!
     
  10. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Hi Nicholas! That was the idea behind the design. Actors, items/quests, locations, and variables don't take much memory, but there's no sense keeping entire conversations around if you're not going to use them in the current mission. As long as they all have unique IDs you can add and remove them without conflicts. If they conflict, the Dialogue System keeps the first version that's added.

    While you can't merge conversations without modifying source code, several options accomplish the same thing. For one, you can create a master conversation for your actor that cross-links to other conversations. In Chat Mapper, it's very easy: just select the other conversation's node. For the built-in editor, I haven't decided how best to present it. It works fine under the hood; it's just a UI decision that I haven't made yet. I'll try to add this to the upcoming 1.1.5 release. For now, you can go into "Raw" mode to link to another conversation. Another option is to use conditions. You can pick which conversation to start based on Lua conditions, quest states, game tags, etc.

    Yes. When you unload a database, the Lua variables will be removed unless they're present in another loaded database. I've included some options in the upcoming 1.1.5 release that gives you more control over that. I'll also include a demo that uses multiple databases.

    No modifications necessary; it's already built this way. Although you assign an actor and conversant to every conversation in the database at design time, at runtime you can use any character. The values of Variable["Actor"] and Variable["Conversant"] contain the names of the actual characters at runtime in case you need to reference them -- for example to mention their names in dialogue text using a [lua()] tag, or to allow a line only if it's a specific character.
     
  11. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Are any customers using Unity 4.2? Otherwise the next release will require Unity 4.3.0+. I'd like to provide DLLs that include 4.3 features. (Source code will also still be provided as always.)
     
  12. Silly_Rollo

    Silly_Rollo

    Joined:
    Dec 21, 2012
    Posts:
    501
    I can't imagine much reason to stick with 4.2. I can understand sticking to 3.x if you only have a 3.x pro license, but 4.3 adds quite a bit (especially to mecanim which finally feels usable without awkward hacks).
     
  13. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Thank you for the feedback! I plan to publish one more patch on the website, and then the next full release will require 4.3+.
     
  14. TheValar

    TheValar

    Joined:
    Nov 12, 2012
    Posts:
    760
    I noticed that this asset supports 2dtoolkit ui but all of the examples are in 3d. I'm sure it works just fine but it would be cool to see a small demo of how the system might be used in a platformer.

    At any rate it looks like a pretty awesome product and I'm blown away by the support you're giving on this forum!!!
     
  15. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Thanks! And good idea for a 2D demo! Customers have used the Dialogue System with 2D Toolkit and Orthello, and possibly other 2D systems. Since you suggested the idea, unless you're specifically interested in 2D Toolkit, I'll base it on Unity 4.3's 2D Platformer demo so customers can download it even if they don't own 2D Toolkit.
     
  16. Silly_Rollo

    Silly_Rollo

    Joined:
    Dec 21, 2012
    Posts:
    501
    Where would be the smartest place to insert some code to run just before and after any time the response menu becomes active in df gui?

    My dialogue UI is layered on top of each other and I'm introducing some custom controls I need to disable when the responses are active so the response buttons can be clickable. As far as I can tell extending your scripts gets a little dicey because I end up having to extend absolutely everything to fit in my component (I can't just replace one component I have to extend everything else up the chain to reference the new script).

    So currently I am just modifying DaikonForgeResponseMenuControls' function SetActive to send a message to my message bus when it receives anything. It works, but obviously its a little silly because I'm modifying a script directly.
     
  17. loadexfa

    loadexfa

    Joined:
    Sep 2, 2008
    Posts:
    214
    I updated in the asset store (to 1.1.4.1) and now I have an error in my project (two classes with the same name ExampleMenuItems). I changed one of the classes and then I got more errors in Dialogue System/Scripts/Editor/Wizards/PlayerSetupWizard.cs. It is complaining about SmoothCameraWithBumper and UnityEditor.EditorGUILayout.ObjectField among other things. Should I post detailed error messages here?
     
  18. loadexfa

    loadexfa

    Joined:
    Sep 2, 2008
    Posts:
    214
    Whoops, apparently I already had SmoothCameraWithBumper and my version of it is changed. I renamed mine and the errors are gone. Nevermind!
     
  19. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Hi Fuzzy_Slippers, DaikonForgeDialogueUI is derived from AbstractDialogueUI. All AbstractDialogueUI methods are virtual.

    You can create a subclass of DaikonForgeDialogueUI that overrides the ShowResponses method with your additional code. To use it, on your dialogue UI GameObject, drag the new subclass into the Daikon Forge Dialogue UI component's Script field.

    Here's an example that includes stubs for extra processing on subtitles as well as response menus:
    Code (csharp):
    1.  
    2. using UnityEngine;
    3. using PixelCrushers.DialogueSystem;
    4. using PixelCrushers.DialogueSystem.DaikonForgeGUI;
    5.  
    6. public class ExtendedDaikonForgeDialogueUI : DaikonForgeDialogueUI {
    7.    
    8.     public override void ShowSubtitle(Subtitle subtitle) {
    9.         // (Any extra processing before showing subtitle goes here.)
    10.         base.ShowSubtitle(subtitle);
    11.         // (Any extra processing after showing subtitle goes here.)
    12.     }
    13.    
    14.     public override void HideSubtitle(Subtitle subtitle) {
    15.         // (Any extra processing before hiding subtitle goes here.)
    16.         base.HideSubtitle(subtitle);
    17.         // (Any extra processing after hiding subtitle goes here.)
    18.         // (Note: HideSubtitle() is called twice in some cases; be aware of that in your code.)
    19.     }
    20.  
    21.     public override void ShowResponses(Subtitle subtitle, Response[] responses, float timeout) {
    22.         // (Any extra processing before showing responses goes here.)
    23.         base.ShowResponses(subtitle, responses, timeout);
    24.         // (Any extra processing after showing responses goes here.)
    25.     }
    26.    
    27. }
    If there's any interest, in the next release I could add C# events that you could hook into instead, such as OnResponsesShown.

    Also, if you're using the latest version of DFGUI, the metadata for dfEventBinding changed. The UI prefab used in the Feature Demo Using Daikon Forge GUI and Continue Button scene was built using a previous version of DFGUI, so it won't be able to find dfEventBinding to work properly. In the next release, the prefab will be fixed to work with the latest DFGUI. You can fix it in your copy using the steps in this blog post.

    Hi loadexfa, I'm glad it's working now! As a note to others who might be upgrading pre-1.1.4 to 1.1.4+, the Examples/Scripts folder was moved to Scripts/Supplemental. If upgrading from 1.1.3.2 or earlier, please remove the Dialogue System folder before importing 1.1.4.1. Otherwise you'll have duplicates of the scripts. I do my best to avoid these kinds of changes; it was required in this case to allow customers to delete the entire Examples folder (to save space) while still keeping the functionality provided in the example scripts.
     
    Last edited: Jan 10, 2014
  20. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    I finally got around to posting a link to Rich Rabil, Jr.'s excellent 2012 survey of interactive dialogue writing tools. The summary in relation to writing and testing dialogue is in this table from his paper, where higher numbers are better:
    $rabil1.jpg
    The whole paper is definitely worth a read, as there are more to some of the tools than just writing dialogue. Also keep in mind that articy:draft and Chat Mapper have both seen major revisions since this paper was published in 2012.

    You can find the original on Rabil's site: http://dialoguejunkie.com/
     
  21. Silly_Rollo

    Silly_Rollo

    Joined:
    Dec 21, 2012
    Posts:
    501
    Looks like that works fine. I was trying to extend from AbstractDialogueUI directly and that ended up wonky not sure why.

    Since I didn't use the continue button from the prefab I didn't have that issue but I did have another odd problem with it. It looks like you enable and disable the DialogueUI objects on every dialogue refresh (going to the next line of dialogue, showing response, etc). I didn't notice till I tried to send an event to a script on the continue button but it never reached it because the object is in the middle of being disabled and enabled. I can solve it by giving the event a slight delay after ShowSubtitle or ShowResponses before I send it (WaitForEndOfFrame is even enough) but is it intended to work that way?
     
  22. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Yes and no. :) Detailed explanation below:

    In the base implementation, dialogue UI objects such as the response menu and NPC subtitle panel are deactivated to hide them. This is the way the Unity GUI, TK2D, and NGUI implementations work. The benefit is that you can add arbitrary controls as children of a panel, such as animated background widgets for atmosphere. When the panel is activated, its children are too; the UI code doesn't have to know about them. If UI objects want to know when they're shown or hidden, they can listen for OnEnable and OnDisable messages to start fade coroutines, etc.

    On customer request, the DFGUI implementation uses dfControl.Show() and Hide() instead, which gets around a DFGUI bug that was later fixed in DFGUI 1.0.12. The side effects of using Show() and Hide() are that UI objects don't enable children and don't get OnEnable/OnDisable messages. To maintain compatibility with customer code that expects OnEnable/OnDisable, these messages are sent manually by the UI script.

    So, to make a long story short, you're seeing "spoofed" OnEnable and OnDisable messages.
     
  23. kalvin

    kalvin

    Joined:
    Jan 12, 2014
    Posts:
    1
    Just purchased and installed into a fresh project and I get the following three errors:

    p:\Projects\Project_Test\Assets\Dialogue System\Examples\Feature Demo\FeatureDemo.cs(5,5): Error CS1501: No overload for method 'ApplySaveData' takes '1' arguments (CS1501) (Assembly-CSharp)

    p:\Projects\Project_Test\Assets\Dialogue System\Examples\Feature Demo\FeatureDemo.cs(35,35): Error CS1501: No overload for method 'FromOrigin' takes '3' arguments (CS1501) (Assembly-CSharp)

    p:\Projects\Project_Test\Assets\Dialogue System\Examples\Lua Example\LuaExample.cs(19,19): Error CS1501: No overload for method 'Run' takes '1' arguments (CS1501) (Assembly-CSharp)
     
  24. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Hi kalvin, sorry it's giving you trouble. What versions of Windows and Unity are you running? Are you using the version of MonoDevelop that comes with that version of Unity, or perhaps Visual Studio instead? What platform is set in the project's Build Settings? The Dialogue System requires Unity 4.2.1+. If you're using an earlier version of Unity and can't upgrade, let me know and I'll arrange a refund.

    Also, what version of the Dialogue System did you import? The version number is in the README file in Assets/Dialogue System.
     
    Last edited: Jan 12, 2014
  25. TopThreat

    TopThreat

    Joined:
    Aug 7, 2012
    Posts:
    136
    Hi TonyLi,

    If I setup a variable in a dialog "Picked_Up_Axe" and told the player in the conversation to go get the axe, what do I have to do to register the player has picked up an axe. Are these variables I make in LUA Chatmapper easily accessible from my not LUA scripts? How?

    Thanks!

    Lee
     
  26. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Hi Lee, it's as easy as:
    Code (csharp):
    1.  
    2. using PixelCrushers.DialogueSystem;
    3. ...
    4. Lua.Run("Variable['Picked_Up_Axe'] = true");
    5.  
    For examples, you can look in the Realistic FPS Prefab support package for LuaOnPickUpItem.cs and LuaOnDestroy.cs.
     
  27. Adalberto_VL

    Adalberto_VL

    Joined:
    Mar 7, 2013
    Posts:
    11
    One question... If I want to select the dialogue by using the arrow keys or controller do I have to modify and compile the surce code?

    Thanks for this awesome asset!
     
  28. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Thanks, cuevas! You don't have to modify the source code. If you're using a third party GUI system like Daikon Forge GUI, it natively supports arrow keys/controller input. For Unity GUI, you can create a subclass of UnityDialogueUI that implements the extra functionality. Keyboard and controller support is on the roadmap for the Unity GUI dialogue UI. I'm running a little behind schedule for the next release, but if I have time I'll include it since it's a commonly-requested feature.

    (Edit: ) While the Dialogue System doesn't yet support scrolling up and down through a list of buttons using the arrow keys (hopefully in v1.1.5), it has always supported trigger keys and buttons for GUI buttons. So you can, for example, assign the key KeyCode.Alpha1 or the button "Fire1" to the first response button to set up a response menu like the Xbox version of The Walking Dead:
    $432707.jpg
    (Image Credit: http://za.ign.com/pictures/articles/642/432707.jpg)
     
    Last edited: Jan 14, 2014
  29. TopThreat

    TopThreat

    Joined:
    Aug 7, 2012
    Posts:
    136
    Hi TonyLi,

    Thank you for answering my previous question. It was really simple to get the task I needed completed with your help.

    Many months ago I had asked about player text input and you mentioned that you may put that into version 1.1.1 or something. Did you ever get a chance to add that in? My example was to have a player type in his/her name and then have it assigned to a variable. This is the only part of the dialog system in my game that I am still using something else for now and I would like to use all of yours instead and remove the DLL's for the other dialog system if possible. I am not a coder but can usually figure out how to make scripts do what I need them to if I have examples.

    Tonight I will try to call a text entry field from the dialog like you mentioned and restart the dialog after, but I am uncertain if I have the skill necessary to perform this task.


    Thanks,

    Lee
     
  30. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Hi Lee, I'm glad it's working!

    Sorry it took so long. This is in the upcoming v1.1.5 release. I'll include an example scene that uses it.
     
  31. TopThreat

    TopThreat

    Joined:
    Aug 7, 2012
    Posts:
    136
    Hi Sorry to bother you again, did any of the example scenes explain how to use AnimatorTrigger(animatorParameter[, subject]) I have one character that uses mecanim but cannot find much about the trigger part on 4.3 (I have pro if that matters...) How do I need to setup the animator to be able to one shot these animations for the dialogs?

    Thanks!
     
  32. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    There's a bug in the AnimatorTrigger() sequencer command. I compiled the DLL for Unity 4.2, so even if you're using 4.3 it logs an error instead of setting the trigger.

    Under the hood, AnimatorTrigger(animatorParameter, subject) essentially runs:
    Code (csharp):
    1.  
    2. subject.GetComponent<Animator>().SetTrigger(animatorParameter);
    3.  
    Or at least it will in v1.1.5, which will be out in a couple of days. I just need to finish QA, documentation, and an example scene demonstrating text input during conversations.

    See also: Animator.SetTrigger.
     
  33. TopThreat

    TopThreat

    Joined:
    Aug 7, 2012
    Posts:
    136
    You sir, are incredible! Thank you for your hard work on this product!
     
  34. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Thank you for the kind words!

    What GUI system are you using? Text input during conversations is done in a GUI-independent manner like all of the UI stuff, but I want to make sure to include an example scene in the GUI system that you're using, since you were the first to request this feature.
     
  35. TopThreat

    TopThreat

    Joined:
    Aug 7, 2012
    Posts:
    136
    Standard Unity GUI would suffice. I would assume most would want NGUI, that would work as well. I currently use both. My current project is something of a mashup lol.... Thanks!
     
  36. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Got it. I'll include an example for Unity GUI. Thanks!
     
  37. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    The Dialogue System for Unity v1.1.5 has been submitted to the Unity Asset Store and is available for immediate download on the Pixel Crushers customer download page. If you need access to the customer download page, please PM me your invoice number.

    This is a big update with a little something for everyone. :)

    Highlights include:
    • Dialogue Manager Setup Wizard to complement the PC NPC Setup Wizards
    • Enhanced quest system with subgoals
    • 2D Trigger support (and a new 2D platformer demo here)
    • Keyboard/controller navigation of Unity GUI response menus
    • Text input during conversations
    • New AnimatorPlay() sequencer command to change Mecanim state immediately
    • Several new features for the Neverwinter Nights converter, including conversion of journals

    Next on the roadmap are integration packages for UniRPG and RPG Kit 2.0!


    Version 1.1.5 Release Notes:
    Note: The Dialogue System for Unity now requires Unity 4.3.0+.
    General:
    • New: Dialogue Manager Setup Wizard.
    • Improved: Added examples using multiple dialogue databases, text input during conversations.
    Converters:
    • Improved: All converters now mark dialogue databases as dirty when overwriting so Asset Server will pick them up.
    • Improved: (Aurora NWN Toolset) Now converts journals; new button to add an entire folder of source files; encoding options for non-default languages; new script-handling options.
    • Improved: (Chat Mapper) Now handles Chat Mapper pre-1.3 older outgoing links format.
    Dialogue Databases:
    • New: Quests can now have sub-entries.
    • New: Added global Lua user script to dialogue database (also imported from Chat Mapper projects).
    • Improved: Added import feature to dialogue database editor (doesn't resolve conflicting ID numbers yet).
    • Improved: If a conversation starts with no actor or conversant GameObjects, the Lua variables Variable['Actor'] and Variable['Conversant'] are now set to the defaults defined in the conversation.
    • Fixed: Conversations now follow nested groups and groups mixed with non-group entries.
    • Fixed: In multiple-NPC conversations, the sequencer now finds alternate NPC speakers correctly.
    • Fixed: Language localization of quest descriptions is now recognized.
    Triggers:
    • New: Added Stop Conversation If Too Far component.
    • Improved: Added a checkbox to allow Conversation Trigger to stop the conversation if the other participant leaves the trigger area.
    • Improved: Bark/Conversation/Quest/SequenceTriggers set to OnTriggerEnter now also respond to OnTriggerEnter2D.
    • Improved: Selector ProximitySelector now have a checkbox to choose between SendMessage or BroadcastMessage when sending OnUse to the target.
    Cutscene Sequencer:
    • New: Added sequencer commands AnimatorPlay(), ShowAlert()
    • Improved: Animation() sequencer command can now play any number of animations in sequence.
    • Fixed: Bug in MoveTo() sequencer command that left the subject facing wrong direction.
    User Interfaces:
    • New: Added text input capability to conversations: sequencer command TextInput(), Text Field UI, and Unity GUI control GUITextField.
    • Improved: If a QTE is triggered in a conversation, the conversation immediately goes to the next entry instead of waiting for the end of the current entry.
    • Improved: (Unity GUI) Keyboard/controller navigation; auto-size now works on all controls including response menu buttons.
    • Improved: (DFGUI) Exposed DaikonForgeResponseButton.dfButton as a public property.
    • Changed: Pipes ("|") in text are now treated as newlines.
    • Fixed: Bug in DFGUI integration that prevented QTE indicators from showing.
    Scripting:
    • New: Dialogue Manager now has CurrentActor and CurrentConversant properties (valid during conversations).
    • Improved: Updated to KopiLuaInterface v1.2.
    • Changed: OnConversationEnd is now sent to participants after the dialogue UI is closed. This allows
    • StartConversationOnDialogueEvent(OnConversationEnd) to properly reopen the UI.
     
  38. dreamlarp

    dreamlarp

    Joined:
    Apr 22, 2011
    Posts:
    854

    The new editor is great. It's just what we needed. Can you make a few more video's of these new features please.
     
  39. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Thanks! Today is dedicated to video tutorials. I'll post links when they're online.


    Dark Tonic's Killer Waves is on sale. This is a great product for controlling spawns, levels, and more, and the Dialogue System has an integration support package for it. If anyone has this on their asset store wishlist, pick up a copy now before they rename it to Core GameKit and bump up the price!
     
  40. dreamlarp

    dreamlarp

    Joined:
    Apr 22, 2011
    Posts:
    854
    Thank you TonyLi.

    Yes killer waves is one of the best app to use with yours. As you can see in our development we use with of these quite a bit.
    We have invited TonyLi to our private development community and he has been a great help to our project.
     
  41. pixlweaver

    pixlweaver

    Joined:
    Dec 21, 2012
    Posts:
    92
    I've just started working with this plugin - and am trying to use this and Usequencer together. When I try to play a Usequencer sequence from the dialog tree, I get a warning in the console and the sequence does not play.

    The warning is:
    My sequence, named TestSequence, is located under Resources/Sequences. The sequence script I'm using is uSeq(Sequences/TestSequence).

    Am I missing a step or not using the correct script?

    Another possible factor is that I am using Usequencer 1.3 - which is the latest version as of this week. Will Dialogue System support Usequencer 1.3?
     
  42. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    I'll check this right now and get back to you soon!

    [EDIT] I just built a fresh test sequence under uSequencer 1.3 and it checks out. Are you providing the name of the prefab to the uSeq() command? When you create a prefab in uSequencer, it puts it in a subfolder with the same name as the prefab.

    For example, say I'm editing a sequence named 'Foo' and I click 'Create Prefab'. Then I save it in Assets/Resources. uSequencer will create a subfolder named Assets/Resources/Foo containing a prefab named Assets/Resources/Foo/Foo (note the 2 Foo's).

    The sequence script for this Foo prefab should be:
    Code (csharp):
    1. uSeq(Foo/Foo)
    Or, if I want to bind an object dynamically to the sequence, maybe something like:
    Code (csharp):
    1. uSeq(Foo/Foo,once,1,Sergeant Graves)
    If that isn't the issue, please let me know and we'll do our best to get it working for you.
     
    Last edited: Jan 22, 2014
  43. pixlweaver

    pixlweaver

    Joined:
    Dec 21, 2012
    Posts:
    92
    Aha! I knew it had to be something simple that I was missing. Just needed to list the prefab name twice because of that folder.

    Thank you for the quick response! I really am enjoying this plugin so far, very handy.
     
  44. pixlweaver

    pixlweaver

    Joined:
    Dec 21, 2012
    Posts:
    92
    Using the sequence script LookAt() at the beginning of a conversation is supposed to make the actor and the conversant look at each other, correct? I can only seem to get one or the other to look at each other.
     
  45. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    LookAt() rotates a subject toward a target. To make both look at each other, use:
    Code (csharp):
    1. LookAt(speaker,listener); LookAt(listener,speaker)
    But you just gave me an idea for an enhancement. I'll consider making LookAt() (without arguments) make the actor and conversant look at each other.
     
  46. pixlweaver

    pixlweaver

    Joined:
    Dec 21, 2012
    Posts:
    92
    That code does not seem to work either. Only one or the other will look at each other. I have loaded up the Feature Demo scene (just noticed it uses that code you posted) and it also only turns the NPC not the player.
     
  47. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    I'm sorry, that was a bug. Thank you for finding it! I just posted a patch on the customer download page and sent you a PM with access info. You can now also just use:
    Code (csharp):
    1. LookAt()
    without any arguments to make the speaker and listener look at each other.

    For other customers who are interested in this fix and other features in the patch, the changes are:
    • Fixed: LookAt(listener,...) wasn't finding the right subject; also added LookAt() without arguments to make the speaker and listener look at each other.
    • New: Added Skip Continue On Response Menu checkbox to Dialogue Manager. When ticked, and if using a continue button, it doesn't show the continue button if the next step is the player response menu.
    • Improved: Added Refresh Database section to Dialogue Editor window to make it quicker to reimport from third-party authoring tools. This is currently only implemented in the window version (Window > Dialogue System > Tools > Dialogue Editor) and not in the inspector view. The layout of this section may change slightly in the next full release.
    • New: (DFGUI) DaikonForgeDialogueUIs can now use dfRichTextLabels for subtitles.
    • Improved: (Chat Mapper) Converter now splits pipes (|) into separate dialogue entries.
    • 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.
     
  48. pixlweaver

    pixlweaver

    Joined:
    Dec 21, 2012
    Posts:
    92
    Ok thanks! I haven't had a chance to upgrade to this patched version yet. Anything special I should do when upgrading - delete the old plugin folder or something?
     
  49. DAC

    DAC

    Joined:
    Mar 6, 2013
    Posts:
    9
    Hello, please tell me, how Dialogue System for Unity can be combined with the ORK Framework 2?
     
  50. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    pxlweaver, the only upgrade that requires deleting the plugin folder is pre-1.1.4 to 1.1.4+. If you're already at 1.1.4 or higher, you can import on top of the existing Dialogue System folder if you want. Remember to also import any third party support packages in Dialogue System/Third Party Support, since they may contain updates, too.

    DAC, the Dialogue System should be fully compatible with ORK and ORK 2, able to work well side-by-side. The Dialogue System comes with general purpose gameplay integration components. There is no ORK-specific integration package, but the Dialogue System is very extensible if you want to tie them together more tightly. You can exchange data using the Dialogue System's Lua environment and write custom cutscene sequencer commands to control ORK during conversations. If you have any questions or need assistance doing this, please feel free to post your questions to this thread or email me directly at tony (at) pixelcrushers.com.

    These links may also be helpful: