Unity Conversation Engine

I wanted to have a dialog or conversation script that not only plays some audio and throws up subtitles, but also uses cinematic camera shots. I couldn’t find any, so I made my own. I originally planned to sell it, but I never got around finishing it, and the project I’m doing it for has been put on the back burner until spring.

So I’m posting the result here. Find everything at

http://lemuria.org/projects/wiki/UnityConversationMaker

UPDATE: It’s now on github, use this linke:
https://github.com/tvogt/conversationengine

Attached is a screenshot of what it looks like in the editor. This script allows you to set up a branching dialog system with cinematic camera shots, subtitles and a small list of nice features. It’s free of charge. If you make any improvements, I’d be happy if you post them or share them with me.

Looks very good.

WOW !!! You’re awesome Tom !!! I’m not a coder but i really hope your conversation engine will be implemented by the community ( and fix the few bugs if there are any …)

Big Big Thanks !!!

Can this make like quest dialog ?

Or perhaps an introductory slide show? Very cool stuff Tom.

P.S. - Why the screenshot from “Inglorious Basterds”?

@Demonith: That is what it’s for, yes.

@bigkahuna: If you go creative, you could use it for introductions, though it is really built for dialogs, so it needs two actors, etc. The screenshot simply because it illustrates the classic “over the shoulder” shot so well.

Thankyou i was just creating a game who really needed this!
im very thankfull that you make it free

Fantastic tool, I can only say thks!

You’re welcome. My Terrain Tools are getting a good reception, so it was time to contribute something for free to the community as well.

i get every tim the nullreference exception error

I don’t know what i did wrong.

Downloaded the conversation engine! It’s looking good so far. :slight_smile:

Very well-done, sir!

Thanks ! This is awesome stuff ! But how do i set the method and parameter areas ? like how do i call functions as you say in the readme file ? and how do i pause the player animations or stop the player completely so that the player does not move when conversations start ? and how do i restart the players movements again ? Good job though ! Even tho i don’t know how to use it

Looking at the code, line 98 as the error message says, it appears that you do not have an object with the “Player” tag in your scene. Check that. I agree it should be listed as an explicit requirement, that’s one of the downsides of an unfinished script - bad documentation.

When you activate the “Action” checkbox, further fields will appear that allow you to enter the necesary data.

To stop, turn or otherwise have player and/or NPC react to the beginning or end of the conversation, make sure they have a script attached with a StartConversationActions() and a StopConversationActions() method. Those will be called when the dialog starts, or ends.

this helps
thanks

My turn with error detection!

So, I have a test conversation:

0: I’m glad you made it, Exile! We’ve only got one chance to save this village and it involves all the skills a hacker like you would have!
1: The good news is that we have some spare supplies you can use!

CHOICE!
-And the bad news? (To 2)
-What’s the catch? (To 2)

2: The bad news is that you’ll have to use them against a pack of Vernul that are barricading our village’s Comms center.

CHOICE!
-I understand. I’ll go now. (To 3)
-What do I get out of this? (To 4)
-Some dogs are why I’m here!? (To 4)

3: Oh! One more thing before you go! Our comms are fully computer-driven, so make sure you’ve got equipment to interface with a computer before you fix the Comms system!
4: Well…our village is rather poor. We’re still attracting settlers. We can give you only a little, but you also keep all the gear you use!

CHOICE!
-Consider the Comms fixed.

…When I end a conversation with this choice, I wind up getting these two errors:

ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index
System.Collections.Generic.List`1[Conversation+DialogItem].get_Item (Int32 index)
Conversation+<StartConversation>c__Iterator0.MoveNext () (at Assets/scripts/Control/Dialogs/Conversation.cs:116)
ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index
System.Collections.Generic.List`1[Conversation+DialogItem].get_Item (Int32 index)
Conversation.OnGUI () (at Assets/scripts/Control/Dialogs/Conversation.cs:217)

When I look at the code, it appears it dosen’t like branching nodes to end the conversation, and I’d rather not make a “null” conversation line - there are plenty of situations like a “I’ll just go.” dialogue option to quickly back out of the interactive cutscene.

i have this too

how do i do that part ? like what am i suppose to type in there or put in there ?

Correct, the jump targets have to exist. I understand what you want to do. A “null” conversation - with empty subtitles and “wait for” set to subtitle - would be the right solution for the moment.

As a matter of fact, looking into the code I think I didn’t finish that part. It should be as easy as adding something like

if (has_action) {
   Player.BroadcastMessage(ActionMethod, ActionParameter);
}

into it.