Design Diary: Gossip (2)

January 2nd, 2013

Today’s problem is the AI for the game. Each NPC must make six decisions:

1. Whom to call
2. How long to continue a conversation
3. Whether to honestly declare “I don’t know”
4. Whether to dishonestly declare “I don’t know”
5. Whether to lie in direct statements.
6. Whether to lie in indirect statements

This could become quite complicated, so I really should exercise discipline in not getting carried away with complexity. The starting point, I think, should be an assessment of what the NPC wants the listener to believe. That in turn depends on a higher-level consideration: how the NPC perceives the relationships in the group. He should sort other characters by perceivedAffinity[me][other][me]. Closer characters should be treated well: call them often, have long conversations with them, and be more honest with them. Farther characters should be called rarely and told little.

There are two basic strategies to consider. First, the NPC should attempt to lengthen the distance between a friend and an enemy by telling the friend that the enemy hates them. Second, the NPC should attempt to shorten the distance between anybody and himself by telling them what they want to hear: telling them gossip that confirms what they already think.

Early in the game, the NPC won’t know anything about the others, so he wants to gather lots of information, meaning that he talks freely with anybody.