[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

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    $ds_logo_128x128.png

    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.

    Recently Added Features: Integration for Behavior Designer, RPG Kit 2.0, Adventure Creator, plyGame, KGFMapSystem, and more!

    $f01 Editor.jpg

    $f02 UIs.jpg

    $f03 Cutscenes.jpg

    $f04 2D and 3D and more.jpg

    Requires Unity 4.3.4 or higher.

    Features:
    Editor:
    • Visual, node-based editor
    • Optional compact outline-based editor perfect for large conversations
    • Importers for Chat Mapper, articy:draft, and Neverwinter Nights
    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 Unity GUI, NGUI, DF-GUI 2D Toolkit
    • 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 and 3D
    Integration:
    Provides general-purpose integration components for any framework, plus custom components for drop-in integration into:
    • 2D Action RPG Starter Kit
    • Adventure Creator
    • Behavior Designer
    • Core GameKit (Killer Waves)
    • FaceFX
    • KGFMapSystem
    • PlayMaker
    • plyGame (UniRPG 2)
    • Realistic FPS Prefab
    • RPG Kit 2.0
    • UltimateFPS (UFPS)
    • uSequencer
    For Programmers:
    • Complete, thoroughly documented optimized C# source code
    • Pre-compiled DLLs provided for lightning-fast build times
    • Full API reference
    Works in Unity Free Pro, and tested on standalone, web, and mobile.

    Links:

    Change History:
    Version 1.3.1:
    • Dialogue Editor improvements:
      • Added: Ability to sort assets by name or ID.
      • Added: Ability to sync assets from other databases.
      • Added: Checkboxes in Merge utility to merge only specific types (actors, items, etc.).
    • Added: Sequencer syntax command(...)->Message(X) to send sequencer messages when a command finishes.
    • Added: Sequencer command SetPortrait(actorName, pic=x) syntax to use an actor's built-in portraits.
    • Added: DialogueManager.SetPortrait() method.
    • Fixed: SetPortrait() sequencer command wasn't applying to subsequent dialogue entries in current conversation.
    • Fixed: Couldn't delete portrait textures in Dialogue Editor.
    • Fixed: Bug where items/quests weren't being added to master database in AddDatabase().
    • Improved: Range Trigger now supports 2D.
    • (NGUI) Added Always Keep Focus checkbox on NGUITextFieldUI.
    • (PlayMaker): Added Set Portrait action
    • (plyGame): Added Set Portrait block

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

    Version 1.2.4.1:
    • Unity 4.3.4f1 is the new required minimum version.
    • Dialogue Editor improvements:
      • Improved: Dialogue entry Conditions and Script fields now have wizards to build Lua code visually.
      • Fixed: When switching databases or between edit and play modes, the conversation node canvas sometimes failed to update.
      • Fixed: Multiselect and lassoing bugs.
      • Fixed: Adding new quest entries numbered them from zero; now correctly numbers from one.
    • Improved: Added button name field to Unity GUI Navigation. You can now select responses with a gamepad button.
    • Fixed: When there was no Dialogue Manager object in the scene, the Dialogue Manager wizard would sometimes generate errors.
    • (UFPS) Fixed: Removing unit banks (such as firearms) works correctly now.

    Version 1.2.4:

    Editors Converters
    • Dialogue Editor improvements:
      - Improved: Changes are now automatically saved when switching between edit and play modes.
      - Improved: Major improvements to quest editing.
      - Improved: Localization fields are shown in the main section of dialogue entries and quests, not just in All Fields.
      - Fixed: Cosmetic issue. Clicking Conversation tab caused "Cleaning up leaked objects in scene since no game object, component or manager is referencing them" message.
    • (Aurora) Quest entries are now sorted by journal ID.
    • (articy:draft) Is Item field set to False now for Flow Fragments (quests).
    Engine
    • Added: Abandoned state to quests.
    • Added: RandomElement() Lua function.
    • Added: DialogueManager.LastConversationStarted property.
    • Improved: Minor performance increase to conversation startups.
    • Changed: Double quotes in dialogue database are now retained (escaped) in the Lua environment, not converted to single quotes.
    • Changed: SetPortrait() now occurs immediately (Unity GUI, NGUI, DF-GUI).
    • Changed: IsDialogueEntryValid now takes immediate effect, not next conversation.
    • Changed: OnConversationLine is now also broadcast to Dialogue Manager.
    UIs Cutscenes
    • Added: TextlessBarkUI (useful for playing bark cutscene sequences without text).
    • Added: New Bark UI option to raycast for visibility to player (Unity, NGUI, RPG Kit, DF-GUI).
    • Added: Added special keyword 'original' to Camera() sequence command.
    • Improved: Audio/AudioWait/Voice() sequencer commands: If subject is null, audio is played on the Dialogue Manager object.
    • Unity GUI system:
      - Added: Text Style Color (for outline/shadow) for GUI Label, Unity Bark UI, Selector.
      - Improved: Typewriter effect now handles rich text.
      - Improved: Fade Effect now works on GUI Image.
      - Fixed: GUIScrollView threw an exception if vertical slider in GUI skin didn't have texture assigned.
      - Fixed: Wheel1a prefab UI (had nested slide effects that weren't working).
    Third-Party Support
    • Adventure Creator support:
      - Updated to support Adventure Creator 1.33b.
      - Bridge now also turns off Adventure Creator camera control during conversations so you can use Dialogue System sequences.
      - Conversation Bark actions now sync before conversations start, so conditions on the START node work.
    • Core GameKit support: Updated example scene for new default LevelSettings values.
    • plyGame support: Updated to support plyGame 2.1.4d.

    Older Release Notes


    Please post any feedback here or email support (at) pixelcrushers (dot) com.
    Last edited: Jul 11, 2014
  2. TonyLi

    TonyLi

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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!
  3. TonyLi

    TonyLi

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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

    Member

    Joined:
    Jan 4, 2012
    Messages:
    166
    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

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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

    Member

    Joined:
    Jan 4, 2012
    Messages:
    166
  8. TonyLi

    TonyLi

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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

    Member

    Joined:
    Jan 4, 2012
    Messages:
    166
    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

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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

    Member

    Joined:
    Jan 4, 2012
    Messages:
    166
    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

    Member

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

    TheNorthridge

    Member

    Joined:
    Jan 4, 2012
    Messages:
    166
    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

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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

    Member

    Joined:
    Jan 4, 2012
    Messages:
    166
    Are you a Wizard? lol

    I love it. Thanks :)

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

    TonyLi

    Member

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

    TonyLi

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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

    New Member

    Joined:
    Feb 17, 2013
    Messages:
    29
    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

    New Member

    Joined:
    Mar 24, 2012
    Messages:
    81
    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

    New Member

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

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

    TonyLi

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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

    New Member

    Joined:
    Feb 17, 2013
    Messages:
    29
    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

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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.
  26. TheNorthridge

    TheNorthridge

    Member

    Joined:
    Jan 4, 2012
    Messages:
    166
    That's one Sexy UI :p
  27. LeeAllen

    LeeAllen

    Member

    Joined:
    Aug 7, 2012
    Messages:
    102
    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

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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. LeeAllen

    LeeAllen

    Member

    Joined:
    Aug 7, 2012
    Messages:
    102
    "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

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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

    New Member

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

    TonyLi

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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

    Member

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

    TonyLi

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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

    Member

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

    TonyLi

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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

    Member

    Joined:
    Apr 22, 2011
    Messages:
    752
    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

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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. Fuzzy_Slippers

    Fuzzy_Slippers

    Member

    Joined:
    Dec 21, 2012
    Messages:
    261
    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. daisyDynamics

    daisyDynamics

    Member

    Joined:
    Dec 29, 2011
    Messages:
    161
    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

    Member

    Joined:
    Apr 22, 2011
    Messages:
    752
    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. daisyDynamics

    daisyDynamics

    Member

    Joined:
    Dec 29, 2011
    Messages:
    161
    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

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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

    Member

    Joined:
    Apr 22, 2011
    Messages:
    752
    Great I will look for 1.1.0. to come out.
  46. daisyDynamics

    daisyDynamics

    Member

    Joined:
    Dec 29, 2011
    Messages:
    161
    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

    Member

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

    TonyLi

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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

    Member

    Joined:
    Apr 22, 2011
    Messages:
    752
    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

    Member

    Joined:
    Apr 10, 2012
    Messages:
    1,161
    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.