Epic Frontiers site goes live, and AI systems in more detail…
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.