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

    yuewahchan

    Joined:
    Jul 2, 2012
    Posts:
    307
    For the DialogueUI Alert Panel, is it possible to override it with different content and layout in runtime ?
    e.g.
    1. Show Alert with message
    2. Show Alert with Item Graphic + message

    The scenario is
    1. Player said "XXXXX"
    2. Click Continue
    3. Show an item image "key" and a message "A key is found!"
    4. Click Continue
    5. Player said "XXXXX"
    6. Click Continue
     
    Last edited: Jun 19, 2014
  2. Keitaro3660

    Keitaro3660

    Joined:
    May 20, 2014
    Posts:
    86
    hi ya :D /
    just bought this awesome asset in this sale :D
    i already tested it, and i looooveeee it :D
    just test the dialog though :D

    yeah that's awesome and exacty what i needed :D
    anyway, i'm really suprized and loved the jRPG 2 style, really looks Persona 4!! awesome!!

    one question about the portrait, can it matched the screen resolution??
    pict2.png pict1.png
    i want my game portrait position/scale look's like the first pict forever, but it doesn't get resize (and the dialog UI too) when i resize the game window. can it do that? or what should i do about this? any tutorial already available?
    anyway, i will PM you my invoice, looks like i need the download site for the bug patch :D
     
  3. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    Hi yuewahchan, you can assign DialogueManager.DialogueUI at runtime to switch which dialogue UI to use for each alert.

    However, the easiest solution is probably to use a single alert panel with an image control. This way you don't need to remember to set the UI back after the alert is done. If you have an item graphic, assign it to the image control. If you don't, assign null to the image control. If you're using Unity GUI, you can deactivate the image control game object instead if you prefer.

    Another solution is to override the dialogue UI script (e.g., UnityDialogueUI.cs). You can find examples on the Recipes manual page. Override ShowAlert() to do whatever processing you want. For example, say you've encoded the name of the item graphic in the alert text. Your override method could extract the name from the alert text, load the texture from Resources, and assign it to the image control.


    Hi Keitaro3660, thank you for the feedback! The Dialogue System is designed to work with any GUI system. It looks like you're using the Unity GUI system. This system uses resolution-independent "scaled rects". Here are some helpful links:

    To make the portrait image match the screen resolution:

    1. Drag the Assets/Dialogue System/Prefabs/Unity Dialogue UIs/JRPG2 UI prefab into a scene.
    2. Expand the prefab in the hierarchy and activate the GUI Root object so you can see the UI in the Game view.
    3. Find the Portrait Image control.
    4. Change its scaled rect width and height to Normalized. This means that the size will be computed relative to the current resolution, where 1 = the full width or height of the screen. If you want the portrait image to be 25% of the width of the screen, set it to Normalized at 0.25.
    5. Save your UI as a new prefab, and assign it to your Dialogue Manager. Or just leave the UI in the scene and assign it directly. The Dialogue Manager accepts prefabs or scene objects.

    The Dialogue System has several video tutorials and a detailed manual. And you can always ask questions here or PM me directly! :)
     
  4. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    If you've been waiting to buy the Dialogue System for Unity, it's today's 24 Hour Deal, so now is the perfect time!

    You can pick up the Dialogue System for 65% off!

    The timing is perfect because the price of the Dialogue System will be raised in the next release to better reflect everything that this comprehensive product offers. If you were on the fence, you can get it today for a steal!
     
  5. castor76

    castor76

    Joined:
    Dec 5, 2011
    Posts:
    1,507
    Man.. just few days after I bought it and now it is on sale! Gahhhh!
     
  6. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    Sorry, I can't tell you how many times the same thing has happened to me, too. I'll try to make up the difference in good support. :)
     
  7. Keitaro3660

    Keitaro3660

    Joined:
    May 20, 2014
    Posts:
    86
    your welcome, you deserved more support :D

    i have tried the solution
    *have been confuse for a while because the previous prefab used pixel, it's get crazy when changed to normalize. i got the idea when i see another dialog portrait prefab. the Scaled Rect is depend on the parent scaled rect too, this is what got me confuse and error for a while :v

    but now it's works, thanks :D
     
  8. yuewahchan

    yuewahchan

    Joined:
    Jul 2, 2012
    Posts:
    307
    I think I will try the approach in the recipes manual page first. But I have another problem, how can I prevent the alert to fade out until I click the continue button to show the next dialogue?

    Actually, I use an empty dialogue node having ShowAlert(99999), Delay(99999) and Variable["Alert"] = "key is found" , to workaround that. Can we have some setting for the Alert ?
     
    Last edited: Jun 19, 2014
  9. yuewahchan

    yuewahchan

    Joined:
    Jul 2, 2012
    Posts:
    307
    Is it possible to separate the bulitin SequencerCommandXXXX from the DialogueSystem.dll ? So that it is possible to remove it on demand. Or any method that I can remove the bulitin SequencerCommand ?
     
  10. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    The duration to show the alert is determined by the length of the alert text and Dialogue Manager > Subtitle Chars Per Second & Min Subtitle Seconds, just like subtitles. If you always use continue buttons, set this to a really high number such as 99999. This way it never goes away on its own, and the player always has to click the continue button.
     
  11. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    Not from the DLL, no. But you can remove them from the source scripts and recompile a new DLL (or just use the source scripts instead of DLL). Why do you want to do this? Maybe there's another solution.
     
  12. steveR

    steveR

    Joined:
    Jul 14, 2013
    Posts:
    33
    Nice that this has Adventure Creator integration. I watched the video tutorial, but did not see if it will allow me to use 3rd party GUI's such as NGUI and 2dToolkit within Adventure Creator with your asset.
     
  13. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    Hi steveR, yes, you can use any GUI system. Everything's modular, so you can swap out one piece (such as the UI) and everything else (such as the core product and Adventure Creator module) will work fine.

    Please PM me your invoice number if you'd like access to the Pixel Crushers customer download page. It contains an updated Adventure Creator support package that handles changes introduced in Adventure Creator v1.34.
     
  14. Licarell

    Licarell

    Joined:
    Sep 5, 2012
    Posts:
    434
    Tony, I took advantage of your sale... and I also have AC, is the AC support package included in the asset store version?
     
  15. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    Hi Licarell, yes, all support packages (including AC support) are in the Asset Store version, but an updated AC support package is on the customer download page. I just PM'ed you access information. Adventure Creator v1.34, which was released after the latest version of the Dialogue System, introduced some changes. If you're using AC 1.34 or higher, use the support package on the customer download page. This package will also be in the next release on the Asset Store.
     
  16. yuewahchan

    yuewahchan

    Joined:
    Jul 2, 2012
    Posts:
    307
    I really want to override the bulit-in command, e.g. ShowAlert([message],[duration]) , instead of ShowAlert([duration]). I know I can use Alert() or XAlert(), but it will confuse my developer or writer....
     
  17. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    May I suggest registering a C# function with Lua instead? This way, instead of using the Sequence field, your writer could add something like this to the Script field:

    Script: ShowAlert("Hello, world", 5)​

    You can examine Scripts/Templates/Aurora/TemplateNWScript.cs to see an example of how to register a C# function with Lua.

    I recommend this for two reasons:
    1. Since you can't replace the built-in ShowAlert() sequencer command without rebuilding the DLL/modifying the source, this lets you define a ShowAlert() Lua command instead.
    2. Sequencer commands were designed to be ultra-simple. From experience, I found that writers often forget to wrap strings in quotes. So strings are unquoted in sequencer commands. Arguments are simply separated by commas. This allows writers to use Animation(Wave Hi, Joe Smith) instead of Animation("Wave Hi", "Joe Smith"). Unfortunately, it also means ShowAlert(Hello, world, 5) wouldn't parse correctly. A future version will parse strings such as ShowAlert("Hello, world", 5), but there's still issue #1 (ShowAlert() is already reserved).
     
  18. yuewahchan

    yuewahchan

    Joined:
    Jul 2, 2012
    Posts:
    307
    Thank for you explanation. How about having a Sequencer Settings on DialogueSystemController that can disable call of HandleCommandInternally in Sequencer.cs

    I am trying to write a new CustomUIControls.cs that derived from AbstractUIAlertControls. Is it possible to make ShowMessage(string message, float duration) be virtual ?
     
    Last edited: Jun 20, 2014
  19. mgmhunt

    mgmhunt

    Joined:
    Apr 1, 2013
    Posts:
    52
    Assets/Dialogue System/Third Party Support/Behavior Designer/Scripts/BehaviorTreeLuaBridge.cs(80,45): error CS0246: The type or namespace name `SharedVariableTypes' could not be found. Are you missing a using directive or an assembly reference?

    I get this on importing the Behavior Designer package contained in the Dialogue System package.

    Using Behavior Designer 1.3 and Dialogue System 1.2.4.2
     
  20. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    Hi yuewahchan, I'll think over the best way to do this. I don't want to make it too easy for developers to accidentally tick the checkbox and prevent their sequences from running. [Edit: Okay, that checkbox/bool looks fine. It will be in the next release.]

    You can use SetMessage(message, duration), which is an abstract virtual method in AbstractUIAlertControls:
    Code (csharp):
    1. /// <summary>
    2. /// Sets the message text of an alert.
    3. /// </summary>
    4. /// <param name='message'>
    5. /// Message.
    6. /// </param>
    7. /// <param name='duration'>
    8. /// Duration that message will be shown. Used by subclasses to set up fade durations.
    9. /// </param>
    10. public abstract void SetMessage(string message, float duration);
    [Edit: If you're making a lot of changes to the dialogue UI code, you might find it easier to base it off of the template located in Scripts/Templates/TemplateDialogueUI.cs. This way you won't inherit all of the extra code that's in AbstractDialogueUI.]

    Hi mgmhunt, sorry about that error message. Behavior Designer 1.3, which was released yesterday, changed the way shared variables work. I'll update the support package today and post a download link.
     
    Last edited: Jun 20, 2014
  21. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    A user recently asked how to prompt the player for his name (and NPC names as well) and use the names during gameplay. I thought I'd post a copy of the reply here in case it's helpful for others, too:


    Yes, you can store that information in a Lua variable. There are two parts to this:

    1. Getting the input from the player.

    2. Using the input during gameplay.


    Here are details for each part:

    1. Getting the input from the player. If you want to get text input during a conversation, use the TextInput() sequencer command. There's an example scene in Assets/Dialogue System/Examples/Feature Demo/Feature Demo With Text Input. The TextInput() command stores the player's input in a Lua variable. For example, you could store the player's name in a variable named Variable["PlayerName"]. Example:

    Sequence: TextInput(MyTextFieldUI, Your Name, PlayerName)
    This uses a text field UI control to prompt the player for text input. (You must add the text field UI control to your dialogue UI.) It uses "Your Name" as the label, and stores the result in Variable["PlayerName"].

    If you want to get text input outside of a conversation (for example, in a character creation screen), you can still save it to Lua using the script method DialogueLua.SetVariable("PlayerName", userInput) or the equivalent PlayMaker or plyGame action.


    2. Using the input during gameplay. To use the input during a conversation or bark, use the [lua] tag in your dialogue text. For example:

    Dialogue Text: Hello, [lua(Variable["PlayerName"])]!


    If you also want to change NPC names, I recommend storing each name in the actor's fields. Every actor in the dialogue database has a customizable list of fields such as Name, IsPlayer, Age, etc. You could add a new field such as "CustomName" to store the actor's new name. Then set it using DialogueLua.SetActorField(npcName, "CustomName", newCustomName). For example:

    Code (csharp):
    1. DialogueLua.SetActorField("Girlfriend", "CustomName", "Akane")
    Then, in your Dialogue Text:

    Dialogue Text: Hello, [lua(Actor["Girlfriend"].CustomName)]! How are you?
     
  22. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014

    Hi mgmhunt, you can download the updated support package here or on the Pixel Crushers customer download site. (If anyone needs access to the download site, please PM me your invoice number.)
     
  23. yuewahchan

    yuewahchan

    Joined:
    Jul 2, 2012
    Posts:
    307
    In the recent release, you introduces wizards for building Lua conditions and scripts in the Dialogue Editor, how about the Sequence field ?
     
  24. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    Hi yuewahchan, not for the Sequence field yet, but that's a good idea! I'll add it to the roadmap.
     
  25. Shawn67

    Shawn67

    Joined:
    Jan 2, 2014
    Posts:
    2,196
    Any extra goodies on the download site? Or just quicker access to updates without having to wait for the asset store to approve them?
     
  26. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    Hi Shawn67, right now it doesn't contain much except for updated support packages for these third party products:
    • Adventure Creator
    • Behavior Designer
    • PlayMaker
    • UFPS
    Those packages will also be in the next Asset Store release, which I'm trying to get out the door in three days.

    Other than that, the download site contains the source project for the 2D Platformer demo and a set of iTween effects contributed by Dialogue System user Magicolo.
     
  27. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    A beta version of the next release is available on the customer download page. Please PM me your invoice number if you need access.

    Although users shouldn't notice any change (since there were no public interface changes), this version uses a new underlying Lua implementation and now supports Windows Store and Windows Phone 8 builds. Please let me know if you notice any issues. I plan to release the production version in 2-3 days. Thanks!

    Version 1.3.0-beta1
    • NOTE: The underlying Lua implementation changed to support Windows Store & Windows Phone. After updating, you can delete the Dialogue System/KopiLua folder. iOS developers should use the new link.xml in Prefabs/iOS.
    • Added: Dialogue Manager > Include Sim Status checkbox. IMPORTANT: If you use SimStatus, you must tick this because it now defaults to unticked!
    • Added: Dialogue Manager > Subtitle Settings > Allow PC Subtitle Reminder checkbox.
    • Added: Dialogue Manager > Camera Settings > Disable Internal Sequencer Commands checkbox.
    • Fixed: In 1.4.2.1 - 1.4.2.2, links between conversation nodes couldn't be selected in the Dialogue Editor.
    • (Adventure Creator) Updated to handle Adventure Creator v1.34 script changes.
    • (Behavior Designer) Updated to support BD 1.3
    • (PlayMaker) Updated to handle Unity 4.5 / PlayMaker Tooltip attribute conflict.
    • (PlayMaker) Added Every Frame checkbox to Get Variable & Get Lua Field.
    • (UFPS) Additions and fixes:
      • Added: Record Position checkbox in FPPersistentPlayerData.
      • Added: Dont Apply Lua Next Load Level checkbox to new FPSyncLuaPlayerOnLevelLoad component.
      • Fixed: Now saves & loads accurately, including currently-equipped weapon

    Roadmap
    • Asset sync links to facilitate sharing assets between dialogue databases
    • Google Sheets & Excel import/export, with a common importer API
    • More-automated process for adding voiceover and lipsync animation
    • When splitting Chat Mapper text by pipes, also split Sequence fieldsSequence wizard
    • Animated portraits
    • Zerano AI State Machine integration
    • ORK Framework integration
    • Camera Path Animator integration
    • Twine importer
    • uScript support
     
  28. yuewahchan

    yuewahchan

    Joined:
    Jul 2, 2012
    Posts:
    307
    TonyLi, How did you build the binary from source code ? use MonoDevelop or Visual Studio ? in Mac or in PC ?
     
  29. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    Hi yuewahchan, for the release package, they're compiled in Monodevelop on Windows 7, but they're cross-platform-compatible managed assemblies. I've also compiled them on Mac, and using Visual Studio to see if there was any significant performance difference (there wasn't). The manual contains notes about building from source.
     
  30. yuewahchan

    yuewahchan

    Joined:
    Jul 2, 2012
    Posts:
    307
    Which version of visual studio (2005, 2008, 2013, express or professional), monodevelop (2.8 or 4.0.1?), target Microsoft .Net or mono.net ? framework 3.5 or 2.0?
     
  31. gurayg

    gurayg

    Joined:
    Nov 28, 2013
    Posts:
    229
    Hi Tony,
    Is it possible to give some in-depth info about your roadmap?

    I'm mostly interested in "Asset sync", "automated voice-over, lip sync" and "Zerano AI"
    I'm guessing Zerano AI part will be several nodes to communicate all aspects of AI and Dialogue system.

    Is there any estimated time for those features?

    Thanks.
     
  32. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    For the release package, I use the Monodevelop that ships with Unity 4.3.4f1, using all of the defaults. I try to keep everything as normal and standard as possible.

    Hi gurayg, version 1.3.0 should be released tomorrow, pending resolution of a Windows Phone 8 issue. Asset sync and more-automated voiceover will be in 1.3.1. Zerano AI integration will probably be in 1.3.2.

    Asset sync was requested by developers who use multiple dialogue databases. It will allow you to define, for example, your actors in one dialogue database. You can configure a second database to sync its actors with the actor database. When you open the second database, it pulls in the actors defined in the actor database. This way you only need to maintain the actors in one database, but you can reference them from all of your databases. Syncing also applies to items, quests, locations, and variables.

    More-automated voiceover will provide an easier way to configure audio or voiceover in large conversations. Currently, the process is:
    1. Record audio (and optional lipsync animation) and save them with whatever file naming scheme you choose.
    2. Put the files in a Resources folder.
    3. In each dialogue entry's Sequence field, add an Audio() or Voice() command that references the files.
    If you have a lot of dialogue entries, this is a lot of manual work.

    Version 1.3.1 will introduce a reserved word 'entrytag' in the sequencer. The tag will be set to the conversation title and dialogue entry ID. In a conversation titled 'TalkToKing', dialogue entry 42's entrytag will be 'TalkToKing_42'. This will allow you to use a new process:
    1. Export the dialogue database as CSV (spreadsheet) to get a list of entrytags and dialogue text.
    2. Record the audio (and optional lipsync) and save them using the entrytags as the filenames.
    3. Put the files in a Resources folder.
    4. Set the Dialogue Manager's Default Sequence to "Audio(entrytag)", or just "Audio()" which will use entrytag by default. You can leave the dialogue entry's Sequence fields untouched.
     
  33. gurayg

    gurayg

    Joined:
    Nov 28, 2013
    Posts:
    229
    Thanks for the reply Toni,

    For the More-automated voice over part. I recall that we could use LUA commands while we prepare our .xml to import/Convert Dialogue (Articy Draft). But this is still too much manual work and open to mistakes.

    This new method of syncing the audio filenames to entrytags seems more robust.
    Is it possible to trigger a mecanim animation with this system? Character has a state called "TalkToKing_42" which animates a bone or blendshape based animation for this particular dialogue and it triggers automatically.

    By the way Zerano AI is the same as mecanim AI, am I right?
     
  34. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    Yes. Use one of the Animator sequencer commands such as AnimatorPlay(). You can set up a state called "TalkToKing_42" and set your default sequence to AnimatorPlay(entrytag).

    It's the successor that Zerano is working on.
     
  35. kevdotbadger

    kevdotbadger

    Joined:
    Sep 13, 2011
    Posts:
    82
    Does the UFPS plugin track inventory items that are not weapons? if I create an Apple item can that be used? Also if I have 2 npcs and player A requires something, however player B has that item, but you cant get the item until you do a quest for player B. Can that sort of setup work?
     
  36. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    Hi kevdotbadger, yes. The Dialogue System's plugin for UFPS doesn't differentiate between weapons and non-weapons. As long as it's defined as an item in UFPS, the Dialogue System will treat it the same.

    Conversations can examine and modify the UFPS inventory, so it's easy to check whether the player has an item.
     
  37. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    Version 1.3.0 has finally been released! :) It was submitted to the Unity Asset Store and is available right now on the customer download site. If you need access, please PM me your invoice number.

    Version 1.3.0 Release Notes:
    • NOTE: The underlying Lua implementation changed to add support for Windows Store & Windows Phone. After updating, you can delete the Dialogue System/KopiLua folder. iOS developers should use the new link.xml in Prefabs/iOS.
    • Added: Dialogue Manager > Include Sim Status checkbox.
      • If you use SimStatus, you must tick this because it now defaults to unticked!
    • Added: Dialogue Manager > Subtitle Settings > Allow PC Subtitle Reminder checkbox.
    • Added: Dialogue Manager > Camera Settings > Disable Internal Sequencer Commands checkbox.
    • Added: DialogueManager.UpdateResponses() method to refresh menu choices if conditions have changed during menu.
    • Added: Support for Animated Images - animate actor portraits and other GUIImages and GUILabels.
    • Added: PersistentDataManager event hook for saving custom data (see How To Save Additional Data and an example of saving a custom inventory table).
    • Improved: Dialogue Editor interface improvements.
    • Improved: Set Component Enabled On Dialogue Event trigger now also works for Animation, Animator, and MonoBehaviours.
    • Fixed: In 1.4.2.1 - 1.4.2.2, links between conversation nodes couldn't be selected in the Dialogue Editor.
    • Fixed: When creating a DialogueSystemController by script, displaySettings were not automatically initialized.
    • (articy:draft) Added Encoding dropdown to articy:draft Converter for special characters.
    • (Adventure Creator) Updated to handle Adventure Creator v1.34 changes.
    • (Behavior Designer) Updated to support Behavior Designer v1.3 changes.
    • (KGFMapSystem): Icon changes now take effect even if the map is hidden.
    • (plyGame): Added Update Responses block.
    • (PlayMaker) Additions and fixes:
      • Updated to handle Unity 4.5 / PlayMaker Tooltip attribute conflict.
      • Added: Every Frame checkbox to Get Variable & Get Lua Field.
      • Added: Update Responses action.
    • (UFPS) Additions and fixes:
      • Added: Record Position checkbox in FPPersistentPlayerData.
      • Added: Force Wield checkbox in FPPersistentPlayerData.
      • Added: Dont Apply Lua Next Load Level checkbox to new FPSyncLuaPlayerOnLevelLoad component.
      • Fixed: Now saves & loads accurately, including currently-equipped weapon.

    Up Next:
    • Dialogue database asset syncing
    • More-automated process for adding voiceover and lipsync animation
    • Import/export to spreadsheet
     
  38. kevdotbadger

    kevdotbadger

    Joined:
    Sep 13, 2011
    Posts:
    82
    How about the second question regarding different quests for different people.
     
  39. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    Yes, you can do this. Quests/missions are very freeform. Unlike other systems that lock you into rigid quest templates (kill quest, gather quest, etc.), you can define Dialogue System quests any way you want. However, this means the responsibility falls to you to check completion requirements. But it's pretty easy to do using the conditions & scripts wizards. One of the example scenes included with the Dialogue System demonstrates three quests: a kill quest, a discover quest, and a talk-to-another-NPC quest.

    Doing this with UFPS multiplayer will take a little more work on your part. UFPS only maintains inventory for the local human player (e.g, Player A, if that's who you're controlling). If you need information from a human Player B, you'll have to sync that up in multiplayer. You can store the sync'ed data in the Dialogue System's Lua environment for easy access in conversations.

    If Player B is an NPC, on the other hand, it's no problem; you just set it up as a normal quest.
     
  40. vladimirdlc

    vladimirdlc

    Joined:
    Jan 26, 2013
    Posts:
    19
    Hi, maybe this was answered before, but I don't seem to find any ocurrency.

    I'm making a 2D game, and I want to start dialogs OnUse, when pressing a key, it is possible to define the use distance in an 'Usable' games, not by a number but using a collider as defined area?
     
  41. jfzhu

    jfzhu

    Joined:
    Jul 2, 2013
    Posts:
    5
    I want to know whether this version can localize the actor's name?
     
  42. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    Hi vladimirdlc, use Proximity Selector. You can find an example in Dialogue System/Examples/Feature Demo/Topdown Demo. If this isn't what you're looking for, you can use Range Trigger to turn components on and off based on collider areas. The version of Range Trigger in the Dialogue System package doesn't work with 2D, but this one should. I'll include it in the next release, too.


    Hi jfzhu, you're the first person to ask that! :) Sorry, not yet. I'll add this to the roadmap as a native feature. For now, you can use a localization table to localize actor names in Unity GUI controls. For example, if you only need to localize the actor's name in the NPC Portrait Name label, this should work for you. Create a localization table, and add a field for the actor's name. In that field, add the localized versions for each language. Then assign this table to the NPC Portrait Name label.
     
  43. sqallpl

    sqallpl

    Joined:
    Oct 22, 2013
    Posts:
    232
    I want to buy this asset but I have a question. Is it possible to send an event to an FSM (Playmaker) when the specific line is spoken?
     
  44. jfzhu

    jfzhu

    Joined:
    Jul 2, 2013
    Posts:
    5
    Thx, and another question, the default npc portrait name label displays in ui is the conversation's title, not actor's name?
     
  45. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    Hi sqallpl, yes, the third-party support package for PlayMaker that's included with the Dialogue System can send these events to PlayMaker:
    • OnConversationStart
    • OnConversationEnd
    • OnConversationCancelled (if the player cancels out of a conversation)
    • OnConversationLine (when any line is spoken)
    • OnConversationLineCancelled (if the player skipped past a line)
    • OnConversationTimeout (if a timer is configured and it times out)
    • and additional events for barks and sequences.
    If you want to send a specific event on a specific line, you can add a sequencer command to the line's Sequence field. For example, say you want the FSM to do something when the player says "Open, sesame!" Add the Dialogue System Events To PlayMaker component to the Dialogue Manager, and set the dialogue entry (line) to:
    • Dialogue Text: "Open, sesame!"
    • Sequence: SendMessage(SendEvent, PlayerSaidOpenSesame, Dialogue Manager)
    If your FSM(s) are configured to listen for an event "PlayerSaidOpenSesame", they'll receive this event.


    Hi jfzhu, no, it should show the actor's name. If you've added an Actor Name Override component to your actor, it will show that instead. Is this not happening in your project? If it's not working right, please let me know what GUI system you're using. You can PM me, email tony (at) pixelcrushers.com, or post it right here.
     
  46. Ash-Blue

    Ash-Blue

    Joined:
    Aug 18, 2013
    Posts:
    95
    How difficult would it be to use PlayMaker to set a specific portrait for a character in a conversation?
     
  47. sqallpl

    sqallpl

    Joined:
    Oct 22, 2013
    Posts:
    232
    Thanks for the answer! BTW. Is it possible to send an event to a specified FSM instead of sending a global event to all FSMs?

    I have one more question about the Voice() command. Will this command cross fade the legacy animation same as the Animation() command?
     
    Last edited: Jul 2, 2014
  48. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    Hi Ash Blue, you don't need PlayMaker for this (but I'll include a PlayMaker action in the next version anyway). Just use a [pic] tag in your dialogue text or the SetPortrait() sequencer command.

    Hi sqallpl, yes. You can add a Dialogue System Events to PlayMaker component to any object and set the FSMs that it sends events to. Then just use the SendMessage() sequencer command to send the event to that object.

    Yes, that's correct. It cross-fades.
     
  49. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,014
    Version 1.3.0 is now available on the Unity Asset Store. If you prefer to update from the store, you can do it now.
     
  50. Licarell

    Licarell

    Joined:
    Sep 5, 2012
    Posts:
    434
    Tony, have you given it any thought to moving your Dialogue System to not just conversation nodes but also adding your event system and quest system to a node base system as well, that way we can wire barks and events and quests to conversations and see better whats going on programmatically...
     
unityunity