Determining what action an NPC will take, when it is partially random but influenced by preferences?

Posted by lala on Stack Overflow See other posts from Stack Overflow or by lala
Published on 2010-05-13T02:38:51Z Indexed on 2010/05/13 2:44 UTC
Read the original article Hit count: 282

I want to make characters in a game perform actions that are partially random but also influenced by preferences. For instance, if a character feels angry they have a higher chance of yelling than telling a joke. So I'm thinking about how to determine which action the character will take. Here are the ideas that have come to me.

Solution #1: Iterate over every possible action. For each action do a random roll, then add the preference value to that random number. The action with the highest value is the one the character takes.

Solution #2: Assign a range of numbers to an action, with more likely actions having a wider range. So, if the random roll returns anywhere from 1-5, the character will tell a joke. If it returns 6-75, they will yell. And so on.

Solution #3: Group all the actions and make a branching tree. Will they take a friendly action or a hostile action? The random roll (with preference values added) says hostile. Will they make a physical attack or verbal? The random roll says verbal. Keep going down the line until you reach the action.

Solution #1 is the simplest, but hardly efficient. I think Solution #3 is a little more complicated, but isn't it more efficient?

Does anyone have any more insight into this particular problem? Is #3 the best solution? Is there a better solution?

© Stack Overflow or respective owner

Related posts about ai

Related posts about artificial-intelligence