[MUD-Dev] RE: TECH DGN: Story detection

John Arras johnarras at gmail.com
Tue Sep 6 17:28:52 CEST 2005

Paul Boyle wrote:

> However, I haven't really seen any attempt to detect the story a
> player is trying to tell within a game.  Fa=E7ade does it a
> little, trying to fit your plot contributions into the overall
> plot of the one act play they tell.

I've never considered looking at this problem from this perspective.
I've been trying to make systems that generate events for players
and keep track of the results of those events, but not really
thinking in terms of detecting stories that players want to
tell. That's even harder than what I want to do. I define story to
be the meaning you give to events, so if I want to make computers
tell stories, then I want computers to generate events that players
will later remember as stories.

With that in mind, the system I am working on uses 5 major
components that work together to try to generate stories and let
players create their own stories. I've decided to call this REIGN AI
because the components are Reputation, Environment (or Ecology),
Items, Groups and News.

The principle is the following. The players have reputations wrt
NPCs and groups, and groups have loyalties (think
loyalty=3Dalignment) toward each other. When a player encounters an
NPC to talk with it, these numbers interact to tell how much that
NPC likes the PC at that time.  When you do things to and for NPCs
and groups your reputations change, and perhaps if you gain a lot of
reputation and influence over time, you might be able to influence
NPC loyalties to groups, and loyalties between groups.

The environment exists as a place for the NPCs and PCs to gather
resources, and it needs to have a lot of crude simulation in it to
make sure it doesn't get depopulated too quickly. To that end, I
believe the plants and animals and minerals that are instantiated
should be a small fraction of what's in a location and be
representative. Players should be able to depopulate the world, but
it should take a while and they shouldn't be able to mess with large
portions of the world all at once.

The items are the core of what makes the player actions meaningful.
Players get and make items for NPCs who then use them within their
groups to advance their agendas. The item crafting should be
recursive, and each type of item that gets made has a command
associated with it, and it should have a job associated with
it. When the NPC groups generate their citizens, they generate them
based on the jobs they need filled. When players talk to NPCs, the
NPCs only care about what items they can make, or materials they
need to make their items. This cuts down on the CPU a lot since each
NPC only has to know about a small part of the world.

The groups are where the real intelligence is. They are like RTS
AI's but with much more complex item creation needs, but it's ok
because these will be designed to last for 2 years, not 2 hours like
an RTS is, so it's acceptable to have very expensive updates of the
groups since they can be infrequent. When the groups update
themselves, that changes the goals for the NPCs associated with that
group. We can have hierarchies of groups such as political,
military, religious, guild.  And, we can have unaffiliated groups
such as outlaws. NPCs belong to a group if they have +loyalty toward
it. Assuming loyalty is on a scale from -100 to 100, a certain NPC
baker might have a 90 loyalty toward the guild, 30 toward the city,
and -10 toward religion. That would mean when you talk to this NPC
and do things with it, the ways in which you have worked with the
other groups.

News (or rumors) are used to keep track of what players and NPCs and
groups do. When something important happens: death, making items,
building something, political actions, ??? a rumor is created and
given an intensity and starting groups and NPCs. These rumors
propagate across groups that have loyalties (+ or - since we assume
- means there are spies of some kind) and then filter down to the
group members of the group over time by increasing the percentage of
the group that knows the rumor. When NPCs talk to PCs, they can tell
the PCs about rumors they know (and assuming it's not too expensive
to keep in, I have something in here to keep an NPCs from telling a
PC the same rumor over and over....) and they decide what rumor to
tell based on how important it is and how new it is, how loyal they
are to the group that knows the rumor, and what percentage of that
group knows the rumor. (Note: -90 loyalty is treated as +90 loyalty
here..since if you REALLY care about something one way or the other,
you are more likely to pay attention when something happens to

So, your question is how do we make games that detect stories that
players are trying to tell? The answer for that is, I dunno right
now.  The best I've been able to do is come up with this system that
makes a world with groups that have needs (items) they want to
fill. They generate NPCs to flill those needs and when players
encounter NPCs, they can find out about news in the world that the
NPC knows, and perhaps find out about things the NPC's group needs
done. If they do things that the NPC likes (such as giving flour to
a baker), then the reputation of that PC goes up wrt the NPC and the
NPC's groups.  Reputations chain, so if you do lots of stuff for
city A and city B really likes city A, when you go to city B, you
will have a bit of +reputation already, but you really need to get
the reputation from B to have influence in B. And, of course, when
you do things that are important, they are recorded as news so that
other players can eventually hear about them.

One problem is that I'm not that creative about creating quests, but
what I could imagine is different kinds of quests that aren't FedEx
Kill X Y, get X Y...and so forth. But I can't think of these too
well.  I think another way to approach this is when a player uses a
command, if it's being done wrt an NPC, then there should be
automated code that determines if the NPC likes it or not, or
doesn't care and then modifies the PC reputation wrt the NPC and its
groups accordingly.

There's one other part I forgot. These actions are things for which
the players are rewarded if they're good, and the importance of the
action should also be taken into account so that perhaps a news item
of some kind can be generated to let everyone know. Some things like
healing 1 person of disease will have to be recorded (say have a
recording of player X did action Y for someone in group Z with
percent P at time T) and if these numbers get beyond a certain
point, a news item is generated after the player stops doing the
action for a while.  I haven't figured out when and where players
should get rewarded if they do these actions far away from the NPCs
they're helping, but certainly if you give flour to the baker, you
should get your reward then and there.

MUD-Dev mailing list
MUD-Dev at kanga.nu

More information about the mud-dev-archive mailing list