It’s all about the data
I have to admit that I had resisted the urge to change the tables in the database for a few months, mainly because I’m as lazy as anyone else, and all of my work so far had been done against the data structured as it was. However, I find it hard to think that people would like to buy an AI tool that asked them to add 20+ tables to their database, many of which had only a dozen or so lines of data in them. It was wasteful. And besides, there’s a few gains that get made with using 3-4 tables instead…
People tell lies all of the time…
We’ve all told lies. From when you were a little kid trying to avoid punishment to the other day…when you were trying to avoid punishment. Lying is mostly about avoiding something that is harder. Avoiding judgement, punishment, awkward conversations, or more serious confrontations. Lies have a good deal of utility. Manipulating the knowledge you have can gain you an advantage over others, or mitigate certain circumstances. It is so prevalent in human society that most religious, cultural, and political power structures have varying amounts of laws, rules, and norms dedicated to when and why it is appropriate or inappropriate to lie.
Obviously, if we’re working on a conversational AI, we’re going to want to look at this behavior!
What have I been up to lately?
Working on Interrogative!
A lot of the work lately has not been the cool AI stuff, but rather futzing around with the tool and getting other things working for being able to post demos. With current browsers shunning NPAPI plugins, Unity’s webplayer is no longer a feasible way to put up demos, and their WebGL target is having issues with the SQLite plugin I’m using to store data for Interrogative’s use. And with Flash being shunned by, well, everyone, I begin running out of choices for how to get demos up on this site. This is frustrating, because I’ve had a demo since before March…
It’s been a while since my last update, mainly since I’ve been chucking so much time at two contracts, this project, and a newborn daughter, that every time I think of writing a blog post, my eyes turn to marbles. There’s a limit to what my brain’s been able to deal with over the past few weeks. However, with more sleep becoming available, and more progress being made on the (Windows) editor for Interrogative, I thought it was finally time for a blog post.
As a matter of fact, I have some screenshots to show off. A few shots of the Interrogative Editor, that allows you to access and edit the data that is used by the Personality-based AI, as well as the semantic knowledge that makes up the NPC knowledge for conversations. And live-game data, if you want- it works better when the NPCs have an inkling about the live game world they’re in. Interrogative doesn’t wall that off.
The last two blogs have focused quite heavily on my implementation of Dialog Templates, and for good reason: We’re working with live data and need fast, relatively easy ways to put that data into a format that fits conversations with players. Generally speaking, a lot of what we say can be broken down into templates. The majority of conversation tends to consist of agreements: “Okay.”, “Yeah”, “uh huh”, head-nodding, etc. The rest breaks down into a finite number of categories, which then break down into a finite number of ways you can get that information across to the other person. Granted, that finite number is incredibly large, but sentences aren’t just a permutation of words. Grammar, and the need to address certain topics, limits what you say in any given sentence dramatically, and being creatures of habit, people tend to talk in a certain “way”, and that “way” is just the format of words that they use. In short, Dialog Templates are built partially on how people use words.
I was hoping to be able to blog a bit about Opinion objects and such today, but I didn’t get around to it last week. In fact, I did work on the dialog templates that went beyond what I talked about in the last blog.
Localization and customization is a big deal…
Of all of the feedback I’ve received during GDC when talking about Interrogative, one of the most received was that of being able to localize the dialog generated. That’s a valid concern: Games these days launch in multiple countries at once, or with localized versions following very closely behind the primary-language version. The amount of effort for such a task is actually pretty big, unless you’re working on an online game with massive amounts of text that needs to be converted, in which case the task is absolutely monumental. I could forgive people for looking at tech that generated dialog with localizing near the top of their list of features they would need to assure them that this tech was for them.
Fortunately, Interrogative has a solution. And it goes hand in hand with being able to do a ton of other cool things with dialog…
I’m Fried from GDC…
GDC is always a good time, and it never fails to absolutely liquefy the wrinkly organ between my ears for at least a couple of days afterwards as my neurons rearrange themselves to integrate everything I’ve absorbed. Having Daylight Savings Time occur a day after I get back and before I’ve dealt with the jet-lag is not helping me with that task. Suffice it to say that GDC and the AI Summit were great, as were the sessions I attending for things like morality and characters in the Narrative Summit (because Personality-based AI makes morality topical!), and procedural content generation talks such as that given by Esri for their CityEngine tech. That, and seeing all the guys and girls I usually only get to see once a year at GDC and trade brain cells with, which is always a hoot.
Also, I gave a few demos of Interrogative…
Adding Grit to the equation…
It’s not that I didn’t think there were enough personality traits to work with already. I mean, there’s sixteen of them! However, the traits did not seem to adequately cover characters that can simply hang in there while going through hell, despite what you’d think of their personalities otherwise. It’s the same in the real world as well as in Hollywood: Some people are more easily discouraged than others to keep on keeping on. You can hear of people getting stuck in mountain passes for weeks on end, who hung on to a thin thread of life just long enough to be rescued, and those who unfortunately did not make it. Some of that is due to a trait that is partly genetic, and partly imparted through childhood. And that trait is Grit.
In the previous blog, I discussed the progress I had made with Interrogative 3, and realized that up to now, I had not discussed something that is core to how NPCs communicate with players (or, eventually, each other): Knowledge Levels. It’s important to understand what this is to see that Interrogative is not just some run-of-the-mill dialog tree implementation, and a lot deeper than just a collection of semantic data that can be used to sling facts at players.