Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

[RELEASED] Dialogue System for Unity - easy conversations, quests, and more!

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

  1. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Multiple Dialogue System-Powered Games Nominated for PLAY Magazine's Game of the Year

    At least two games made with the Dialogue System for Unity are in the running for PLAY Magazine's 2021 Game of the Year:
    Disco Elysium - The Final Cut and
    Kena: Bridge of Spirits
    Congratulations! (And apologies if I missed any other Dialogue System-powered games in the list.)

    PLAY Magazine is the #1 magazine for all things PlayStation. You can vote for your GoTY favorites here: PLAY Magazine Game of the Year Voting
     
  2. Gamingbir

    Gamingbir

    Joined:
    Apr 1, 2014
    Posts:
    194
  3. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi - The Dialogue System comes with several integration features you can use, such as:
    • Add a Dialogue System Events component to your Survival Engine player GameObject to temporarily disable Survival Engine player control components during conversations.
    • Use custom sequencer commands to make things happen during conversations such as activating certain survival items or playing animations.
    • Register Survival Engine C# methods with Lua so you can check and set them in conversations. (And/or use scene events to directly call Survival Engine methods on GameObjects.)
    • Use components such as Increment On Destroy to advance quest counter variables and quest states (e.g., "chop down 3 trees" quest).
    • Use SaverTemplate.cs to create savers to save Survival Engine data in saved games.
    If you have any specifics about using any of them, just let me know.
     
  4. i32gg7ar

    i32gg7ar

    Joined:
    Jan 3, 2021
    Posts:
    11
    Hi Tony!

    Coming back once again to report on some weird behavior between Dialogue System + Ink. It looks like since DialogueSystemInkIntegration creates a whole new database to hold the "fake" Ink conversation, the emphasis settings can't be edited/transferred over to this Ink database. It also looks like the emphasis settings are local to the database, and not global to all databases.

    Because of this, if I try to use emphasis in any text inside Ink, I get the following error when I get to the conversation line when running the project:
    Code (CSharp):
    1. NullReferenceException: Object reference not set to an instance of an object
    2. PixelCrushers.DialogueSystem.FormattedText.ReplaceEmphasisTagsWithRichText (System.String& text, PixelCrushers.DialogueSystem.EmphasisSetting[] emphasisSettings) (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/MVC/Model/Logic/Text/FormattedText.cs:605)
    3. PixelCrushers.DialogueSystem.FormattedText.Parse (System.String rawText, PixelCrushers.DialogueSystem.EmphasisSetting[] emphasisSettings) (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/MVC/Model/Logic/Text/FormattedText.cs:201)
    4. PixelCrushers.DialogueSystem.ConversationModel.GetState (PixelCrushers.DialogueSystem.DialogueEntry entry, System.Boolean includeLinks, System.Boolean stopAtFirstValid, System.Boolean skipExecution) (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/MVC/Model/Logic/Model/ConversationModel.cs:245)
    5. PixelCrushers.DialogueSystem.ConversationModel.GetState (PixelCrushers.DialogueSystem.DialogueEntry entry) (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/MVC/Model/Logic/Model/ConversationModel.cs:304)
    6. PixelCrushers.DialogueSystem.ConversationController.OnFinishedSubtitle (System.Object sender, System.EventArgs e) (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/MVC/Controller/ConversationController.cs:270)
    7. PixelCrushers.DialogueSystem.ConversationView.FinishSubtitle () (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/MVC/View/View/ConversationView.cs:418)
    8. PixelCrushers.DialogueSystem.ConversationView.OnFinishedSubtitle () (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/MVC/View/View/ConversationView.cs:425)
    9. PixelCrushers.DialogueSystem.Sequencer.FinishSequence () (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/MVC/Sequencer/Sequencer.cs:581)
    10. PixelCrushers.DialogueSystem.Sequencer.LateUpdate () (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/MVC/Sequencer/Sequencer.cs:573)
    Ink itself doesn't have anything related to how the text is displayed, so I'm relying on the Dialogue System to do the work for me here. I added a very simple database to the Dialogue Manager with only the actor names and the emphasis settings I want to use. Is it possible to change the "official" behavior of the Ink integration to copy the emphasis settings when it's starting up?

    For now, my "patch" includes changing
    DialogueDatabase.AddEmphasisSettings
    from
    private
    to
    public
    , and adding the following line in
    DialogueSystemInkIntegration.CreateDatabase
    :
    Code (CSharp):
    1. database.AddEmphasisSettings(DialogueManager.masterDatabase.emphasisSettings);
    I'd appreciate if this behavior could be supported in some "official" way so I don't have to keep patching the code whenever I update versions of the Dialogue System.
     
  5. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    i32gg7ar likes this.
  6. i32gg7ar

    i32gg7ar

    Joined:
    Jan 3, 2021
    Posts:
    11
    Thank you, Tony! I'm using that package and it's working great. I really appreciate your help!

    Do you know if there's a way I can call other external functions (that are not Dialogue System's) from the Ink story? I'd like to bind some functions which are specific to my game and have the Ink story call them when appropriate (similar to the
    Lua.RegisterFunction()
    solution of "pure" Dialogue System).

    My current solution involves hacking a few things together in
    DialogueSystemInkIntegration
    so I can call
    story.BindExternalFunction()
    with my own functions, but perhaps I missed a better approach.

    Also, it's likely that in the future I'll encounter more edge cases between Dialogue System + Ink. Let me know if there's a better channel to keep reporting and asking about those, otherwise I'll continue posting replies here :)

    Thank you for the help!
     
  7. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @i32gg7ar - Here is fine, or the Pixel Crushers forum if you prefer. On the Pixel Crushers forum, you can start your own thread to keep the topic organized instead of mixed in with everything else here. The discord server works, too, but it's primarily for discussion and suggestions, not support requests.

    The DialogueSystemInkIntegration script has a public stories property (List<Story>) that's initialized in Start(). From your own script, you can look up a story in the stories property and call BindExternalFunction() to bind your own C# methods to any functions that you've defined as EXTERNAL in your ink story.
     
  8. i32gg7ar

    i32gg7ar

    Joined:
    Jan 3, 2021
    Posts:
    11
    Thank you! I'll keep providing feedback here then, it's easier for me.

    I managed to hook into the
    stories
    property, but I also needed to add an event in
    DialogueSystemInkIntegration
    that is fired when it finishes starting up (it's fired at the end of the code in
    Start()
    ). That way the code will always run when the stories have been added (otherwise I'd run into a race condition I think). If there's a better way to do this, please let me know. Otherwise, I'll keep my patch with the extra event inside
    DialogueSystemInkIntegration
    . Thanks!
     
  9. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @i32gg7ar - You don't need to modify DialogueSystemInkIntegration. Since it initializes stories in Start(), your own script can just wait until the end of the Start() frame by using a coroutine that yields on WaitForEndOfFrame() or even waits until the next frame by yielding on null, like this:
    Code (csharp):
    1. public class YourCustomScript : MonoBehaviour
    2. {
    3.     private IEnumerator Start()
    4.     {
    5.         yield return null; // Let DialogueSystemInkIntegration load stories first.
    6.         foreach (Story story in GetComponent<DialogueSystemInkIntegration>().stories)
    7.         {
    8.             // Bind your functions to story here.
    9.         }
    10.     }
    11. }
    That said, in the next update I'll add a 'storiesInitialized' C# event hook to DialogueSystemInkIntegration that's invoked at the end of its Start() method.
     
    i32gg7ar likes this.
  10. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    I just updated the Dialogue System Extras page with an updated integration package that adds a loadedStories C# event to DialogueSystemInkIntegration.
     
    i32gg7ar likes this.
  11. i32gg7ar

    i32gg7ar

    Joined:
    Jan 3, 2021
    Posts:
    11
    Sweet! Thanks a lot. In the meantime, I was also suggested a neat pattern of just wrapping
    DialogueSystemInkIntegration
    in my own class (and adding this class as a component in Dialogue Manager), and that allows me to extend it with these kind of functionalities.
    Your suggested solution is also nice, I wasn't aware I could do that in Unity so I learned some stuff too! Thanks a lot.
     
    TonyLi likes this.
  12. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Glad to help! DialogueSystemInkIntegration's methods and properties are virtual for the most part in case you need to make a subclass to override certain behaviors. If you run into any methods that you need to override that aren't virtual, just let me know.
     
    i32gg7ar likes this.
  13. gamesbydre

    gamesbydre

    Joined:
    Nov 25, 2014
    Posts:
    58
    Hello , I've found your instructions on how to integrate the Dialogue System with Invector Third Person controller.
    Are there any instructions on how to use the Quest in Dialogue System with Invector as I see a quest is set up in the Demo scene?
    2nd question, can Love-Hate which I also own, work with both Dialogue system and Invectors Third Person controller?
     
  14. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @gamemakerdre - Just like normal. For example, your Invector-based item quests can check the Invector Lua functions such as vGetItemCount(), and your kill quests can use Increment On Destroy. (See also this post.)

    Yes. There isn't a specific Invector - Love/Hate integration, but you can use the Dialogue System's Love/Hate integration to manage it.
     
  15. gamesbydre

    gamesbydre

    Joined:
    Nov 25, 2014
    Posts:
    58
    Thank you.
     
    TonyLi likes this.
  16. Peter_Wackomeida

    Peter_Wackomeida

    Joined:
    Nov 17, 2016
    Posts:
    15
    I've just started with dialogue system. I'm taking apart the demo scene to rebuild in VR so I understand it. I'm having trouble figuring out what's triggering the enemy death. I see the variable and the action that replaces a character with a dead one but I can't seem to find what's having LMB actually trigger that action.

    Can you lead me to a resource that will help me understand that part? It's my hope to tie in a VR laser gun instead of a canvas but I have to find the trigger first.
     
  17. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @Peter_Futurus - Thanks for using the Dialogue System! The purpose of the demo is to demonstrate the Dialogue System's features and not provide a comprehensive combat system, so the "combat" scripts are really simple. The Player GameObject's SimpleController script sends a "TakeDamage" message to whatever the player clicks on. The enemies have a script called DieOnTakeDamage that replaces the enemy with a corpse prefab when it receives this message.

    BTW, the Dialogue System Extras page has a couple of VR scenes you might be interested in. There's one for SteamVR/OpenVR and another for Oculus.
     
  18. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Space Chef - Kickstarter Success

    Congratulations to Blue Goo Games! The Kickstarter for Space Chef, made with the Dialogue System for Unity, reached its funding goal in a little over 2 days. There are 26 days left in the campaign in case anyone wants to get in on backing it and pushing forward its stretch goals.

     
  19. Peter_Wackomeida

    Peter_Wackomeida

    Joined:
    Nov 17, 2016
    Posts:
    15
    Yeah I found the takedamage right after asking. To be clear, I'm not actually going to be using combat in my game, so am not trying to emulate. My thinking is "if I can convert this scene to VR I grock it well enough to start making my own thing" so I have to figure out how to kill these dudes as a test for myself. I want to make an on trigger enter event that does it. (I'll just pretend I'm punching them) but I don't know how to call takedamage in a way the enemy will understand yet. I feel learning how to do that part is worthwhile, so again don't worry I'm not trying to make that an actual game mechanic.
     
  20. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Got it. If you just want to do a quick setup for experimenting, you could set up a Dialogue System Trigger set to OnTriggerEnter that deactivates the living version of the enemy and activates the dead version:

    upload_2021-10-22_23-10-55.png
     
  21. Peter_Wackomeida

    Peter_Wackomeida

    Joined:
    Nov 17, 2016
    Posts:
    15
    This is exactly why I'm doing it this way. I knew what the code as doing, I knew I could emulate it, but I didn't think to actually do that. Thanks, that's what I'll do.
     
    TonyLi likes this.
  22. Peter_Wackomeida

    Peter_Wackomeida

    Joined:
    Nov 17, 2016
    Posts:
    15
    Here is the finished conversion. I'm glad I did it this way, it let me get a feel for how DCU works. I really like it.
     
    SI_007 and TonyLi like this.
  23. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Very nice! You made the little demo scene feel like a real VR game.
     
  24. SI_007

    SI_007

    Joined:
    Aug 10, 2015
    Posts:
    84
    This is awesome in terms of having created a DSU baseline with all the UI working. Congratulation!

    Is there any possibility of knowing which setting you used for the UI panel or perhaps having the package available through the DS website? I would pay gold for this, as I just can't seem to make the UI panel work correctly in VR.
     
  25. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    How may I help? The Dialogue System Extras page has two VR examples: one for SteamVR, another for Oculus. They both use world space canvases. The key, in general, is to use a world space canvas or a screen space - camera canvas. The specifics of actually selecting responses from a menu will depend on how you've implemented interaction in your VR project. (For example, the Oculus example uses the Oculus integration's laser pointer interactor.)

    I recommend world space canvas(es) for dialogue, and possibly a screen space - camera canvas for your quest HUD so it appears like a HUD overlay.
     
  26. SI_007

    SI_007

    Joined:
    Aug 10, 2015
    Posts:
    84
    Hi Tony, and thank you very much for your interest in assisting me. DSU has incredible features, and I have just started testing it, but one of the main issue is that the SteamVR example doesn't show how to implement a UI which follows you (or your hand) or gets repositioned at a specific location in world space (ex: Side or Above an NPC). My latest attempt, using VRIF & OpenXR with 2020.3, as been to break the DM prefab and separated the canvas gameobject so that it may be repositioned on my XR player controller. Is this how it should be implemented? I do not know (hence why an example like Peter-Futurus would be so useful).

    The triggering can also be somewhat nebulous when it comes to VR (ex: should I use "usable", the "selector", or just the "dialogue system trigger", should I select "mouse" instead of touch or fire 1?). Personally, I use a raycaster from my camera which looks at colliders on a specific layer (NPC). When there is a hit, it sets the game object as a GO variable. Then, if I press the A button (using VRIF input bridge) while the GO variable is not null, I trigger the "on use" within the "dialogue system trigger", and a conversation begins accordingly. Is this how it should be implemented? I do not know for sure, it *works*, but perhaps I am missing something important that I will only discover later on.

    I think it would be fantastic if there could be more certainty regarding the UI setup in VR. :)
     
  27. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @StudioIncorrect - There are so many different ways to present dialogue in VR that it's not really feasible to provide a single, definitive way of doing it.

    For VR, I recommend using your VR integration's interaction system instead of Usable and Selector. So continue to use VRIF to call the Dialogue System Trigger's OnUse() method. Usable and Selector are just provided as conveniences; it's not mandatory to use them.

    It's totally fine to put your dialogue UI(s) in a canvas that's not a child of the Dialogue Manager. If you want it to appear on your avatar's hand like Peter_Futurus's example, put it in a world space canvas that's a child of your VR player's hand.

    Another common approach is to position it in a static world space position relative to the player or NPC. You can use a Dialogue System Events component or OnConversationStart() method to position the UI canvas when a conversation starts. For example, to position it 1 unit in front of the player and 0.5 units to the left, you could add a script with a method like this to the player:

    Code (csharp):
    1. void OnConversationStart(Transform otherParticipant)
    2. {
    3.     Canvas dialogueCanvas = DialogueManager.standardDialogueUI.GetComponentInParent<Canvas>();    
    4.     Vector3 position = this.transform.forward + 0.5f * this.transform.left;
    5.     dialogueCanvas.transform.SetPositionAndRotation(position, this.transform.rotation);
    6. }
    You can also have your NPCs speak in overhead text bubbles if you like. See this forum post for steps.
     
  28. Peter_Wackomeida

    Peter_Wackomeida

    Joined:
    Nov 17, 2016
    Posts:
    15
    Sorry I missed your question. Tony has answered it pretty thoroughly, I'm also using VRIF and it's built in canvas system worked without me doing anything special. Everything listed above is good advice, sometimes you want HUD, hand, or near player canvases. All I did was add the canvas to my hand as a child to get it to work that way.

    When I start putting my own content into my game I plan to use real buttons near each character. I'll share that when I get far enough and prove to myself it works.
     
    TonyLi likes this.
  29. SI_007

    SI_007

    Joined:
    Aug 10, 2015
    Posts:
    84

    Thank you very much for your explanations, TonyLi and Peter_Futurus, their provide me with a better understanding of what can be achieved. I will definitely use your advices and experiment with my current setup. Once finalized, like Peter_Futurus, I would gladly share my setup so that new users can have another example on how to setup DSU for VR.

    Thanks! :)
     
    TonyLi likes this.
  30. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Quick Tip: How to write player monologues

    This post explains one way to write a player monologue that doesn't involve any other participants. By default, the Dialogue Manager's Input Settings > Always Force Response Menu checkbox is ticked. Whenever a conversation is at a point where there are only player choices, it will show those choices in a response menu --- however, if there is only one choice and Always Force Response Menu is unticked, it will skip the menu. If you tick Show PC Subtitles During Line, it will show the choice as a subtitle.

    If you don't want to tick Always Force Response Menu globally, you can override it for specific conversations:

    upload_2021-10-27_8-28-19.png

    Note: You can also use [f] (force menu) and [auto] (automatically play as subtitle) markup tags on individual dialogue entry nodes.

    Another way to show player-only monologues is to create a separate actor (e.g., "Narrator") whose Is Player checkbox is unticked. Then use this actor for the monologue. An advantage of this method is that you can set up a GameObject for this actor and add a Dialogue Actor component and/or Override Dialogue UI component to customize how its conversations appear.
     
  31. Kitsune_bcn

    Kitsune_bcn

    Joined:
    Jul 1, 2021
    Posts:
    16
    Thanks for the quick tip. To clarify, I posted asking how to make a player have an "inner" dialogue, but I deleted it 20 mins later (or so) thinking it was probably a stupid question and that I should investigate further. It seems that Tony read my post in that time, and wrote this small guide, wich is a pretty amazing level of support :)
     
    TonyLi likes this.
  32. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    GDC Vault Video: Disco Elysium: Meaningless Choices and Impractical Advice
    GDC Podcast 25: Player Agency, Politics, And Narrative Design In Disco Elysium


    The latest GDC podcast interviews Justin Keenan, one of the writers of ZA/UM Studio's Disco Elysium, which is made with the Dialogue System for Unity.

    Justin Keenan also did a presentation that's available on GDC Vault: Disco Elysium: Meaningless Choices and Impractical Advice. It has some nice screenshots of various node structures, which they give names such as whirls and rivers, that they created in articy:draft and imported into the Dialogue System. It also has some great tips on writing narrative agency.

    Both have some great insights into writing branching dialogue.
     
  33. aloneandsuffering101

    aloneandsuffering101

    Joined:
    Apr 21, 2018
    Posts:
    15
    Has anyone tried integrating this dialogue system wth HQ FPS Weapons template? If not can anyone give a starting point to do so?
     
  34. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
  35. Peter_Wackomeida

    Peter_Wackomeida

    Joined:
    Nov 17, 2016
    Posts:
    15
    I'm looking to change the position and rotation of objects. Not an animation just move to X and rotation to Y. I'm willing to write my own but I'm pretty sure DCU can do this but I don't know how to access it.
     
  36. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @Peter_Futurus - Use the MoveTo() sequencer command. Create a GameObject (empty is fine) at the desired position and rotation. Give it a unique name. Then specify it as the target. For example, to move the current dialogue entry's speaker to a GameObject named Doorway:

    MoveTo(Doorway)

    The speaker is implied if you don't specify it. You can specify the speaker and/or an optional duration over which to tween the movement:

    MoveTo(Doorway, Dog, 1)
     
  37. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Pixel Crushers Publisher Sale

    upload_2021-11-1_8-52-28.png

    All Pixel Crushers assets are 50% off in the Asset Store's Publisher Sale!

    You've seen the Dialogue System and other Pixel Crushers assets in award-winning games such as Disco Elysium, Suzerain, Jenny LeClue - Detectivu, and many many more.

    Free gift: During the sale, you can get Love/Hate absolutely free, no strings attached, with coupon code TOOLBOX.

    Excellent assets by Digital Ruby and Davit Naskidashvili are also in the Publisher Sale!
     
  38. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Dialogue System 2.2.22 Released

    Version 2.2.22 of the Dialogue System for Unity is now live on the Asset Store, and 50% off in the Publisher Sale!

    Includes improvements in the core engine as well as updated integrations for Adventure Creator, Celtx, Corgi Engine, Invector, Opsive Ultimate Inventory, PlayMaker, TopDown Engine, and more.

    Release Notes:
    Core:
    • Added: Sequencer.receivedMessage event hook.
    • Improved: Typewriter effects now have option to silence audio on pause codes and/or silent characters.
    • Improved: Added Entrytag Format > Custom option.
    • Improved: Optimized performance of saving quest states.
    • Improved: Added warmup option Don't Hide Immediate During Warmup to Dialogue Manager.
    • Improved: Lua wizards support custom field type drawers for actors, items, and locations.
    • Improved: Dialogue Editor saves any pending changes to disk when closing window or entering play mode.
    • Fixed: Dialogue Editor undo improvements to undo creating conversations and dialogue entries.
    • Fixed: Open quest log windows will now automatically update when quest states change even when not in Dialogue Manager's hierarchy.
    • Fixed: Standard UI Quest Log Window > Select First Quest On Open now works without requiring Show Details On Select.
    • Fixed: SetPanel() sequencer command can now override panel for Dialogue Actors on GameObjects that are activated after conversation start.
    • Fixed: Timeline Continue Conversation track can now show preview text without requiring Playable Director to be selected.
    • Fixed: Always Face Camera switches to new main camera if cached main camera reference is disabled.
    • Fixed: Voice() sequencer command audio bug; added option to specify layer and crossfade duration.
    • Fixed: Input Device Manager can now translate KeyCode.Return when using new Input System package.
    • Fixed: JLC import format can now handle sequences containing curly braces.
    • Fixed: Dragging multiple conversations in Dialogue Editor's Conversations Outline mode.
    • Fixed: UIPanel no longer deactivates GameObject on start if state is set to Closed but deactivateOnHidden is false.
    Third Party Support:
    • Adventure Creator: Updated to better handle ACSpeech() lipsync integration; fixed potential timing issue with PersistentEngine and AC Bridge initialization.
    • Celtx: Fixed issue importing [SEQ] blocks containing [square brackets]; added support for [COND] and [SCRIPT] blocks.
    • Corgi Engine: Now supports Character Persistence component on player GameObject.
    • Ink: Added C# event hook DialogueSystemInkIntegration.loadedStories; respects emphasis settings on dialogue database assigned to Dialogue Manager's Initial Database field; allows conversation-overriding sequencer commands such as SetTimeout() to work.
    • Invector: InvectorStatsSaver component now also saves stamina.
    • Opsive Ultimate Inventory System: Updated for UIS 1.2.
    • PlayMaker: Start Sequence action can now wait until sequencer receives specified message.
    • TopDown Engine: Now supports Character Persistence component on player GameObject.
     
  39. Peter_Wackomeida

    Peter_Wackomeida

    Joined:
    Nov 17, 2016
    Posts:
    15
    Thanks, that's working! Now that I know it can do tweens I'm looking for the syntax to rotate X and Z axes to zero but not Y. Is that a thing sequencer can do?
     
  40. Peter_Wackomeida

    Peter_Wackomeida

    Joined:
    Nov 17, 2016
    Posts:
    15
    Made a video to announce my game, gave a shout out to my favorite assets, DSU being one of them.
     
  41. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    The MoveTo() sequencer command matches all axes (X,Y,Z). If you can't know what Y will be ahead of time, you can write a custom sequencer command (tutorial). The easiest path for that would be to duplicate SequencerCommandMoveTo.cs and customize it to leave Y untouched.

    Thanks for the shout-out! :) Arcweave is on the roadmap for Dialogue System integration. I might just need to bump it up in priority after watching your video.

    Don't make it too easy to turn off the holodeck's safety protocols. I better brush up on my bat'leth skills just in case. ;)
     
  42. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Kickstarters of Dialogue System Games - SPACE CHEF, GRUNND

    Check out active Kickstarter campaigns for two Dialogue System-powered games:

    Kickstarter: SPACE CHEF - An action/cooking adventure for PC and consoles



    GRUNND: A beautiful and surreal adventure game


    There's still time to back either or both!

    There's a long history of successful Kickstarter campaigns for games that use the Dialogue System, including Ova Magica, The Way of Wrath, Plot of the Druid, and many more.

    Reminder: The Dialogue System for Unity -- and all Pixel Crushers assets -- are 50% off in the Asset Store's Publisher Sale.
     
  43. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Dialogue System Games Newly On Nintendo Switch

    Joining a long list of Dialogue System-powered games on Nintendo Switch, several games that use the Dialogue System were recently released for the Switch, including:

    Disco Elysium - The Final Cut


    Suzerain


    Other games that use the Dialogue System on Switch include Jenny LeClue, Black Book, Crossing Souls, and many many more.

    Reminder: The Dialogue System for Unity -- and all Pixel Crushers assets -- are 50% off in the Asset Store's Publisher Sale.
     
  44. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Kickstarter Reminders - SPACE CHEF, GRUNND

    Several Kickstarters for games using the Dialogue System are running right now, including Space Chef and GRUNND. GRUNND is doing great, and Space Chef just surpassed 200% funding (!) and is reaching some great stretch goals. There's still time to back them if you're interested in these games.

    GRUNND on Kickstarter
    GRUNND is a 100% handcrafted, fully voiced side-scrolling point and click adventure game, where your choices matter. It is a fusion between mystery and Sci-Fi. You will travel to a seemingly ordinary place that slowly introduces itself as a surreal and twisted world full of its own invisible gods, agendas, and order.

    SPACE CHEF on Kickstarter
    Space Chef is an open-world, erm... open-galaxy game combining fun cooking, crazy crafting, gun blasting action and anything but your usual farming. Explore a vast procedurally generated universe that is different each playthrough. Meet and interact with interesting humans and aliens. Best of all, bring your friends on delicious adventures with up to four player couch co-op. Coming to PC and all major consoles.
     
  45. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Lake Earns Multiple Dev GAMM Nominations

    Congratulations on Gamious on two Dev GAMM nominations for Lake: Excellence in Narrative and the Grand Prize!

    Lake is a chill mail delivery narrative game made with the Dialogue System for Unity. It's available on Steam, Xbox, and PlayStation.





    Reminder: The Dialogue System for Unity -- and all Pixel Crushers assets -- are 50% off in the Asset Store's Publisher Sale.
     
  46. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Last Chance: Pixel Crushers Publisher Sale Ends Today

    The Asset Store's Publisher Sale ends today. The Dialogue System for Unity -- and all Pixel Crushers assets -- are 50% off until midnight PST. You can also get great discounts on fantastic assets by Digital Ruby and Davit Naskidashvili.



    Reminder - 3 Free Gifts: The three of us publishers are each giving away a free gift, no purchase necessary. To get Love/Hate, Fingers, and Resize Pro, add them to your cart and use coupon code TOOLBOX at checkbox. Remember to use the coupon code to get them for free!
     
  47. Peter_Wackomeida

    Peter_Wackomeida

    Joined:
    Nov 17, 2016
    Posts:
    15
    My game will be exploring 13 sectors of space where each sector acts kinda like an episode of a tv show. Occasionally you'll need to get items from one sector to progress in another. Each sector is a separate unity scene and my plan is to have one DSU manager for all scenes but I want to ask advice to make sure that's the expected way to do it.

    There is heavy use of audio dialogue and choice trees so the final manager will be doing a lot this way.
     
  48. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi Peter - Yes, let your Dialogue Manager GameObject survive scene changes, which is its default behavior. You can still put a separate Dialogue Manager GameObject in each scene for quick testing of the scene in the editor. Just keep in mind that, when you change scenes, the Dialogue Manager from the previous scene will survive the scene change and supplant the one in the newly-loaded scene. If you save your customized Dialogue Manager as a prefab or prefab variant, you can drop an instance in each scene.

    Remember that you can organize your content, such as conversation titles, using forward slashes to group them into submenus. For example:
    • Companions/Marvin Side Comments
    • Companions/Chewy Battle Barks
    • Sector Alpha/Station 13/Docking Control
    • Sector Alpha/Station 13/Gahg Merchant
    • Sector Alpha/Pirates/Initial Threat
    • Sector Beta/Risa/Welcome Desk
    • etc....
     
  49. Peter_Wackomeida

    Peter_Wackomeida

    Joined:
    Nov 17, 2016
    Posts:
    15
  50. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Singles Day Sale + Kickstarters for Dialogue System Games

    Regional Singles Day Sale (available in select regions)


    It's Singles Day! This is a regional sale in Japan, Korea, China, Taiwan, Macao, Hong Hong, Singapore, Malaysia, Indonesia, Thailand, Philippines, and Vietnam, and the Dialogue System, Quest Machine, and Love/Hate are all 50% off in those regions.



    Kickstarter Alert: Space Chef

    Space Chef, made with the Dialogue System and Quest Machine, is an open world sci-fi cooking, crafting, action game that's already blown past 200% funding on Kickstarter and is eating up stretch goals. If you're interested in backing it, you can help them reach the next stretch goal: companion pets!




    Kickstarter Alert: GRUNND

    If David Lynch-style noir adventures are more your style, check out GRUNND, made with the Dialogue System for Unity. The demo is available now to download on Steam and itch.io. They're well on their way to full funding. If this is your type of game, check it out.