Search Unity

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

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

  1. thomkoled

    thomkoled

    Joined:
    Oct 28, 2014
    Posts:
    11
    Many thanks for your reply! But maybe there is another problem. I tried to call PreloadMasterDatabase(), or DialogueManager.PreloadDialogueUI(). But the same result. My dialogue database is not big, few nodes, and no pictures.

    Code (CSharp):
    1.  
    2. using UnityEngine;
    3. using PixelCrushers.DialogueSystem;
    4. using PixelCrushers.DialogueSystem.UnityGUI;
    5.  
    6. public class test : MonoBehaviour {
    7.  
    8.     void Start() {
    9.         DialogueManager.PreloadMasterDatabase ();
    10.         DialogueManager.PreloadDialogueUI ();
    11.     }
    12.  
    13.     void OnGUI () {
    14.         if (GUI.Button (new Rect(10,10,200,130), "Start dialogue")) {
    15.             //DialogueManager.ShowAlert("Hey");
    16.             DialogueManager.StartConversation("Private Hart");
    17.         }
    18.     }
    19.  
    20. }
    21.  
    22.  
    Here is my video, with the test.

    But dont worry, I will figure it out :)
     
  2. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    @thomkoled - At the end of Start(), try:
    Code (csharp):
    1. DialogueManager.ShowAlert(string.Empty);
    This will put the Dialogue Manager through most of the same steps as starting a conversation. If it gets rid of the stutter, please let me know. Also feel free to send an example project to tony (at) pixelcrushers.com. I'll be happy to take a look.
     
    thomkoled likes this.
  3. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    The Dialogue System v1.3.9a is available on the Pixel Crushers customer download site. If you need access, please PM me your invoice number. This is an interim release that won't be on the Asset Store. I expect to release v1.4.0 soon with ORK support.

    This interim release contains these updates:
    • Added: New Preload Resources checkbox to Dialogue Manager to disable lazy loading of database and UI.
    • Improved: PersistentPositionData can now remember the actor’s last position in every level the actor has visited.
    • Unity UI: Added typewriter effect, fixed incorrect namespace for Unity UI selector scripts.
    • Chat Mapper: Can now batch convert Chat Mapper projects
    • articy:draft: The converter now sets “Is Group” to true on Condition nodes, strips “{font-size:NN;}” from dialogue text in case you forget to turn off “Export Text Markup”, imports custom dialogue fragment fields, and adds a checkbox to use Stage Directions for Dialogue System sequences.
    • Realistic FPS Prefab: Updated multi-scene example to use the new feature of PersistentPositionData.
     
  4. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,293
    I just saw this video (
    ) from Unity and starting on about the 44th minute i thought this would be cool to have in your Dialogue system.
    So can we use it with the new unity ui soon or any other words about things like this?
     
  5. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    Hi @RandAlThor - Yes, you can use render textures with the new Unity UI. They work fine with Unity UI Dialogue UIs. (Here's the documentation on using Unity UI with the Dialogue System). You can also use sequencer commands such as SetEnabled() to enable and disable sprites, masks, etc., in each dialogue entry. If you need any guidance, please feel free to post here, PM me, or email me directly at tony (at) pixelcrushers.com.
     
  6. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,293
    Oh, that is great. Did not noticed that you support the new ui so fast :)

    Edit:
    Btw. this asset (Action-RPG Starter Kit) that you support also with yours will get the new ui too next week, maybe something will change so they will not work together. I never have used them together but want to try it and come back if they do not work together anymore. Hope you can help then.

    https://www.assetstore.unity3d.com/en/#!/content/9076
     
    Last edited: Dec 2, 2014
  7. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    Several people are developing games with ARPG and the Dialogue System, so I'll give it priority when the new version of ARPG comes out. :)
     
  8. BPR

    BPR

    Joined:
    Jan 4, 2013
    Posts:
    56
    Hi,
    we would like to use your Dialog System for a bigger project. My task was to study the manual and I am very pleased with the capabilites of your System so far. I have a specific question though: We have our writers work with Chat Mapper and from my tests so far I can tell if we define a field called "Sequence" in chat mapper it gets recognized in Unity and Sequence comands are executed.
    Is there a way to access other Custom Asset Fields from Chat Mapper Conversation and Dialog Nodes in C#? I have seen they get imported and are visable under Fields/All Fields and that there are Functions to access Items and Actors, are there such functions for Conversations and Dialog Nodes?

    Example:
    We would like to give our writers the ability to set a field called "Ambient" for conversations in Chat Mapper with a value of "At the window" for example. And we would then like to access that string in C# when that conversation starts so we can spawn/move our NPCs accordingly.
    Another example:
    We would like to have certain Dialog Nodes to carry additional textlines that won't be displayed during dialog but saved and displayed later in a diary.

    Your advice would be highly appreciated
     
    Last edited: Dec 4, 2014
  9. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    Hi @BPR - Yes, it's quite easy. Use DialogueLua.GetVariable(), DialogueLua.GetActorField(), etc. The Dialogue System works just like Chat Mapper in that it maintains its runtime data in a Lua environment.
    You can use DialogueManager to get references to the Unity assets involved in the conversation, such as DialogueManager.CurrentActor for the transform of the current actor.

    Example:
    Code (lua):
    1. if (DialogueLua.GetVariable("Ambient").AsString == "At the window") {
    2.     MoveCharacter(DialogueManager.CurrentConversant, theWindow);
    3. }
    For lower-level access, you can use Lua.Run() to run arbitrary Lua commands and retrieve their values. DialogueLua doesn't provide any shortcut methods for conversation tables, so you'll want to use Lua.Run() for them.

    Or, if you know the field value is static, you can reference the dialogue database directly. This wouild be like, in Chat Mapper, referencing the Chat Mapper project file directly instead of going through the simulator's runtime Lua environment.
    Code (csharp):
    1. string convName = DialogueManager.LastConversationStarted;
    2. var conv = DialogueManager.MasterDatabase.GetConversation(convName);
    3. string ambient = conv.LookupValue("Ambient");
    So the short answer is: Anything you can do in Chat Mapper at runtime, you can do in the Dialogue System, plus you can access the design-time data directly, too.

    Also, for spawning or moving, your authors can use the Sequence field without anyone having to write any C# code. (This is precisely what sequences are for.) For example, in the START node, this sequence command will move the NPC to the window:

    MoveTo(window)

    This gives the authors more directorial control over the conversation.

    For the diary, you can use the Lua and dialogue database methods described above, or you can set up the diary as a quest where each diary entry is a quest entry.
     
    Last edited: Dec 4, 2014
  10. BPR

    BPR

    Joined:
    Jan 4, 2013
    Posts:
    56
    Ah thank you for your quick answer. That code was exactly what i was looking for, is there a similar method to get the current Dialog Node? I checked the DailogueManager class and found CurrentConversationState, can I use this to get the current Dialog Node ID?
     
    Last edited: Dec 4, 2014
  11. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    Yes, it's:
    Code (csharp):
    1. DialogueManager.CurrentConversationState.subtitle.dialogueEntry.id
    You can also set Lua observers if you want to know when a Lua value changes, and there are plenty of messages such as OnConversationStart and OnConversationLine that your scripts can listen for.
     
  12. BPR

    BPR

    Joined:
    Jan 4, 2013
    Posts:
    56
    Perfect, thank you very much and keep up the good work :)
     
  13. hike1

    hike1

    Joined:
    Sep 6, 2009
    Posts:
    401
    /Dialogue System for Unity Unity UI Dialogue UI.htm
    The Example subfolder contains an example scene that uses these elements.
    I stopped counting at 14 examples, which one is it? 8--}
     
  14. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    Hi @hike1 - If you're looking for the example for the new Unity UI, here are the steps:
    1. Import the package Dialogue System/Scripts/Unity UI Support.
    2. This will create a folder Dialogue System/Scripts/Supplemental/UI.
    3. Inside this folder, you'll find a subfolder named Example with two example scenes. The first example scene shows how to build a traditional dialogue UI, where you've specified all of the response buttons at design time. The second example shows to how create a single response button template; the UI will instantiate as many copies as necessary to accommodate all of the responses for each response menu.
    If you're looking for a different example scene, please let me know.

    [Edited to fix path to UI folder.]
     
    Last edited: Dec 7, 2014
  15. hike1

    hike1

    Joined:
    Sep 6, 2009
    Posts:
    401
    actually in /scripts/supplemental/ui. Do you prefer the new ui or the old?
     
  16. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    @hike1 - Thanks for catching that. I just fixed the path in my post.

    The old GUI system is quicker to hack together code-oriented tests, but the new UI is far better for actual use. As I mentioned earlier, any new UI features will first be implemented in Unity UI, then ported to the other GUI systems.
     
    eridani likes this.
  17. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    The Dialogue System for Unity v1.4.0 has been released! It's available now on the Pixel Crushers customer download site. (PM me your invoice number if you need access.) It should be available on the Asset Store in a few days.

    The major features in this release are ORK Framework support and SALSA with RandomEyes support. ORK Framework is a very comprehensive RPG system. It's probably the easiest way to get an entire RPG up and running without having to write and manage any extra code. Regarding SALSA, I'll admit I was a little skeptical at first. I didn't think its approach to lipsync approximation would be comparable to traditional phoneme-based animation. But it does a fantastic job, and it's much easier to add voiceover to your game. If you're considering adding voiceover, or even just eye focus and facial expressions, look into SALSA.


    Version 1.4.0
    Core
    • Improved: AudioWait() and Voice() now stop audio if cancelled.
    • Improved: Added Preload Resources checkbox to Dialogue Manager.
    • Improved: PersistentPositionData now saves position of every level actor has visited if Record Current Level is ticked.
    • (Unity UI) Fixed namespace for Unity UI selector components, added typewriter effect.
    Third Party Support
    • ORK Framework: Support added.
    • SALSA with RandomEyes: Support added.
    • Realistic FPS Prefab: Updated to remember position in each level.
    • Chat Mapper: Now batch converts CMP files in a single window.
    • articy:draft: Strips {font-size:NN;} from text, converts conditions as group entries, added checkbox to specify whether StageDirections are Sequences.

    Next up: Updated video tutorials (finally!)
     
    Last edited: Dec 8, 2014
  18. sqallpl

    sqallpl

    Joined:
    Oct 22, 2013
    Posts:
    384
    Hello,

    I have "Show NPC Subtitles With Responses" ticked in Dialogue Manager and it disables my 'NPC Subtitle Line' object when the response buttons are enabled. I'm using new Unity UI. Any idea what's wrong in my setup? Thanks.
     
  19. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    Hi @sqallpl - Assign the same object to Response Menu > Subtitle Reminder > Line.

    When the NPC speaks, NPC Subtitle > Line is active.

    When the response buttons are enabled, Response Menu > Subtitle Reminder > Line is active.

    They're separate fields to give you the option to use different GameObjects. For example, you might want to put a fade-in and typewriter effect on your NPC Subtitle > Line GameObject, but not on your Subtitle Reminder.
     
    sqallpl likes this.
  20. OsefOsef123

    OsefOsef123

    Joined:
    Jun 30, 2013
    Posts:
    3
    Hi @TonyLi , I am having a problem with scripting with the Dialogue System, and I was hoping you could help me.
    I am using NGUI to display the dialogue UI, and have everything working, but my Dialogue Manager doesn't seem to receive the OnConversationLineCancelled message whenever I cancel a line.

    According to the documentation, this message should be sent to the Dialogue Manager & children every time the user cancels a line by clicking the Continue Button. I am using a custom NGUI button that finishes the typewriter effect, and then skips to the next line by calling this method:
    Code (CSharp):
    1. NGUIDialogueUI dialogueUI;
    2. ...
    3. dialogueUI.OnContinue();
    And it works just fine, except for the OnConversationLineCancelled message. Is it because I use NGUI? Or did I make a mistake somewhere?
     
  21. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    Hi @OsefOsef123 - The Dialogue System distinguishes between cancel and continue.

    Cancel: By default, the Escape key cancels, although you can change this key and/or map a joystick button. When you cancel a subtitle (e.g., NPC delivering a line), it immediately skips to the next step in the conversation and sends OnConversationLineCancelled(subtitle). When you cancel a player response menu, it ends the conversation and sends OnConversationCancelled(transform).

    Continue: Continue, on the other hand, uses a continue GUI button, which you can also map to a key and/or joystick button. It sends OnContinue() [no arguments] to the dialogue UI, which then passes it along to the Dialogue Manager. This gives the dialogue UI a chance to do something such as speeding up a typewriter effect before passing it to the Dialogue Manager. If you want to capture an NGUI continue button, I suggest adding a click handler to it that calls a method you've written.
     
  22. eridani

    eridani

    Joined:
    Aug 30, 2012
    Posts:
    655
    Hi Tony, do you have any sort of roadmap for the procedural quest generator add on? For example, are you looking to release it in the next couple months? Thank you
     
  23. Justinas_Ma

    Justinas_Ma

    Joined:
    May 8, 2014
    Posts:
    31
    Hey, thanks for the typewriter effect for unity UI!
     
    Last edited: Dec 11, 2014
  24. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    Hi @eridani - End of January. I've been gathering feedback on three prototypes. At this point, it's a matter of settling on one, making a demo, and updating documentation. Which option would be most useful to you?
    1. Very simple, need-based quests. NPC asks player to kill mobs if they're on its turf, collect items if NPC wants them, etc. Easy to set up, reacts to the current state of the world, but quests aren't very deep.
    2. Goal-based planner. Define abstract goals (e.g, become famous) and actions (have player save village/kill mobs, get gold, etc.). Longer quests, but more work to set up and less control over resulting quests. Structure of quest might not be as clear to player as #3 below.
    3. Detailed, motivation-infused templates. Large library of fully-written quests with blanks for mobs to kill, items to collect, etc. Easy to set up, quests are longer and detailed, NPC's motivation is clear, but structure of template might become apparent if used frequently.
    @Teshla - My pleasure! :)
     
  25. eridani

    eridani

    Joined:
    Aug 30, 2012
    Posts:
    655
    I think Option 2 would be amazing because it would be the backbone of an rpg that takes a long time to complete. But I'm worried it might be very complicated to setup and maintain, and would not be as conducive to making smaller quicker randomized quests.

    Option 3 sounds like a good balance and is actually what I expected it to do, especially if the quests are heavily randomized.

    Option 1 sounds like something Dialogue System can handle already with a trivial bit of work, so I don't see great value in it..
     
    TonyLi likes this.
  26. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    Thank you for your input! It's headed toward option 2 with support for option 3.
     
    eridani likes this.
  27. Justinas_Ma

    Justinas_Ma

    Joined:
    May 8, 2014
    Posts:
    31
    Hey, one more thing, I couldn't find the script (I might have missed it, my apologies if so) which would make the continue button instantly finish typewriter effect the first time and only advance the conversation the second time it's clicked.
     
  28. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    Patch incoming later today! :)
     
  29. Justinas_Ma

    Justinas_Ma

    Joined:
    May 8, 2014
    Posts:
    31
    Damn you're fast! :D
     
    eridani likes this.
  30. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    You can download the updated Unity UI Support package here and on the Pixel Crushers customer download site. It includes:
    • A new component Unity UI Continue Button Fast Forward.
    • A new checkbox on Unity UI Dialogue UI named "Auto Focus". If you tick this, it will automatically focus the alert and subtitle continue buttons (if applicable) and the first response button when the response menu is shown.
    • A similar "Auto Focus" checkbox on Unity UI Quest Log Window.
     
  31. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    The Dialogue System for Unity v1.4.1 is now available on the Pixel Crushers customer download site. (If you need access, please PM me your invoice number.) It should be on the Unity Asset Store in a few days.


    Version 1.4.1
    Core
    • Unity UI:
      • Added a new component Unity UI Continue Button Fast Forward.
      • Added a new checkbox on Unity UI Dialogue UI named "Auto Focus". If you tick this, it will automatically focus the alert and subtitle continue buttons (if applicable) and the first response button when the response menu is shown. Added a corresponding "Auto Focus" checkbox on Unity UI Quest Log Window.
    • Unity GUI: GUILabel and GUIImage now have an image color (tint) field; fixed double-movement of gamepad navigation.
    • Fixed: Fade(in/out) sequencer command would sometimes take effect one frame too late.
    Third Party Support
    • TextMesh Pro: Added support.
    • 2D Action RPG Kit: Now pauses player during menus.
    • Adventure Creator: Fixed inventory synchronization from Lua to Adventure Creator.
    • Chat Mapper: Audio Files are now added to the Sequence field as Audio() commands.
    • Realistic FPS Prefab: Menu item Disable Gameplay During Conversations now adds VerticalBob, HorizontalBob, and Footsteps to Set Enabled On Dialogue Event.
     
  32. sqallpl

    sqallpl

    Joined:
    Oct 22, 2013
    Posts:
    384
    Hey TonyLi,

    Is there some way to achieve some randomness for the sequencer commands? I'm generally wondering about camera angles. I know that I can set up one default sequence and overwrite seuences for every single line but it would be great if there will be an option in the manager that you can randomize camera angles, so every line that has no specific sequence would choose one from the predefined list of angles. Is it possible somehow?
     
  33. BPR

    BPR

    Joined:
    Jan 4, 2013
    Posts:
    56
    Hi,
    we are making great progress using your product, however is there a way to stop the conversation from moving to the next dialogue entry for a while? We are updating the player's dialog pointGUI when the player is choosing an answer.
    The update takes place over about 4 Seconds because several GUI lables are updated after each other.
    And we would like to have the NPC deliver its line after the GUI label was updated.
    I already tried calling
    Code (CSharp):
    1. DialogueManager.PlaySequence("AudioWait(Gain); AudioWait(Gain)@1.0; AudioWait(Gain)@3.0;");
    but unlike typing this in the sequencer command field, the command won't make the the conversation yield.
    Do you have any idea how to make this happen? :)

    And by the way is there a way to play multiple audio files after the previous one has finished without using ->Message() and @Message()?

    Thank you very much for your support :)
     
  34. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    Hi @sqallpl - The Dialogue Manager's Default Sequence is:
    Code (Sequence):
    1. Camera(default); required Camera(default,listener)@{{end}}
    The 'default' keyword can be a different value for each actor. To change it, add a Default Camera Angle component. If the actor doesn't have a Default Camera Angle component, 'default' is the same as 'Closeup'.

    You could randomly set the Default Camera Angle's Camera Angle field for each line. Here's an example script that you can add to the actor. I'm out of the office at the moment, so pardon any typos.
    Code (csharp):
    1. using UnityEngine;
    2. using PixelCrushers.DialogueSystem;
    3.  
    4. [RequireComponent(typeof(DefaultCameraAngle))]
    5. public RandomCameraAngle : MonoBehaviour {
    6.  
    7.     public string[] cameraAngles; //<-- Assign the allowed angles to this list.
    8.         // They can be names in the Camera Angles prefab and/or
    9.         // the names of any GameObject in the scene.
    10.  
    11.     private DefaultCameraAngle defaultCameraAngle;
    12.  
    13.     void Awake() {
    14.         defaultCameraAngle = GetComponent<DefaultCameraAngle>();
    15.     }
    16.  
    17.     void OnConversationLine(Subtitle subtitle) {
    18.         var randomAngle = cameraAngles[Random.Range(0, cameraAngles.Length)];
    19.         defaultCameraAngle.cameraAngle = randomAngle;
    20.     }
    21. }
    Hi @BPR - If you want to wait at the end of a line, you can use a sequence in this form:
    Code (Sequence):
    1. None()@Message(done)
    And when your GUI labels are done, run this in a script:
    Code (csharp):
    1. PixelCrushers.DialogueSystem.Sequencer.Message("done");
    This causes the line to wait until the sequencer receives a message "done". Your script sends this message when it's done updating the GUI labels.

    However, if I understand correctly, you want to wait after the player chooses a response from the response menu. If this is correct, the built-in dialogue UIs don't work that way. You can't use a Response Menu Sequence because the dialogue UI cancels this sequence as soon as the player makes a choice. You'll have to make a subclass and override ShowSubtitle(), something like below. I'm subclassing UnityDialogueUI, but you could do the same with any GUI system implementation.
    Code (csharp):
    1. public class CustomDialogueUI : UnityDialogueUI {
    2.  
    3.     public override void ShowSubtitle(Subtitle subtitle) {
    4.         StartCoroutine(DelayedShowSubtitle(subtitle));
    5.     }
    6.  
    7.     IEnumerator DelayedShowSubtitle(Subtitle subtitle) {
    8.         while (mySpecialScript.isUpdatingLabel) {
    9.             yield return null;
    10.         }
    11.         base.ShowSubtitle(subtitle);
    12.     }
    13. }
    Not yet (unless you're using AudioWWW()). But that's a good idea. I'll add it to the next release!
     
  35. BPR

    BPR

    Joined:
    Jan 4, 2013
    Posts:
    56
    Thanks I tried this and it delays the subtitles just fine, however the sequencer commands like AudioWait still start undelayed, I was able to delay them using
    Code (CSharp):
    1. IsUpdatingLabel = false;
    2. yield return new WaitForSeconds(0.5f);  
    3. PixelCrushers.DialogueSystem.Sequencer.Message("IndicatorsDone");
    and adding @Message(IndicatorsDone) after each command.
    Is there a way to delay all Sequencer commands in a similar way like the subtitles?

    Okay I am looking forward to it :D
     
  36. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,551

    This is great to see TextMesh Pro support included now. I was just going to ask about that. :)
     
  37. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    Sorry this didn't come to me earlier: Instead of subclassing the dialogue UI, intercept the response button event. Normally, the response buttons send OnClick(response) to the dialogue UI. Configure them to call your own method instead. For example, put a script like this on your dialogue UI GameObject:
    Code (csharp):
    1. public MySpecialResponseButtonHandler : MonoBehaviour {
    2.  
    3.     public void OnClickWaitForLabels(object data) {
    4.         StartCoroutine(WaitForLabels(data));
    5.     }
    6.  
    7.     IEnumerator WaitForLabels(object data) {
    8.         while (mySpecialScript.isUpdatingLabel) {
    9.             yield return null;
    10.         }
    11.         SendMessage("OnClick", data);
    12.     }
    13. }
    Then configure the buttons to call OnClickWaitForLabels instead of OnClick.

    TextMesh Pro makes some beautiful bark text, nameplates, and selector text. Since TextMesh Pro isn't interactive (i.e., no clickable buttons), the support package leverages the new Unity UI in Unity 4.6+ for dialogue UIs and quest log windows. Just wanted to mention this, since it means you need to use Unity 4.6+ if you want to use TextMesh Pro with the Dialogue System.
     
  38. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    Version 1.4.1 is now available on the Unity Asset Store!
     
  39. Justinas_Ma

    Justinas_Ma

    Joined:
    May 8, 2014
    Posts:
    31
    I've been experimenting a bit with the continue button appearance, and I couldn't figure it all out yet. I tried both "Optional before response menu" and "Not before response menu" and it seems the system doesn't take into account the moments when the player has only one response and it gets selected automatically maybe you could advise some workaround for this?
     
  40. Vilhelmus

    Vilhelmus

    Joined:
    Dec 18, 2014
    Posts:
    20
    I've been messing with the ufps implementation. Just got this, but even the demo scene doesn't complete. Private Hart says, bring me a pistol, but picking up a pistols does nothing new. There are no scripts attached, and threes a box that says shoot me, and the dialog system on die script attached, but no dialogue appears. I went through the entire documents but no mention of how to activate a finished quest. Just two lines that say what the variables of the quest trigger are, out of like 4000 pages, lol. o_O
     
  41. Vilhelmus

    Vilhelmus

    Joined:
    Dec 18, 2014
    Posts:
    20
    The source code has an error. Is there one missing?
    Assets/Dialogue System/Scripts/Core/Tools/Tools.cs(416,32): error CS0246: The type or namespace name `CursorLockMode' could not be found. Are you missing a using directive or an assembly reference?
    Assets/Dialogue System/Scripts/Supplemental/Triggers/Handlers/ShowCursorOnConversation.cs(39,25): error CS0246: The type or namespace name `CursorLockMode' could not be found. Are you missing a using directive or an assembly reference?

    Sloppy #if UNITY_4_4 || UNITY_4_5 but updated for Unity 4.6 UI
    but left out UNITY_4_6
    plus, none of the prefabs or examples work using the source, 56 missing scripts need to be reapplied.
     
    Last edited: Dec 19, 2014
  42. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    Hi @Teshla - You're right; it could more accurately be called "Not before player activity (line or response menu)". Would it be more useful to you and other Dialogue System users if the continue button behavior treats auto-selected player responses similarly to NPC lines? If so, I can change this behavior in the next release.

    There are benefits and tradeoffs to supporting Lua. I think most users appreciate the versatility it provides. If you don't want to enter Lua, you can click the "..." button and use pop-up menus, no typing required. If you want to write code in C#, you can register your own C# methods and call those instead. Speaking of C#, the Dialogue System includes all source code. You can find the source for the precompiled DLLs in Scripts/SourceCode.unitypackage.

    The UFPS support package is written for Unity 4.5 (the version UFPS targets). Thanks for reporting this. I'll add defines for 4.6 and 5.x in the next release so it's ready for future versions.
     
  43. Vilhelmus

    Vilhelmus

    Joined:
    Dec 18, 2014
    Posts:
    20
    Actually, the popups don't work completely in 4.6, so they do manually need to be entered. Sometimes they just wont open, and others when you need a "Variable" ">" "0" only "Variable" "Alert" "=" "string" is available.
    I figured it out but it gave me a headache. But still, it's the best quest maker I've bought, including zeranos, s-quest, ply, and a few others that weren't worth the $ so i feel i got my moneys worth.
     
  44. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    Thanks @Vilhelmus - I'll check out the popups in 4.6 and 5.x and address any issues. If you notice any other issues or have any feature requests, please let me know!
     
  45. Justinas_Ma

    Justinas_Ma

    Joined:
    May 8, 2014
    Posts:
    31
    Well based on the current project i'm working on, this would be really beneficial, but it might be useful for someone to have it other way too. Perhaps simply extending the list of possible continue appearance options would be the best. For example adding "Precise not before options menu" and "Precise optional before response menu" or something like that.
     
  46. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    The Pixel Crushers website now has a tutorial on integrating Crazy Minnow Studios' SALSA with RandomEyes into the Dialogue System. It also covers entrytags. Even if you're not using SALSA, entrytags make it much easier to manage audio and/or lipsync animations associated with lines of dialogue.

     
  47. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    That sounds like the best approach. I'll include this in the next release!
     
  48. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    The Pixel Crushers website now also has a tutorial on integrating the Dialogue System with PLYoung's plyGame.



    The latest release of plyGame (2.3.4c) tweaked its plyData structure, which obsoletes the integration package's example scene data. I'll update the scene data for 2.3.4c in the next release of the integration package.
     
  49. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,702
    Starting with Season 2 Episode 2, The Game Kitchen's The Last Door is being written with the Dialogue System for Unity. Check it out!



    Penny Arcade calls it a "Love Letter to Lovecraft."

    Gamezebo writes "Soon, I will stop trembling."

    After facing issues with other tools:
    Check out a screenshot of their editor customizations below. (Spoiler alert: Contains some dialogue from episode 2!)

    You can play it here.
     
  50. eridani

    eridani

    Joined:
    Aug 30, 2012
    Posts:
    655
    Does anyone know if is a way to not have to do this manually, to make code forward compatible with new Unity versions by default. I know this isn't real code but something like:

    #if < UNITY_4_3 || >= UNITY_4_6

    or maybe:

    #if !UNITY_3_5 && !UNITY_3_6 && !UNITY_3_7 ... && !UNITY 4_4 && !UNITY_4_5

    Something where you don't have to go back to revisit code whenever a new version is released, unless something actually breaks because of the new version.

    I figure no but just thought I'd ask.