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

    --Studio ZA/UM, developer of 2019 Game of the Year Disco Elysium,
    made with the Dialogue System for Unity​

    The Dialogue System is a proven, complete solution for interactive conversations, designed from the ground up with a polished user interface system, cutscene sequences (camera shots, animation, etc.), node-based visual conversation editor, dynamic state, and more, with easy integration into your existing gameplay framework.

    You can find the Dialogue System in RPGs, adventure games, shooters, visual novels, and many other genres. In business and industry, the Dialogue System features in corporate training applications, procedural law simulations, and other serious games.




    $f01 Editor.jpg

    $f02 UIs.jpg

    $f03 Cutscenes.jpg

    $f04 2D and 3D and more.jpg

    Requires Unity 4.6.5 or higher.

    Ultra-Quick Start

    Features:
    Editor:
    • Visual, node-based editor
    • Optional compact outline-based editor perfect for large conversations
    • Edit-time conversation player for quick testing
    • Importers for Chat Mapper, articy:draft, Arcweave, Celtx, Twine, Ink, CSV, and Neverwinter Nights
    • Built-in localization support, or use Unity Localization package or i2 Localization
    Engine:
    • No scripting required
    • Dynamic, branching conversation trees
    • Barks and gameplay alerts
    • Cutscenes (voice acting, audio, animation, camerawork, etc.)
    • Quick Time Events (QTEs)
    • Quest system
    • NPC status relationship system
    • Easy language localization
    • Save/load without scripting
    • Optional Lua scripting and variable system supports sophisticated dialogue conditions
    • Comprehensive documentation and tutorials
    Runtime UIs:
    • GUI-independent; works with all GUI systems
    • Built-in support for the Unity UI, Unity GUI, NGUI, TextMesh Pro, and others
    • Modular interfaces: swap in your own UI or cutscene system
    • Several beautiful, fully-customizable UI skins
    • Detailed sci-fi environment & animated model
    • Works in 2D, 3D, VR, and AR
    Integration:
    Provides general-purpose integration components for any framework, plus custom components for drop-in integration into:
    • Cinemachine & Timeline
    • Action-RPG Starter Kit
    • Adventure Creator
    • AI Tree
    • Arcweave
    • articy:draft
    • Bolt
    • Celtx
    • FMOD
    • ICode
    • Animator Timeline Editor
    • Behavior Designer
    • Core GameKit
    • Corgi Platformer Engine
    • Customizable Sci-fi Holo Interface
    • Easy Save
    • Emerald AI
    • FaceFX
    • Feel
    • KGFMapSystem
    • Lively Chat Bubbles
    • Look Animator
    • Love/Hate
    • I2 Localization
    • Ink
    • Inventory Engine
    • Inventory Pro
    • Localization Package
    • Master Audio
    • Now We're Talking
    • Opsive Ultimate Character Controllers
    • Opsive Ultimate Inventory System
    • ORK Framework
    • PlayMaker
    • plyGame
    • Quest Machine
    • RPG Builder
    • Realistic FPS Prefab
    • RelationsInspector
    • Rogo LipSync
    • RPG Kit
    • RT-Voice
    • SALSA with RandomEyes
    • S-Inventory
    • SLATE Cinematic Sequencer
    • SoulLink
    • Speech Recognition System
    • Super Text Mesh
    • Opsive Character Controllers
    • Opsive Ultimate Inventory System
    • Text Animator
    • Top-Down RPG Starter Kit
    • Twine
    • Ultimate Notification System
    • uMMORPG
    • uRPG
    • uSurvival
    • uSequencer Cutscene Creator
    • Visual Scripting
    • Yarn Spinner
    • Wwise
    For Programmers:
    • Includes complete, thoroughly documented & optimized C# source code
    • Designed to be easily extended without modifying source -- lots of event hooks!
    • Full API reference
    Tested on standalone, web, mobile, and consoles.

    Links:

    Change History:
    Version 2.2.43:

    Core:
    • Improved: Added DialogueManager.HideAllAlerts().
    • Improved: Added utility method DialogueManager.GetConversationTitle(id).
    • Improved: Moved actor name prepending to StandardUISubtitlePanel for compatibility with ConversationControl.SkipAll() when subtitle panel's Add Actor Name is ticked.
    • Improved: AudioWait[Once]() now accounts for time scaled and pitch altered audio clip durations.
    • Improved: Added CharacterInfo.GetField(), GetField[type]() utility methods.
    • Improved: Added ConversationControl > Don't Skip All On Last Conversation Line.
    • Improved: Exposed PersistentDataManager.AppendSimStatus(StringBuilder, and ExpandCompressedSimStatusData().
    • Improved: Text Table Editor now has gear menu > Import > From Localize UI menu feature.
    • Improved: Added editor event hook DialogueEditorWindow.customDrawConversationInspector.
    • Fixed: Subtitle panel Visibility options 'Until Superceded Or Actor Change' and 'Until Superceded Or Actor Change Or Response Menu' were not being superceded.
    • Fixed: OverrideDialogueUI now correctly observes Don't Destroy Prefab Instance.
    • Fixed: Bug in SMSDialogueUI returning to conversation when first entry is assigned to player menu and no menu choices were made when conversation was exited.
    • Fixed: Possible NullReferenceException in ConversationView.NotifyParticipantsOnConversationLineEnd.
    • Fixed: BarkController now exclude rich text and control codes from {{end}} value.
    • Fixed: SetLocalizedFonts now listens for UILocalizationManager.languageChanged events.
    • Fixed: Implemented workaround for TMPro bug incorrectly updating mesh when changing languages and font in LocalizeUI component.
    • Renamed "Alocai" to "Altagram" in Localization Export/Import dropdown.
    • Timeline: Removed "variable 'audioClip' is declared but never used" warning in PreviewUI.cs.
    Third Party Support:
    • Adventure Creator: Can pass parameter narrator to ACSpeech() to speak through narrator.
    • Arcweave: Added options to import extra dialogue entry fields, "Portrait #" fields for extra portraits.
    • articy:draft: Added support for Articy X (voiceover addon support still in progress); ArticyConverter class's methods are now virtual and overridable; Added "Include Feature Name" checkbox to prepend feature name to properties that are imported as custom fields.
    • Emerald AI 2024: Added integration for new Emerald AI 2024 version.
    • i2 Localization: Updated for API changes in i2 Localization 2.8.22f4.
    • Ink: Added BarkInkOnIdle component; can now use => in {Sequence(...)} commands instead of -> which Ink doesn't allow; fixed InkEntrypoint.FromString() parsing bug.
    • Invector character controllers: Updated for 2.6.4.
    • RPG Builder: Now hides alerts (if visible) when returning to main menu.
    • Twine: Fixed import issue when database has more than one player actor involved in a conversation.
    Version 2.2.42:
    Core:
    • Added: GotoEntry() sequencer command.
    • Improved: When exporting localization spreadsheets, can now specify entry sort order.
    • Improved: Added subtitle panel visibility option Until Superceded Or Actor Change Or Menu.
    • Improved: Bark On Idle now has Bark On Start and Bark On Enable options.
    • Improved: If conversation state has no NPC entries and exactly one PC response that's blank, it autoplays instead of appearing as blank response menu button.
    • Improved: Dialogue System Trigger > Bark can now specify a dialogue entry.
    • Improved: Dialogue System Trigger initialization optimizations.
    • Improved: Added Text Table Mass Export window.
    • Improved: Sequencer shortcuts can be grouped into user-specified submenus.
    • Improved: Added UILocalizationManager.languageChanged event.
    • Improved: When language changes, Dialogue Manager's Display Settings > Localization Settings > Language inspector field reflects change.
    • Improved: When language changes, active conversations' text is now updated to new language.
    • Fixed: Standard UI Menu Panel could ignore block input duration under certain circumstances.
    • Fixed: Standard UI Subtitle Panel > Max Lines now retains rich text codes from lines that it prunes.
    • Fixed: Now gracefully handles error if database has corrupt conversation.
    • Fixed: ConversationHasValidEntry() no longer runs Script fields on group nodes.
    • Fixed: DialogueLua.SetConversationField() threw error.
    • Fixed: TextMeshProTypewriterEffect no longer reports error when first dialogue entry hides dialogue UI.
    • Fixed: Add New Quest Entry Field now checks that field title is not blank.
    • Fixed: Sequences now allow whitespace before '@'.
    • Fixed: When response menu used Block Input Duration, it wouldn't show current response selection as selected even though it was correctly selected.
    • Fixed: Display settings changes (e.g., continue button mode) during conversations when Allow Simultaneous Conversations is ticked and only one conversation is currently active.
    • Fixed: Typo in ConversationStateSaver that caused extra panels to not be reopened.
    • Fixed: Dialogue Editor text on nodes shows basic Menu Text/Dialogue Text, not localized version if Localization.language has been set.
    • Fixed: If Usable GameObject uses a StandardUsableUI and Usable Name changes, name change is reflected in StandardUsableUI.
    • Fixed: When reordering nodes with Depth First option unticked, now reorders breadth first instead of depth first.
    • Save System: Added Max Save Slot option. By default, negative slot numbers will save in first available positive slot number up to Max Save Slot.
    Third Party Support:
    • Adventure Creator: Updated RememberDialogueSystem for AC 1.79.
    • Corgi Platformer Engine: Updated example scene for Corgi 8.7.
    • FMOD: Fixed order of cleanup at end of FMODWait().
    • Odin Inspector: Disabled drawing of HelpBoxes in custom inspectors until stack overflow bug in Odin is fixed.
    • Playmaker: Can now specify conversation starting entry by title.
    • Yarn 2: Fixed issue parsing sequences with "->Message()" syntax.

    Older Release Notes

    Please post any feedback here or email support (at) pixelcrushers (dot) com.
     

    Attached Files:

    Last edited: Feb 18, 2024
  2. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Thank you to everyone who's picked up a copy of the Dialogue System for Unity already! Please don't hesitate to email or PM me with any questions or suggestions for the development roadmap.

    I haven't received any requests for Chat Mapper discount codes. Perhaps the notice was tucked too deep in the original post. As a reminder:

    Through April 2014, email me your invoice number for a 10% discount code good for any single Chat Mapper license!
     
    SamRock likes this.
  3. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Version 1.0.6 was just submitted to the Asset Store!

    New Features:
    • NGUI 3.x support.
    • Additional cutscene sequence commands for controlling Mecanim characters.

    Other Notes:
    • If you're using Urban Brain Studios' Chat Mapper versions 1.6.0 - 1.6.1.0, please upgrade to version 1.6.1.1 to fix an XML export bug.
    • Chat Mapper 1.6.x introduces several great new features, including data validation. Unfortunately this means the Dialogue System can no longer repurpose the built-in Video File field for cutscene sequences. The Dialogue System now uses a custom field named Sequence. See the 1.0.6 Release Notes for more details.
     
  4. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Version 1.0.7 was submitted to the Asset Store!

    Changes:
    • Fixed a conversion error with Chat Mapper 1.6 group nodes.
    • Fixed a bug with Dialog[].SimStatus conditions.
     
  5. TheNorthridge

    TheNorthridge

    Joined:
    Jan 4, 2012
    Posts:
    193
    Do you know if this is works with Realistic FPS Prefab?

    If it did, you'd save me a great deal of time :)
     
  6. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    I don't see why not. I built it for a first/third-person Mass Effect style project. But I'll confirm and let you know soon!
     
  7. TheNorthridge

    TheNorthridge

    Joined:
    Jan 4, 2012
    Posts:
    193
  8. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    The Dialogue System for Unity works fine with Realistic FPS Prefab. Here's a proof of concept that took all of 5-10 minutes: http://pixelcrushers.com/dialogue_system/demos/realistic_fps/. (Sorry it's a 35 MB load; the sample scene that comes with the Realistic FPS Prefab is kind of big.)

    If you run up to the first robot on the path, it will automatically start a conversation.

    You'll probably want to pause the FPS action during conversations. You can use the Set Enabled On Dialogue Event component to disable FPS components when the conversation starts and re-enable them when the conversation ends. The included demo scene does this with a simple third-person controller. That's just one way, of course. It's really up to you how you want it to work. And I'm here if you need assistance to get it working just the way you want.

    More-detailed video tutorials are coming over the next few days, too.
     
  9. TheNorthridge

    TheNorthridge

    Joined:
    Jan 4, 2012
    Posts:
    193
    Hi Tony,

    Demo works great for a first try :)

    How well does the Quest System work?

    Cant wait to get my hands on this tool :)

    -Sean
     
  10. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi Sean,
    The quest system is complete and will also be getting additional features in an upcoming release.

    Please feel free to peruse the quest system documentation at: http://www.pixelcrushers.com/dialogue_system/manual/html/quest_log_system.html

    And try out the quest logs in the Sci Fi and Fantasy demos. The source Chat Mapper project for the Fantasy demo is on the demo page. You can look through it in Chat Mapper to see how the quests were written.
     
  11. TheNorthridge

    TheNorthridge

    Joined:
    Jan 4, 2012
    Posts:
    193
    Hi Tony,

    Sorry, I mean as in, how well does the Quest System work in the FPS Prefab? :p

    Its vital it works, as it'll be the main source of missions, where in exploring the city, you pick up quests, complete them, and gain rewards from them.

    It will also drive the story forward.

    -Sean
     
  12. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    I'll put together a proof of concept using the Realistic FPS Prefab tomorrow morning and post the link here.
     
  13. TheNorthridge

    TheNorthridge

    Joined:
    Jan 4, 2012
    Posts:
    193
    Cool Thanks for the Help :)

    Remind me to send you a pack of cookies :p

    Now to learn and relearn the Dialogue instructions!
     
  14. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    I just used the same link: http://www.pixelcrushers.com/dialogue_system/demos/realistic_fps/

    $Realistic FPS Demo small.png

    I added a quest. The Esc key brings up a main menu borrowed from the feature demo, from which you can view the quest log.

    I used the Set Enabled On Dialogue Event component to "pause" the FPS action during conversations.

    I also wrote two very short scripts to give the Dialogue System access to the internal state of the FPS scene.

    This script removes a weapon when you give it away during dialogue (called by a sequencer command in the dialogue):

    Code (csharp):
    1. public class AddRemoveWeapon : MonoBehaviour {
    2.    
    3.     public WeaponBehavior weapon;
    4.    
    5.     public void RemoveWeapon() {
    6.         weapon.haveWeapon = false;
    7.         weapon.gameObject.SetActive(false);
    8.     }
    9.  
    10. }
    This script is used to tell the Dialogue System that you've picked up an item:

    Code (csharp):
    1. public class LuaOnPickUpItem : MonoBehaviour {
    2.    
    3.     public string luaCode;
    4.    
    5.     public void PickUpItem() {
    6.         Lua.Run(luaCode);
    7.     }
    8.  
    9. }
     
  15. TheNorthridge

    TheNorthridge

    Joined:
    Jan 4, 2012
    Posts:
    193
    Are you a Wizard? lol

    I love it. Thanks :)

    Cant wait to try this out on Monday :)
     
    SamRock likes this.
  16. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Great! Let me know if you have any questions. I'm always happy to help!
     
  17. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    I just posted an integration package for the Realistic FPS Prefab to the customer download section of our website. (The prerequisites are the Dialogue System and Azuline Studios' Realistic FPS Prefab.)

    If you've purchased the Dialogue System for Unity and would like access to the download section or the promotional 10% discount code we've arranged with Urban Brain Studios (the makers of Chat Mapper), please contact me with your invoice number!
     
  18. jeremiasz

    jeremiasz

    Joined:
    Feb 17, 2013
    Posts:
    53
    1. Is Daikon Forge GUI supported? It's much faster and easier then NGUI :)
    2. About save game functionality, if I have Dialogue System do I still need tools such as "Easy Save 2"?
    3. Does Chat Mapper need its own license?
    4. What about localisation options?
     
  19. RayWolf

    RayWolf

    Joined:
    Mar 24, 2012
    Posts:
    87
    I know chat mapper needs its own license. Its worth it tho..imho best tool for composing multiple choice dialogues out there. The best is, you can TEST the dialogues directly in chat mapper until they do what you want. When you dont go for multiple choice stuff you dont need chat mapper I think.
     
  20. Original-Big-Dan

    Original-Big-Dan

    Joined:
    Feb 5, 2013
    Posts:
    10
    Hallo! Interesting looking package!

    Do you guys support or look to support Articy Draft .xml export in the future?
     
  21. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi All,

    Yes, with this note: The Dialogue System's modular design lets you use any GUI system. Drop in any script that implements the interface IDialogueUI, and the Dialogue System will work fine with it.

    Out of the box, it currently provides Unity GUI and NGUI implementations. I'll see if I can get an implementation for Daikon Forge GUI into the next version. If you're in a hurry, you can implement IDialogueUI yourself for Daikon. All source code is included, so you could look at the other implementations to see how they were done.


    It depends on your needs. The most robust solution would be to use both, which is very easy to do, but may be overkill. I've done complete projects with just the Dialogue System's save/load feature.

    The Dialogue System doesn't automatically save to the web, nor does it encrypt, which are features of Easy Save 2. Here's how it works:

    The Dialogue System includes a complete Lua environment. All dialogue information (quest status, what dialogue nodes have already been spoken, etc.) is stored in this environment. You have direct access to this environment, which gives you powerful control over dialogue activity, such as the ability to set complex conditions on dialogue nodes or dynamically change text.

    You can add "persistent data" components to your game objects that automatically save and load other data such as character position, whether the object is active or inactive, etc. These components read and write this data into the Lua environment. The Dialogue System also includes a template to easily create your own custom persistent data components.

    To save a game, the Dialogue System serializes the Lua environment data into a string. It can read/write this automatically to PlayerPrefs, or you can do whatever else you want with it (write it to a file, tell Easy Save 2 to save it, etc.)


    Yes, as RayWolf put very well, Urban Brain Studios' Chat Mapper is a separate license. But we have a promotion set up. Customers of the Dialogue System get a 10% discount code on Chat Mapper. Just PM or email us your invoice number and I'll send you the discount code and the private customer download page where you can download pre-release versions before they're available on the Asset Store.

    You can also use the built-in editor that comes with the Dialogue System.

    I chose to focus first on Chat Mapper over other products such as articy:draft because it's been around longer and, for dialogue, it's more robust with a better data structure. It lets you make very complex conversations, and the Dialogue System translates all of that into Unity. It's also available at a better price point for indie developers than similar products.


    [Edit: Forgot to respond about localization.]
    Good timing! I just finished implementing localization. It'll be in the next version submitted to the Asset Store.

    Chat Mapper also inherently supports localization.


    Yes! I'm finishing up the articy:draft importer and a Twine importer, both of which should make it into the version after next.

    (Twine, which is free, isn't nearly as expressive or full-featured, but it can get the job done.)
     
    Last edited: Oct 24, 2013
  22. jeremiasz

    jeremiasz

    Joined:
    Feb 17, 2013
    Posts:
    53
    I really appreciate your reply! The next version seems to be the more and more interesting. Discount on the Chat Mapper is a good move. I would choose Dialogue Systems only beacause of Playmaker support :)
     
  23. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Glad to hear it! I know of at least one customer using the PlayMaker actions for the Dialogue System extensively. If you have any requests for additional PlayMaker actions, just let me know!
     
  24. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Version 1.0.9 has been submitted to the Asset Store. It adds support for localization and Daikon Forge GUI, among other features.

    If you've bought the Dialogue System and want to download 1.0.9 right away, contact me with your invoice number for access to the customer download page.

    Version 1.0.7 is live on the Asset Store. The additional features in 1.0.9 are:

    Version 1.0.9:
    • New: Localization support.
    • New: Daikon Forge Dialogue UI support.
    • New: Added Show Cursor On Conversation component.
    • New: Added sequence command Fade().
    • New: Added Once property to triggers for one-time triggers.
    • New: Added integration support for Azuline Studios' Realistic FPS Prefab.
    • New: Added integration support for VisionPunk's Ultimate FPS (UFPS).
    • Improvement: In Chat Mapper Converter, overwriting retains references, so you don't need to reassign the database in Dialogue Manager.
    • Improvement: Minor visual improvements to some of the Unity GUI dialogue UIs.

    Version 1.0.8
    • New: Added Unity Dialogue UI "Nuke".
    • Improvement: General improvements to dialogue database editor.
     
  25. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Version 1.0.9 is live on the Asset Store. I'm wrapping up version 1.1.0, which will provide several enhancements, including:

    • articy:draft import
    • 2D Toolkit UI support
    • More integration features with Ultimate FPS and Realistic FPS Prefab
    • New fantasy and sci-fi themed UIs (preview of one below)
    • and more!

    Stanislav Botev recently designed the graphics for a new sci-fi themed UI. Here's a preview of how it looks:

    $UI.PNG

    Also, a new video tutorial for creating your own custom UIs, featuring a new fantasy-themed UI, is on the Tutorials page.

    Reminder - If you've purchased the Dialogue System, send me your invoice number for access to the pre-release download page and a 10% discount code for Chat Mapper.
     
    SamRock likes this.
  26. TheNorthridge

    TheNorthridge

    Joined:
    Jan 4, 2012
    Posts:
    193
    That's one Sexy UI :p
     
  27. TopThreat

    TopThreat

    Joined:
    Aug 7, 2012
    Posts:
    136
    Can you accept user input.

    Example:

    NPC: Hi, I need to write down your name
    Player: My name is [Player enters text]
    NPC: Ok, Is this spelling correct [shows the text that the player entered]

    Thanks,

    Kellie
     
  28. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    You sure can, but currently you'll need to write a little code to do it. The UI system is modular. It's designed to be easily extended to handle additional GUI systems and additional UI features such as input boxes by implementing a simple interface.

    The cutscene sequencer is modular, too. Each line of dialogue can play a sequence, which is useful for more than just "cutscene" stuff like camerawork and animation. It can activate game objects, enable scripts, send messages to other objects, etc. You can write new sequence commands using a simple template. Then you can drop them into the Dialogue System and use them in any line of dialogue. In the "NPC: Hi, I need to write down your name" line, you could add a sequence command that displays an input box and saves the value to a Lua variable.

    Displaying the text in the "NPC: Ok, Is this spelling correct [shows the text that the player entered]" line is easy. You'd just set the line to something like:

    NPC: Ok, Is this spelling correct [lua(Variable["Name"])]

    The Dialogue System will automatically replace the tag above with the value of the Lua variable.

    I'll also add this feature to the roadmap for version 1.1.1.
     
  29. TopThreat

    TopThreat

    Joined:
    Aug 7, 2012
    Posts:
    136
    "You can write new sequence commands using a simple template. Then you can drop them into the Dialogue System and use them in any line of dialogue. In the "NPC: Hi, I need to write down your name" line, you could add a sequence command that displays an input box and saves the value to a Lua variable."

    Oh! This is something I overlooked. I will move forward with the purchase this evening and start converting my project over. I was not sure about how I would handle certain events such as turning off my HUD when the conversation starts, or other events such as creating objects, adding icons to my mini map etc based on conversations. But if I understand you correctly this could be handled via the sequence portions of the dial

    Thanks!

    Kellie
     
  30. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Yes, that's correct. And you can also use Trigger components such as "Set Enabled On Dialogue Event". The Realistic FPS Prefab integration example, for instance, uses this to disable the shooter gameplay and HUD during conversations.

    When you purchase, feel free to PM me your invoice number for access to the customer download page on our website and a 10% discount code for Chat Mapper. Chat Mapper isn't required (since you can use the built-in editor), but it's a really good dialogue-writing tool.
     
  31. jeremiasz

    jeremiasz

    Joined:
    Feb 17, 2013
    Posts:
    53
    Can't it be done with Playmaker?
     
  32. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Yes, but again it's a matter of deciding how you want to hook it into the Dialogue System.

    Also, if you have any requests for additional PlayMaker actions for the Dialogue System (there are 22 currently) -- or any other ideas or feature requests, please let me know!
     
  33. dreamlarp

    dreamlarp

    Joined:
    Apr 22, 2011
    Posts:
    854
    Wow awesome. And More integration features with Ultimate FPS.
     
  34. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Ultimate FPS integration features in 1.1.0 include:
    • Interactable NPCs (derived from vp_Interactable) that you can start conversations with or initiate barks.
    • Pausing FPS gameplay during conversations.
    • Checking and/or changing health and inventory during conversations.
    • Saving and loading position, health, and inventory.
    Let me know if you'd like any additional bridges between Ultimate FPS and the Dialogue System, and I'll put them on the roadmap!
     
  35. dreamlarp

    dreamlarp

    Joined:
    Apr 22, 2011
    Posts:
    854
    Can you add a video tutorial when you can for Ultimate FPS and playmaker please.
     
  36. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Absolutely. I just added them to my "To Do" list. I'll post an update in this thread when they're online. I'm in a big push to get version 1.1.0 complete and through QA right now. As soon as it's out the door, I'll get to work on those videos.
     
  37. dreamlarp

    dreamlarp

    Joined:
    Apr 22, 2011
    Posts:
    854
    Ok I broke down and bought it after watching all your video's. The Ultimate FPS demo scenes are just what I was looking for. I cant wait for your video tutorials on using those.


    Edit:
    I have looked this over a few times and I think I can use this for a shop system also. Since we can:
    Checking and/or changing health and inventory during conversations.
    Saving and loading position, health, and inventory.

    As I understand the system I can have the npc sell, buy remove items from the players inventory and add to it, take money and even save it all.
    I will wait to see your tutorials using UFPS and this kit and also playmaker and this kit.
     
    Last edited: Nov 9, 2013
  38. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Great! If you have any questions or requests for additional integration features, just let me know!

    You'll want to download the 1.0.9a pre-release integration files from the private customer page. I'll send you a PM with access information. 1.0.9a introduces these changes:

    - FPPersistent Player Data (was FPPersistent Position Data): Now records the player's health and inventory, in addition to position.

    - FPSync Lua Player On Conversation (was FPSync Lua Inventory On Conversation: Synchronizes the player's health and inventory in UFPS with the inventory in the Dialogue System's Lua environment so conversations can check and manipulate it.
    - The player's health is in Actor["Player"].Health.
    - The player's inventory is in Variable["1Pistol"], Variable["2Revolver"], etc. for all weapons defined in the player's vp_SimpleInventory. If the value is 0, the player does not have the item. If the value is 1, the player has the item. If you set a value during a conversation, the change will be reflected in the UFPS player at the end of the conversation.

    Delete the Third Party Integration/UFPS folder from your project and import the 1.0.9a package instead.

    That's correct, although you'd have to set up your own shop UI unless you did it in a conversation format. If you're using Unity GUI, you can use the WYSIWYG system that comes with the Dialogue System. It isn't exclusive to conversations; you can use it for all of your GUI needs. You can also define a variable in your dialogue database such as "Credits", "Dollars", or "Gold Pieces" and update its value whenever the player buys or sells.

    Currently in 1.0.9a you can only give or take weapons, but in the 1.1.0 release you'll be able to give and take ammo, too.
     
    Last edited: Nov 9, 2013
  39. Silly_Rollo

    Silly_Rollo

    Joined:
    Dec 21, 2012
    Posts:
    501
    I'm very impressed with your documentation. Having a complete set of written docs is way better than just relying on videos. Since you are reading LUA and XML files for the dialogue system have you thought of expanding it to read more data by default? Item, npc data, etc. I don't have any experience with Articy draft but I know it supports setting up all sorts of world data and it would be cool to see a slick solution to pulling all of that into Unity simply.
     
  40. daisySa

    daisySa

    Joined:
    Dec 29, 2011
    Posts:
    341
    Just started playing with this, it’s really nice. A few points:

    1. I’m getting this error when importing UFPS support - is this fixed in 1.0.9a? I can forward you my invoice if necessary.

    Assets/Dialogue System/Third Party Support/UFPS/Scripts/FPSyncLuaInventoryOnConversation.cs(29,111): error CS1061: Type `vp_SimpleInventory' does not contain a definition for `Weapons' and no extension method `Weapons' of type `vp_SimpleInventory' could be found (are you missing a using directive or an assembly reference?)


    2. Can you include all the example scenes (from your website) in the package please? I can only find the main demo (apart from the bark and Lua demos).

    3. You should really make it clear on the Asset Store page that the wheel format is owned by Bioware and cannot be used. It wouldn’t have changed my purchase decision, but you really should place that kind of information upfront rather than in a readme.txt in the product itself. Apologies if you've already done that somewhere and I missed it.

    All in all though, it looks great - especially with the Daikin Forge and UFPS support.
     
  41. dreamlarp

    dreamlarp

    Joined:
    Apr 22, 2011
    Posts:
    854
    Thank you very much for this. I will have to read up on the WYSIWYG system. Those video tutorials will help a lot too. Will the variables defined in the database values be saved also?

    Oh it would be great if you could add a function to work with mysql. One we could enter our web link and it would save the data to our DB.

    Oh forgot to ask. Would the variable be global that I add for currency? Like could I use it for pickups drops or just rewards for a kill?
     
    Last edited: Nov 10, 2013
  42. daisySa

    daisySa

    Joined:
    Dec 29, 2011
    Posts:
    341
    Tony, many thanks for the quick reply to my PM. I'm still on UFPS 1.4.4, so that explains why I'm getting that message after importing UFPS support.
     
  43. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    It already does, at least to the degree that it applies to the Dialogue System's design goals. articy:draft and Chat Mapper both support all kinds of world data. articy handles data more generically, which has its advantages and disadvantages. Chat Mapper is designed more clearly toward NPC interaction, so you start with more structure, and the path to writing conversations is clearer.

    The Dialogue System follows the Chat Mapper model (although articy support has been implemented and should be in the next release). The basic data entities are Actors, Items, Locations, Variables, and Conversations. But in Chat Mapper and the Dialogue System's built-in editor, you can add new data fields to any of those entities, either directly in each entity or globally in templates. For example, the Ultimate FPS and Realistic FPS support scripts add data fields for inventory and character stats.


    Please make sure you're using the latest version of UFPS and 1.0.9a of the Dialogue System package for UFPS. (I sent you the download page directly.) It's been tested with UFPS 1.4.5 and 1.4.6b. Delete the Third Party Support/UFPS folder before re-importing the 1.0.9a package. If that doesn't do it, please let me know what versions of Unity and UFPS you're using.

    The demo scenes on the website are just there to demonstrate a little of what's possible with the Dialogue System. Unfortunately, they use third party art assets so I can't redistribute them. I'm sorry that wasn't clear. I'll update the website to clarify. If you have any questions about how anything in the demos was done, I'm happy to explain and provide the parts that I can legally redistribute such as the Chat Mapper projects.

    No, you didn't miss anything. I debated including a mention at all, since it's really a pedantic point. Technically, what they patented is:

    See: http://www.google.com/patents/US8082499

    It isn't so much the wheel shape as the idea that you have multiple choices, and the types of choices (good, evil, etc.) use roughly the same positions on the screen. That's a very general idea that pretty much every game with conversations uses. I should probably just get rid of the note to prevent confusion or worry.

    Thanks! If you have any other questions or requests for new features, just let me know!
     
    Last edited: Nov 10, 2013
  44. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    There's a video tutorial for the Unity GUI WYSIWYG system on the website. It's not as full-featured as a dedicated GUI product like Daikon Forge or NGUI, but I think it gets the job done. :) Drag one of the provided UI prefabs into a scene, expand it, and enable the GUIRoot object to see what they're made of. They all follow the same basic format.

    Yes, variables defined in the database get saved, with a few exceptions that will be documented in the 1.1.0 version of the Save/Load System manual page. The exceptions are mostly static data items, such as the link definitions between dialogue entries, which would be a waste to save and load.

    I'll add that to the ideas list. Thanks! In the meantime, you can do this with any third party product that lets you save to external data sources such as MySQL DBs. When you save in the Dialogue System, you get a savegame file in the form of a big string. You can do whatever you want with it: save it in PlayerPrefs, write it to a file on the local hard drive, or use something like UniSqlite to save it to a database.

    In the Dialogue System's Lua environment, it would be a variable in the global "Variable" table. For example, in the 1.1.0 release of the Realistic FPS Prefab integration example, there's a variable named Zombie_Kills that tracks how many zombies the player has killed. Every time a zombie is killed, this Lua code gets run:

    Code (csharp):
    1. Variable["Zombie_Kills"] = Variable["Zombie_Kills"] + 1
    It gets run during gameplay, independent from conversations.

    Similarly, the 1.0.9 example has a quest where you need to get a shotgun for someone. When you pick up the shotgun, it runs this Lua code:

    Code (csharp):
    1. Variable["Has_Shotgun"] = true
    That got replaced with a more full-featured inventory integration in 1.1.0, but it shows that you can save pretty much anything into the Lua environment for use by the Dialogue System or any other part of your gameplay. And all of these variables get saved when you use the Dialogue System save/load features.
     
  45. dreamlarp

    dreamlarp

    Joined:
    Apr 22, 2011
    Posts:
    854
    Great I will look for 1.1.0. to come out.
     
  46. daisySa

    daisySa

    Joined:
    Dec 29, 2011
    Posts:
    341
    Of course, fair enough - thanks for clarifying.

    Wow, that patent is ridiculous! Yeah, I'd just remove your readme file. Again, thanks for clearing that up.
     
  47. dreamlarp

    dreamlarp

    Joined:
    Apr 22, 2011
    Posts:
    854
    When does 1.1.0 come out anyway?
    Opps found it sry.
     
    Last edited: Nov 11, 2013
  48. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    I expect to put 1.1.0 on the website on Wednesday, and the Unity folks should have it on the Asset Store about 7 days later, give or take. I'll post a notification on this thread when it's available on the website.
     
  49. dreamlarp

    dreamlarp

    Joined:
    Apr 22, 2011
    Posts:
    854
    Good deal. I am digging into this kit working with UFPS and your new update will be big for my game. Are the feature notes posted on your site?
     
  50. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Yes. I prefer using the fullscreen version rather than the one framed within the main website, so here are the links:
    Version 1.1.0 includes a lot more documentation on gameplay integration.

    The Roadmap changed significantly based on customer requests and includes many new features for UFPS and Realistic FPS Prefab, as well as the Unity GUI and Daikon Forge GUI systems.

    The draft version of the UFPS integration notes for 1.1.0 is:

    Gameplay Integration with Ultimate FPS (UFPS)

    In Third Party Support, you'll find example integrations with VisionPunk's UFPS. (These require VisionPunk's UFPS.)

    The Shallow example uses Dialogue System features such as Set Enabled On Dialogue Event to switch between UFPS gameplay mode and dialogue mode.

    The Deep example uses UFPS features to suspend UFPS gameplay and interact with an NPC to start a conversation, synchronizing UFPS data between UFPS and the Dialogue System.


    On the Deep example's AdvancedPlayer, these scripts were added:
    • FPFreeze Player: Freezes gameplay and shows the cursor during conversations. The Freeze() and Unfreeze() methods are also used by the example scene's main menu.
    • FPPersistent Player Data: Records the player's position, health, and inventory. When loading a game, this component uses UFPS methods to restore the position. Overrides the name to be "Player", which is the name defined in the dialogue database. (Note: Script name changed in 1.1.0.)
    • FPSync Lua Player On Conversation: Synchronizes the player's health and inventory in UFPS with the inventory in the Dialogue System's Lua environment so conversations can check and manipulate it. (Note: Script name changed in 1.1.0.) This script uses FPPlayerLuaBridge.cs, which does the actual synchronization. You can use FPPlayerLuaBridge.cs separately from FPSync Lua Player On Conversation in your own scripts, too. It synchronizes:
      • The player's health is in Actor["Player"].Health.
      • The player's weapons in Variable["1Pistol"], Variable["2Revolver"], etc. for all weapons defined in the player's vp_SimpleInventory. If the value is 0, the player does not have the item. If the value is 1, the player has the item. If you set a value during a conversation, the change will be reflected in the UFPS player at the end of the conversation.
      • The player's inventory (ammo) in Variable["AmmoClip"], etc., for each type of ammo used by the player's weapons. The value of this variable represents the quantity of the item that the player possesses. If you change it in a conversation, the player's vp_SimpleInventory will be updated at the end of the conversation.

    On the NPC, Private Hart, a child object named "AI" contains these components:
    • FPInteractable Dialogue: Derived from vp_Interactable, this component makes the NPC interactable within the UFPS framework. When the player interacts with the NPC, this component sends an OnUse message to the NPC. If the NPC has a Conversation Trigger configured to listen for OnUse, it will start a conversation.
    • Conversation Trigger: Starts the conversation when FPIteractable Dialogue sends an OnUse message to the NPC.
    • Set Enabled On Dialogue Event: Disables the FPInteractable Dialogue component during conversations.
    • Persistent Position Data: Records the NPC's position for saving and loading games.

    Sharing other data:

    You may want to share additional data between UFPS and the Dialogue System. One way to do this is to put that information in the Dialogue System's Lua environment using the Lua.Run() method. If you set a user variable using PixelCrushers.DialogueSystem.Lua.Run(), then dialogue entries can check and/or change the value.