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

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

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 :slight_smile:

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!

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.

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:

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.

1 Like

That’s one Sexy UI :stuck_out_tongue:

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

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.

“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

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.

Can’t it be done with Playmaker?

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!

Wow awesome. And More integration features with Ultimate FPS.

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!

Can you add a video tutorial when you can for Ultimate FPS and playmaker please.

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.

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.

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.

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.

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?)

  1. 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).

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