Dialogue System 1.1.0 Released!

The Dialogue System for Unity 1.1.0 has been submitted to the Asset Store and is available for immediate download on this site for paid customers. (Contact us with your Asset Store invoice number if you don’t have access to the customer download area.)

See the Release Notes for all the new additions and changes.

Dialogue System 1.0.9 Released!

The Dialogue System for Unity version 1.0.9 has been submitted to the Unity Asset Store and is available for immediate download on this site for paid customers. (Contact us with your Asset Store invoice number if you don’t have access to the customer download area.)

One of my favorite improvements is small but really helps my workflow when writing and testing dialogue: In the Chat Mapper Converter, when you rebuild a dialogue database, all references to the database are now retained, so you don’t have to reassign the database to the Dialogue Manager any more!

Daikon Forge GUI is a wonderfully designed and implemented GUI system. The Dialogue System now supports it out of the box. One prefab UI is provided in 1.0.9, and more will be included in an upcoming release.

Localization is now easy to do in the Dialogue System.

Easy integration with gameplay frameworks is a critical feature overlooked by other conversation systems. The Dialogue System was designed to support easy integration with a large collection of powerful triggers and handlers. But 1.0.9 now contains integration examples and support scripts for VisionPunk’s Ultimate FPS and Azuline Studios’ Realistic FPS Prefab.

Version 1.0.9 is packed with lots of new features and improvements:

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.
  • Improvement: Additional documentation on dialogue UIs.
  • Improvement: Improved error handling for improperly configured Unity Quest Log Windows.
  • Fixed: Bug in Lua conversion of malformed ints and floats.


Version 1.0.8:

  • New: Added Unity Dialogue UI “Nuke”.
  • Improvement: Assets > Create > Dialogue Database now creates a database with Player actor and Alert variable.
  • Improvement: General improvements to dialogue database editor.

Integrating With Gameplay

A customer, Sean, recently asked a great question:

f I apply some AI to my NPC, when I go talk to him, will he stop moving?

This was in response to the Realistic FPS Prefab integration example that I recently added to the Dialogue System.

Integrating PC-NPC dialogue with gameplay is one of the more difficult steps, because you need to transition player control from gameplay mode (looking around, moving, etc.) to conversation mode. Generally, you need to temporarily disable gameplay controls and NPC AI, and get the NPC to act the way you want in conversation mode.  To do this, you can use triggers such as Set Enabled On Dialogue Event and/or sequencer commands such as SetEnabled().

My response to Sean was:

That really depends on what you want him to do. [In the Realistic FPS Prefab integration example,] I took a shortcut in the NPC AI script and just set the attack range property (and a few other properties) to 0. This means that the Sad Robot will just sit there and never attack. If you want to do the same thing at run-time, you’d have to write a short script to do it. This is because the Dialogue System doesn’t know about the internals of the FPS Prefab scripts. But you could tell that short script to do its thing by using the SendMessage sequencer command. This is what I did with the RemoveWeaponHandler script.

A better option might be to use SetEnabledOnDialogueEvent to disable the AI script during conversations, and then use the Animation sequencer command to play the Idle animation. You could do this all in a sequence, in fact, and you wouldn’t need to add any components to the NPC. You could use a sequence like this on the NPC’s first dialogue entry:

SetEnabled(AI, false); LookAt(listener); Animation(idle); Delay(2)

This sequence disables the AI component, rotates the NPC to look at the listener, and plays the NPC’s idle animation. Then it delays for 2 seconds to give the player time to read the NPC’s first line.

At the end of the conversation you’ll need to re-enable the AI script. You can do this with a sequencer command or, probably easier, using SetEnabledOnDialogueEvent (OnConversationEnd).

Why Chat Mapper?

I appreciate good tools. From the beginning, I built the Dialogue System to support Chat Mapper. After all, they’ve been refining their editor and the underlying data structure for years, allowing you to write the most expressive dialogue of any interactive dialogue tool I’ve come across. (For those who prefer a more compact style to Chat Mapper’s graph display, I also wrote an outline-style editor that works with the same underlying data structure.)

Chat Mapper is a professional tool available at indie prices. If you’re not already a fan, I encourage you to check it out at: http://www.chat-mapper.com/

Dialogue System Released!

The Dialogue System for Unity has been released on the Unity Asset Store!

I wrote the Dialogue System because I couldn’t find any products on the Asset Store that met my needs. Here’s why:

In high school, reading plays bored the heck out of me. Turns out, the problem wasn’t me. A page of text is not a play. Likewise, a database of lines is not interactive dialogue.

A script is only marks on a page. But when spotlights hit the stage, and music and sound fill the room, and the actors act — that’s when the magic happens. That’s a play.

I built the Dialogue System because I required something that integrates all the critical elements of interactive drama: lines of dialogue, camera work, voice and sound effects, animation, and the give-and-take that comes from being able to react dynamically to the game world and in turn change the game world during dialogue. I realized that these elements needed to be designed holistically from the  foundation in order to make the end product — AAA-quality interactive dialogue — work as a whole.

I’m pleased to find that the Dialogue System is also the most full-featured and robustly-architected interactive dialogue solution on the Asset Store. I look forward to experiencing what magic you conjure with it.