Dialogue (experimental)

The system and components that handle Dialogue is currently very experimental and using Unity's most recent Graph Toolkit which is also in the experimental phase at the time of writing. Please take this into consideration before comitting to using it.

If you intend to use Whisper (the speech system) then please be aware that it is highly subject to change and modification as time goes on. There are many known bugs, issues and shortcomings - for example if you Copy-Paste a node then it will clone the node GUID and break the Conversation (so make them from scratch!).

It is very bare bones right now but a determined developer could certainly use it just fine for primitive conversations. We've used it in several prototypes and jams with fair success.

You can create new flow graphs as Scriptable Object Assets that you can reference from other components by the File toolbar under Tools > Cleverous > Whisper > New Whisper Graph.

Once you have a new graph, double click it to open it.

Every graph requires an EntryNode or it will not work. Statement Nodes are the basis for a conversation. You will be creating Statement Nodes and the UI layer will be flowing through them based on whether or not they have multiple outputs. A Statement Node has the following properties:

Property
Description

Speaker

Choose who is speaking in this Node. If <None> is chosen in this slot, the UI will assume the Player that started this conversation will be the Speaker for this Statement.

Expression

The sprite which will be chosen for this Statement.

Audio

Optionally play an Audio Clip for this Statement.

Event

TBD. Future scope for firing dynamic events like "nobody liked that".

StatementConcise

The 'short' text to display in the choice UI label. When a node has multiple exit branch choices to choose from, this property is used to represent the options given to the player.

Statement

The full text to show in the UI when this statement renders.

Speakers can have expressions, as you can see. This is a simple sprite sheet. You can assign sprites to the appropriate expressions in Vault Dashboard for each Speaker Definition.

When you want to make a conversation occur in the scene, you need to have a InteractableConversation component on some object, with the appropriate Interactable settings configured.

To connect objects to these definitions, add a SpeakerObjectBase component and set the Definition there. The InteractableConversation component can reference this as a Involved Speaker and when a Statement says the same reference is speaking then you can get the chat nodes overhead in the scene when that speaker is speaking a statement.

For now, you must simply reference the ScriptableObject Whisper Graph that you made, and indicate any static speakers you have in the scene if you want the overhead bubble to appear over their head when talking.

Last updated

Was this helpful?