NPCs have to talk…
Some time has passed since I first wrote Interrogative 2.0, and I’ve learned some things since then. The first is that people might be interested in such a thing as a product. The second is that it’s capable of so much more than what I had originally made it do. Another thing I’ve learned about is semantic data, which involves triples that allow me to work with data with more flexibility, but that sort of thing will be displayed in future blogs. Something that you might want to know about is why I focus so much on conversation, when that’s obviously just a feature being driven by personality traits that are driving AI.
The fact is, just our brains alone don’t make us human- it really is in how we interact with the world, and interaction in all of its forms is communication. For those of you with kids, you know this intimately, as you teach a child to communicate in increasingly sophisticated ways. Their first form of communication is simple and unvarying: crying. Then movement and different cries, gestures, pantomime, grunting, gibberish, badly pronounced words, single words, simple phrases, sentences, and then you wish they’d just shut up about that band they like. My son is still in the badly pronounced words phase himself, but he communicates pretty well with the dog, who herself has a range of communication from physical to biological (that last usually translates to “Maybe I shouldn’t have eaten that.”). All of this is to get data from them to us, the providers, about their current needs, wants, and states. Hungry, dirty, tired, pain, joy, disagreement, anger, etc. That is all a range of states given to us to (hopefully) modify their environment in their favor. Hungry? Cry for attention to get fed, or just ask for food. Sick? Whine, as dogs might, or say you feel like crap. Disagreements? State your opinion, call the other an idiot, or wage a war (that last option is limited in who it’s available to).
Interrogative is not so much about pushing a communication feature that mimics AI and more about a communication-centric AI. And by communication, I mean communication with the game world, not just players- and not just words. We can make an NPC speak to a player not just using Interrogative, but with many different solutions both proprietary and commercial. If the NPC cannot wander the world and interact with it when needed, then the NPC cannot fully communicate with it. And when the player wanders that same world, even with better AI, its shortcomings will eventually become glaringly apparent. Talk to an NPC in the kitchen, but they won’t offer you the food at their table. They don’t sit. Can’t tell you about a painting on their own wall. Don’t know about themselves. In some games, this isn’t a problem. But in others- this is where gaming absolutely needs to go.
The (fairly vague) feature list for Interrogative 3.0:
Some of what I want from Interrogative 3.0 to satisfy that deeper communication from NPCs is as follows:
- It needs to generate dialog for the NPC on the fly to be able to describe objects in the game world, to answer queries regarding information that updates and generally to reduce the custom writing needed for dialog that could be handled by generation instead of writing.
- It needs to handle game world information in a way that allows the other systems in access to it as well, otherwise it’s not really connected to the game world.
- It needs to handle story generation and dialog in a more general way than just templates, although templates will likely still be a thing used in version 3.
- The personality traits used in version 2 were an improvement over those used in version 1, but could not account for personality types that were absolutely needed by many game types and scenarios, and so need to be replaced with something more accurate.
- It needs to be customizable and extensible by developers.
- It needs to be written in a faster language than TorqueScript (the previous versions were scripted in the Torque2D and 3D engines), and more generally made into assemblies that could make itself available to many engines.
- It needs to support statements from the player to the NPC. This is basically almost bringing back the “Tell” category from version 1.
- It needs to remain data-driven, so that database queries could drive much of the labor, though the data need to support access to live game information.
- The data that drove version 2 became a more complex than was needed, and moving towards a simpler set of data would make things easier on everyone.
There’s a lot in that list of generic wants, but what I’m looking to do is to level Interrogative up in every area. Since development has started in September, many of the older features have been successfully re-implemented, as well as some new features. Now we’re going to take a walk through Interrogative 3.0 as it gets ready for prime time.
Next blog: We’re going to talk about data and how little changes to format go a long way…