Interrogative: A new old way of interaction

February 21st, 2009

I just got back from Nick Fortugno’s presentation on narrative and games in Manhattan. Besides the fact that I’m thrilled to have found a parking space that I not only did not have to pay for, but also did not have to assume I was getting a ticket for, I found his presentation to be a very good description of where games fit as an artform, as well as very good at talking about the potential of games for interaction.

And I would like to talk about just that sort of thing…

One of the features I’m touting is the ability to have conversations (actual two-way conversations) with NPCs in Epic Frontiers. It’s not a new thing, and games like Zork have made deep interaction a priority from well over twenty years ago. Unfortunately, with the AAA game market leaning heavily on cutting-edge graphics, they have lost this ability to interact with NPCs outside of combat, and their ability to fund R&D into this realm has become stunted. Of course, being an indie without a real budget to stay within, I have the advantage of not having anyone breath down my neck about addressing it by a specific date.

To this end, I spent a few years working on a technology to do just that without using Natural Language Processing (NLP), which the early games used, due to the fact that when put in an MMO situation, the heavy processor load from it might just melt my servers. What I found in my research was that a lot of what people said was made up of the same things, and of that global set of language, you can narrow down what people would want to talk to NPCs about within a game, and then further generalize that subset of language until you had a set of language operations that, when combined, could act like language parsing “lite”, requiring less variables and parsing time in order for the server to return a response. I gave the system the code-name Interrogative.

I came upon the code-name Interrogative while watching Generation Kill on HBO (awesome show). It was a part of the radio chatter that whenever a Marine would need to ask something that did not fit into the formulaic way to talk on a radio (something more akin to conversation, in order to find out more details) they would prepend the question with the word “interrogative”. It wasn’t a word I was familiar with, and I looked it up, completely aside from any game development, but happened upon the third definition of it from www.dictionary.com:

“Grammar. an interrogative word, element, or construction, as who? and what?”

And that, my friends, is the basis of what Interrogative is, as a gameplay feature:

Asking an NPC about Rare Book 1

Asking an NPC about "Rare Book 1"

What you see above is the latest incarnation of the test GUI, which is really, really, hideous (it’s for testing, and thus, is not allowed to look good). On the left is the output, detailed in second-person narrative style, as a GM/DM would detail it during a pen-and-paper game. The list in the middle is a list of “contexts” or subjects that you can talk to the NPC about, and depending on their knowledge level, get varying amounts of information before you get “<NPC> doesn’t know”. At the top-right: The ability to save snippets of conversation dialog from the left-hand side of the GUI for use later. And finally at the bottom, one of the most important parts of the whole thing: Buttons.

Those buttons are “Dialog Actions” which represent interrogatives, and are much like clicking on the Punch or Kick “Combat Actions” in the combat GUI in the game, except that these actions are generalized ways of working with dialog. For instance, asking the NPC to talk requires selecting a Context and then clicking the Prompt action. As you can see on the left from the next line, the NPC knows a thing or two about the subject in question. So you click on the Elaborate button… Apparently, the NPC isn’t into broad questions like that, so with the Context still selected, you try asking What (equal to What -> Rarebook1), gaining insight from the NPC that the book is about crystals. Now you ask the NPC to Elaborate, and the NPC tells you… Something that was cut off because I ran out of screen real estate. But by now you get the picture.

What you may also be thinking is “why can’t the NPC just tell me what I want to know? All the other MMO’s do that”. Okay, yeah, we can throw walls of text at you if you like, and the system does allow for it, but the point of the system is to support a broader range of gameplay, such as trying to get to information that the NPC may have, but does not want to tell you for a particular reason. If the reason is a lack of “Familiarity” with you, then maybe you should talk to the NPC about “Current Events” in his/her area, or maybe engageĀ  them in a joke or two to try and gain familiarity. Doing that may make them more apt to talk to you. You could also select an object in the area and talk about that (a good way to gain familiarity with an NPC who works in a particular trade- it’s “shop talk”). Or maybe you need to use some of those Soft Skills I’ve blogged about previously, and use Intimidate to get the information out of them. Get the picture now? Almost? Good.

You should know that the system at this point is okay, but not as good as it could be. After all, if you going to do things like this, you should have an AI system to match, shouldn’t you? In my previous blog, I talked a bit more about a Personality Trait based AI system which was tailored to a “literary” type of NPC. It may have puzzled you before, but you can see the connection now: Your Soft Skills can modify personality, which can, in turn, be hooked rather easily into Interrogative to modify how your conversations go. And conversations can go well and give you information, become difficult as the NPC changes the subject on you, or even end if the NPC decides you went too far. The NPC can also go upside your head if you hurl an insult, but in the realm of role-playing, starting a fight with an insult has its uses, doesn’t it?

An earlier test where the NPC tries to end the conversation...

An earlier test where the NPC tries to end the conversation...

The above is an early test of the system, and while it didn’t operate as efficiently as the new system (hence why you don’t see the done-away-with GUI), it does show the ending of the conversation working. I don’t seem to have shots of the subject-changing, but I did manage to show this early version off at IMGDC last April in Minneapolis. This year’s demo should be a bit more interesting…

Epic Frontiers site goes live, and AI systems in more detail…

February 15th, 2009

So the Epic Frontiers site is now live. I managed to fit a huge amount of character concepts into the banner for the site, and the development test videos formerly hosted on Vimeo are now in the Media section and hosted by YouTube (which does not hassle me about the fact that it’s a gameplay video). I still need to skin the forums and maybe try to fit them into the site, or maybe make the site wide enough to fit the forums without horizontal scroll bars, but that’s small potatos compared to other tasks on my plate.

And speaking of which. I’ve been working on AI the last few days since I uploaded the website, so I’d like to talk a bit about where I’m trying to take the whole AI system…

In Brief, the AI system is being designed to work and behave like NPCs from pen-and-paper games. For those who have not really experienced pen-and-paper games, you would notice that NPCs are run by the GM, who provides rudamentary conversational skills (depending on how deeply the GM wants to play the NPC and how much the NPC has to say on a given subject), and provides AI. Usually a GM has a module and plenty of source material to base their decisions on, and the more experienced players have a sense of how to deal with the NPCs in question (Orcs usually behave much differently than humans when it comes to negotiations, barganing, and getting killed). For all of that material, many of the “soft skills” a player uses comes down to rolling that skill versus a trait within the NPC. In Call of Cthulhu, for example, it can work the other way around by a particularly gruesome event or monster would cause a player to roll for Sanity (a failed roll having an effect of temporary insanity, whose effect can also be rolled for from a pre-defined table to see if you start chanting, curl up into a ball, or begin acting like Woody Woodpecker on a bad LSD trip). In Dungeons and Dragons, you would roll Bluff versus a standard check, and if your roll passes that threshold, your bluff works and the NPC belives whatever you’re bluffing. Rolling Sense Motive in the same way allows you to tell if the NPC is lying.

Now, these are rather simple mechanics for “soft” interactions with NPCs, and most pen-and-paper RPGs have rules to handle these kinds of interactions. It sort of goes without saying that the vast majority MMOs out there ignore these interactions, so I’m not going to get into that, but I will get into how I intend to handle these situations, and a bit of what I’m testing.

I had tried out a good variety of AI systems both on paper and in testing to see what was a good fit, and what was not. I’ve tried neural networks, finite state machines, fuzzy cognitive maps, and combinations of those things. What I’ve settled on, and what may bring out some better situation AI, is a combination of finite state machine and the principle of “rolled AI” described when discussing NPCs in pen-and-paper games two paragraphs above.

Basically, what you start out with is an NPC with a set of Personality Traits, like the set below:

  • Dominance
  • Sensitivity
  • Altruism
  • Stability
  • Trust
  • Discipline
  • Patience
  • Confidence
  • Extroversion
  • Openness

While not exactly a “true” set of traits for a real human personality, we’re using this as a set of traits that we think will help represent the interactions that our NPCs will have with players. These traits, when assigned “levels”, can serve several purposes within the AI framework. The first purpose is to have a variable to roll against for Soft Skills, such as jokes and insults used in the NPC Conversation system (flattering or goading an NPC into a certain state can be beneficial- or detrimental- to the player’s goals). Also in this realm are Soft Skills such as Bluff, Empathize, Plea, or other skills that try to manipulate another character’s state of mind to be receptive to an offer or to accomplish a goal on behalf of the player.

The second purpose of the trait levels is similar to the first, with the exception that it is handled internally, towards the end of influencing the state machine that runs, using states that are not part of the list of traits, but are influenced by the traits. For example, an NPC who is somewhat…”unhinged”… needs to be portrayed as a character who suffers from wild mood swings. To do this, you would want to have the internal AI roll against the Stability trait, and if the level is sufficiently sensitive to trigger a state change, then the AI would adjust it’s emotional state, which can lead to changes in how it filters AI input such as from the NPC Conversation system. Some state changes can be small and fall well within normal human parameters and thus go unnoticed by the player, while others can turn a normal conversation into a confrontation with a bewildered player (“Dude, WTF? All I said was ‘nice shoes’- why are you coming after me?!”). Obviously, these kinds of encounters would be pretty rare, but it serves as an illustration of what I’m hoping this system can accomplish.

Another neat thing with these traits is that they lend themselves towards describing the different kinds of NPC “archetypes” we’re looking at portraying in the game. With the procedural content generation system, we can generate and deploy NPCs tailored to their needs. If we need to generate a Charkritian nomad who treks through the deep desert, we’ll want to raise the Confidence, Patience, and Discipline levels, as well as lower Openness, Extroversion, Trust, and Altruism. What those things tell us about the NPC is that they are used to a hard existence with lower levels of contact with others, and so tends to be quieter, more of a loner, and slightly distrustful of strangers, which tends to reduce Altruism, which is the willingness to help others (different real-life cultures actually make the case toward an increase of Altruism in harsh environments, but it’s not always more interesting to reflect real cultures within games unless that’s your goal, just like it’s not always as interesting to reflect the real world in MMO gameplay in general).

Using procedural content generation methods, we can create templates for cultures, regions, professions, and personality types, and then combine them to create an immense range different personalities that reflect their environment and “past”. From here, you can go further and even implement a set of mechanics where you can permanently or temporarily change the Personality Trait Levels of the NPC for a variety of reasons. While I’m not yet to the point of testing that sort of mechanic, it may yet be deployed into the AI system.

What I have tested now, however, are a number of smaller “rolled AI” actions that the player can take. Things like “scaring” the NPC, “pleas for help” which result in the AI coming running to my aid. Simple things. But these simple things have shown me that sometimes, an NPC will hear your plea and just stand there, much like people can do in real life.

February update! Yippie!

February 9th, 2009

I refuse to apologize for the title- it’s hard trying to come up with new and exciting titles for the blogs here and on my GarageGames blogs. But since you’re reading this, here’s what’s been going on with Epic Frontiers…

#1 Recipes are enabled. No videos of it yet. Why? Well, it’s not “done”. Sure, you can make items just like in WoW or other recipe-crafting games… But that’s not how Epic Frontiers is rolling. I’m working on some other functions for modifying those items and breaking them back down into pieces- cool stuff. But since it’s not yet ready, I don’t want to post the video up on YouTube.

#2 And that brings me to my next update: No more Vimeo videos. Oh, they have really high quality video on their site, but as you’ll notice in my other blogs, there are random videos missing, and my pleas to Vimeo that these development videos are not just video captures of gameplay and should be reinstated has fallen on deaf ears. I’m not the only game developer that has been hit with their arbitrary rulings either, so I have created a YouTube channel for Epic Frontiers, and I’m going to try and get the resolution of the game bumped up so I can upload some HD stuff for your viewing pleasure. OR… I’m also considering direct hosting of the files to see how that works.

#3 Co-op! Yes, we’re talking about how to successfully create co-op gameplay features in Epic Frontiers. No guarantees yet as to what will make it in, and what will not, but our guidelines are to make it fun, as simple as possible, and in-line with the “laws” of the game universe. So you won’t find co-op gameplay under every rock in the game, but we’re looking to implement it in some areas that make the game that much more fun to play with friends.

#4 Game Website! It’s a long time coming, isn’t it? Well, in all honesty, there’s three of us working on this game, with day-jobs and relationships and… ugh, time is a commodity, and we give priority to the game itself, but looking at the webstats, we understand that the game is getting more and more attention, which says something considering how much eye-candy we don’t have on display here. But by the end of this week we should have the game website up at http://EpicFrontiers.DigitalFlux.com and in the meantime, you can pop into the message boards at http://EpicFrontiers.DigitalFlux.com/devboards to ask questions for us to dodge ;-)

#5 One of the big focuses of this month happens to be on AI. You’ve seen from the other blogs that we’re putting some interesting features into the hands of you, the player, but it just wouldn’t be fair to give only you all that firepower, now would it? No. So the NPCs and MOBs in Epic Frontiers are getting a brain-boost to take them beyond the realm of “aggro as AI”. That’s all there will be on this subject until around early March though, and rest assured that you’ll like what you read when we talk about that.

So that’s about it for the update for now- I need to get back to making the website…

What Would MacGuyver Do?

December 26th, 2008

Answer: Probably something involving chewing gum, a safety pin, duct tape, and a pine cone. And completely getting out of whatever mess he was in. Which leads me to my next point…

While taking a break from coding the Inventory and Equipping system, I knocked out a fairly fast piece of gameplay that will hopefully become part of every player’s arsenal once the game goes live: Alternate Actions. But just what is that, you ask?

Simply put, it’s the ability to use objects for purposes other than what they were originally intended. Ever need a screwdriver and use a knife? What about hammering something with a rock? You might wonder why you would need such skills in an MMORPG, but it’s an indicator of where we want this game to go. Adventure means so much more than hack, slash, then cart your valuables to town and come back to finish off the quest with yet more hacking and slashing, and we mean to provide players with first-rate adventure.

So the video below reveals the rather low-key gameplay feature of being able to use objects for multiple types of actions. It doesn’t look like anything special, but just wait until you’re caught out in the middle of nowhere and need to fix something you need for a quest with a rock and a rusty knife:

Epic Frontiers Dev Blog: Inventory Features and Design Thoughts

December 22nd, 2008

So while I wait for a project backup and a Vimeo upload to complete, I figure I would take the chance to do a weekly development blog.

Epic Frontiers hit a pretty nice milestone today: The inventory class of functionality hit 86% completion. Why not 100%, you ask? Elementary, my dear . There are some features in the progress list that cannot be completed at this time, but do not affect the actual features of the game. Functions that do things such as changing textures or geometry when items are equipped. So for all intents and purposes, Epic Frontiers has a testable inventory system. Here, have a look:

The above shows looting and a few other things. The below shows a makeshift trading window with some inter-character inventory operations happening:

Snazzy. I’ll tell you what else is snazzy(tm): Being able to embed these videos with Vimeo. Saves me the time from having to wait to see the other guys to show them my progress, and let’s me share it with you too. Good stuff.

So with that progress announced, the next target in my sights is probably the AIAE system, along with its hooks into the NPC conversation system. You’ll get some videos of that in action as well, but probably more of being in the form of the conversation side of things. But all that planning aside…

The inventory system is pretty full-featured, with things like autostacking of items and all the other basic features of inventory systems in place thus-far. Of course, the 86% completion will inevitably go down as we add a few things to the list that we want to see. This is not out of feature-creep, mind you, but something else.

In most of the discussions between the three of us designers, we’re constantly talking about situations we would like to “support” in the game. Today’s discussion wheeled around to something we’ve kicked around a few times, and probably will a few times more, until the features are either in place or testing confirms that it’s not good for gameplay: Incarceration.

The premise of trying to make Epic Frontiers closer to a Pen and Paper game means that we have to think about and try our best to solve gameplay dilemmas such as this, but first I have to back up and talk about a few basic changes we’re making. The first is that being killed in the game is indeed Permadeath (gasp!)- but that’s not to say that you’re going to be killed often… or even rarely, if you don’t want to. The solution to Permadeath was to make it so that a player must voluntarily submit to that game-rule in order to gain a very rare, very hard, very prestigious achievement. And should the player fail and die, his next character will not start out empty-handed and at “zero”, nor will the older character be forgotten in the gameworld. In order to allow character death, it cannot be any other way than to ensure that the player is taken care of both in success and in failure.

Now, if you don’t really have to die except in trying to go for these uber-achievements, then what’s the big deal? What happens when you get jumped by some Charkritian bandits in the deep deserts of the Hamak’Del and your hitpoints go to zero? Isn’t that death?? Actually, it means you’ve been incapacitated. One of the things that gnaws at me in MMO’s is dying fifty times a day and just running off to my headstone to come back to life. There’s a lot of problems with this: What about NPC’s and MOB’s- don’t they get to come back? Why not? Who buried me, and why put me in the ground or give me a headstone if all I need to do is run my ghost over to my carcass and- poof!- I’m back! No, death needs to mean something, and taking it out of that context is the first step towards making it happen. Of course, laying there incapacitated, you’ll eventually get picked up by the roving rescue teams that are funded by the goverments of the area, and brought to one of the many anonymous medical clinics, where you will wake up to finish healing from your wounds. Sounds… What’s the word… Reasonable.

So now we have a game where a character can be knocked out in combat and left for dead instead of actually being killed, and situations that are extreme enough to kill the character, but only if the character wishes and voluntarily opts into those situations, which are not designed to be commonplace. That is the underlying mechanic for incarceration. It’s not the actual reason why we did that- it’s a great underlying mechanic for a role-playing game as a whole, not just for individual features, but that’s neither here nor there. The fact is, we were toying with the idea of how to make jail fun. We’ve actually managed to come up with an interesting gameplay design today that has a lot of promise, though it does need additional fleshing out to account for different types of players, but we’re starting to feel good about it, even to the point of turning it into a feature.

The point of all this is: When you design your game, are you designing the game around your features, or the features around your game? It’s a rhetorical question. Many people design the game around the features they outline in the beginning, which can be restrictive to the scenarios that they think of, leading to them wanting to put additional features into the game. They call that “feature creep”. However, would you still call it feature creep if your design method involved trying to look at all the situations you want to represent in a game during the design phase and put those features in the list as they’re being developed? That’s a rhetorical question too. For both questions, the answer doesn’t matter so much as the end result because neither answer really addresses whether your game will actually be fun to play. So maybe my point has no point after all, but is just trying to make people think about how they think about their game design practices.