Unity Dialogue Engine - Out now!

Hi all. Following on from last week’s pre-announcement in the gossip thread, I am just ever so pleased as punch to announce to you all that the Unity dialogue Engine is now ready…

The very nature of it means it can always be expanded and it will never ever be completely finished, but a working version is now available so now I can start working on the updates :slight_smile: Yeay!

From the website:

Features and uses include:

  1. Remember past interactions with characters and display different dialogue based on past interactions.
  2. Add simple dialogue to NPC characters
  3. Describe any item in the game (i.e. Look At)
  4. Display different info for Inspection, Interaction, Speak to etc etc etc
  5. Display errors on screen when the player tries to do something they shouldn’t do (Like trying to enter a locked room)
  6. Initiate pickups
  7. Includes an inventory system
  8. Interact with the game from within the dialogue
  9. Dialogue is aware of past actions in the game

The engine sells for $100 and includes:

  1. The Unity Dialogue Engine script (crDialogue.js)
  2. 4 sample interfaces to teach you the ropes
  3. A graphical dialogue editor
  4. Detailed documentation (you will clearly see that I like to speak… :P)
  5. Free Bonus

Check it out at

[Edit:]
I already have a feature request or two that I am working on for the first update. Please feel free to contact me with your thoughts and views, yeah?

Enjoy :slight_smile:

I think $100 is an amazing amount for a system like this. It looks very good but $100?

Holy shit, 100 bucks? No way sane people will buy it for that price.

I agree that 100 bucks is a bit too much. Comparing what you get with this plug-in to all the other plug-ins I’ve seen users create. The price should be lowered to something much more reasonable.

I’ll purchase it on Friday when I get paid. Am looking forward to using it.

Very nice job on your website, too.

You can fill a whole nitch for us artist/non-programmer types.

I don’t mind paying $100. I don’t know programming and it would take me quite awhile before I could make a nice system like this! If you had to pay someone to make a system like this for you, it would probably cost a lot more.

I did searches on this site on inventory and dialogue and can’t find anything that would work for someone who is not a programmer.

I think $100 is quite affordable for what’s being offered. Once I need a system like this (probably my next game), I will be buying a copy.

Josh

Pricing is a very difficult balance, and while I cannot comment one way or the other on the quality of this tool, the price sounds fair.

Basically, the author has to price the tool/code based on expected sales, investment, and the market. The more of a specific niche product it is, the fewer expected sales and so on. Generally, if you find the price too high, or the tool too “simple”, you don’t need it and it’s not really fair to leave negative comments on the price.

For some people, $100 is a very small fraction of the cost of doing it themselves, or hiring a pro to do it.

$100 = about 1 hour of programming time from a pro coder. Very likely a great deal if the tool is a good quality one and solves your problem.

-Jeremy

I think $100 is a very reasonable price for anyone who is serious about game development. Most independent game developers (hobbyist included) have day jobs, families, and other time consuming responsibilities. Let me layout a bit of an example for you.

I primarily do contract game development work as a freelancer… on the side. I have a nine to five job, a wife, and a four year old son. All of these take time. On a great day, I can devote three to four hours to game development, but on most days, less than two. Lets say that company X comes to me wanting a dialog system for a turn based RPG they are working on. They offer me $40 an hour (a reasonable price for me) to build this system. In order to match the value of the system Mr. Dude is offering, I would have to complete the project in less than three hours. I like to think that I work pretty quick, but that is simply something that I would not be able to do.

I think the fact that Unity Indie is so cheap provides us with a Catch-22. We get such great value for such a small price that most of us expect everyone to follow suit. I think I speak for most independent developers when I say that we absolutely cannot. Mr. Dude deserves to be compensated for his many (possible even 100+) hours of work. So, how much is your time worth to you?

Edit: Jeremy beat me to the punch by about two minutes, but he is a prime example of what I am talking about with GUI-X.

I agree with Jacob and Jeremy, it’s a simple equation.

if(hoursToCode * myHourlyRate > costOfProduct  productUsefulness > 0)
  purchase();
else
  dontPurchase();

:smile:

If that was the case. This is not. You’re selling to the masses, not to a single person. What would it be if Unity used your “example” to sell it’s products? How much we would pay for it?

$100 is extremely expensive for such solution. You should focus on selling many copies for a few bucks, instead of few copies for many bucks.

I think you misinterpreted what I was saying.

I was simply pointing out that the cost of the product is likely less than it would cost to make it yourself, or pay a professional to make it. This is what my “example” :wink: was addressing, not that it should be priced to match the cost of development, as you are implying.

I am sure it took MrDude more than one hour to design, build, debug, and document this project.

If Unity’s source license sits at $50k, then it is still less than the cost of making it yourself, and thus worth the 50k if it solves your problem. If it doesn’t, then you are not the person this tool was built to help. The same applies here, and anywhere else.

Also, you have to remember that the “masses” is actually reduced to the “masses who use Unity”, then is further reduced to “Unity users who actually check the forums”, then reduced again to “Unity users who check the forums and need a dialogue system for their game”. The size of the “masses” shrinks very quickly.

Anyway, I think you get my point.

-Jeremy

If I had a $100, it’d be mine :twisted: :twisted:

Will look forward to purchasing soon though for sure!

Incredible… I’ve started a controversy :slight_smile:

It seems a lot of you haven’t followed the pre-release info from the gossip thread so for your benefit allow me to paste some useful links for you to decide wether this is right for you or not.

-Outdated links removed-
A playable demo
http://www.mybadstudios.com/?page_id=86

Hope this clarifies it a tad… :slight_smile:

NIce system, I don’t know if I read it right but could you use it as a savegame system?

That depends entirely on what you want to save…

I actually intend to write a saveAll() and loadAll() function as part of the next update. At the moment I provide a method to keep track of everything, but I don’t save it myself, no.

So, at the moment, no. If you store all your game’s progress in the crGameKeys class then I can give you a simple method of keeping track of everything but, no way of storing it… yet.

The crGameKeys is a very simple class, to be honest. When you read the notes, you will see I even say so in there also. The very nature of the class dictated that it be just that. In fact, I already made it more complicated than it needs to be, but I thought it best to give people a few more options…

It works on the principle that everything in the world can be translated into a simple question with an answer of either yes or no. Keep in mind that in programming terms, 0 = no and everything else is true. So, do you have any money? Money = 200 = true. Have you received the third quest? Quests = 3 = true. Have you completed the third quest? QuestsDone = 2 = true. Aha! See here comes the catch! So I added a method to test the true and false against a value. (QuestsDone >= 3) = 2 = false.

By using this simple system you can keep track of what you have done and what you have not yet done and also keep track of anything you want to keep track of. If you pick up a rocket launcher, add 1 rocket launcher key and add 20 missile keys. Thus do you have any ammo left? Missiles = 7 = true. Then fire. Missiles = 0 = false. Don’t fire.

An example of it’s use is as such:

var Inventory : crGameKeys;

function Start()
{
   Inventory = new crGameKeys();
}

function Pickup(weapon: String, ammo: String, qty: int)
{
  if (Inventory.doesNotHave(weapon, 1))
     Inventory.add(weapon,1);

  Inventory.add(ammo, int);
}

function FireRocketLauncher(ammo: String)
{
   if (Inventory.doesNotHave("RocketLauncher", 1))
      return;

   if (Inventory.doesHave(ammo, 1))
   {
      Inventory.subtract(ammo,1);
      InstantiateRocketAndFire();
   }
}

so if you want to store achievements and inventory then yes, after I write the saveAll and loadAll functions then this system can be used to save games also but once again, it all depends on WHAT you want to save. For example, something that this system can NOT store is the player’s position or rotation… These require 3 values and the crGameKeys class only stores a single int value next to every key.

I think this the very reason why a save game option doesn’t come standard with Unity. There is just no way of knowing what people want to save. Let me give you another example.

In one of my games I had 4 sets of 26 pickups and another 4 sets of 8 pickups. Now, I didn’t just need to know IF I had collected a pickup, I needed to know WHICH item I picked up. For me to keep track of every single one of those pickups one by one would be a nightmare. So to keep track of them I assigned each one an int value representing a specific binary value. For those of you who know binary you will understand the significance of calling my items 1,2,4,8,16,32 etc. I then simply AND and OR the pickups into a single int value for every set and I store the result in a GameKey. This way I only ever store 1 value and read back 1 value for each set and I am able to keep track of exactly which of the items in the set I have already collected.

So for me, this system could be used as a save game system, but if you had the same setup and stored your values differently…

It all depends on what you want to store…

For my current project it would be wether the player had finished the level (to unlock others) and what checkpoint they were at.

Do you have a webplayer sample that shows it in action?

The screenshots don’t say much and really couldn’t be any smaller. All I see on them is an open breach of copyright on the naruto trademark which is globally exclusive licensed already.

Yeah, I intended to mention it in the license that all the Naruto stuff is not mine and used for demonstration purposes only… Completely forgot to do that. My bad!

As for the sample, yes, see the previous page. Follow the third link to a demo… with Hinata again…

Please people, the Naruto stuff is not mine.

The system is in place and ready to use. When you define your dialogue, you select who will partake in it and those characters will then replace the Naruto images. I never expected anyone to build a game using my own artwork so figured I could use anything since you will be replacing it anyways. The chances of anyone building a game that just so happens to have a character that looks exactly like my sample character… Likelyhood factor?

Here is room for improvement though. If you are an artist and willing to give me some art to replace the Naruto stuff with and willing to put that art into the public domain, I would be willing to give you a free copy of the engine as compensation. I will require 3 full body images and 1 smaller one. PM me for details. First come, first served…

I have a question:
Can this tool follow with lip sync? Like if I play a dialog sound message, have the target lip sync, could this show subtitles? Subtitles that follow the dialog of the target.

You should perhaps link those on the website too. Guess thats the primary place people will look for it that find it through google for example

looks very nice and from the videos simple to use :slight_smile:
But I’m missing a pretty basic feature and thats mouse interaction with the dialog …