So okay guys, here is a crazy thing that I’m just doing a thought-experiment with. Now, I have a background as a linguist, and I spent some time studying a theoretical approach we call Optimality Theory, which I will attempt to use to create a way for you to easily decide what your NPCs do, with a naturalistic texture.
Step One: Scope
For any given NPC brain, you need to set a scope. Let’s say I want to make a brain for a villain in my ongoing D&D campaign, Journeys to Tanelorn. He’s a campaign-level plot, so let’s set the scope of this brain to ‘medium term tasks.’ These are approximately things you can set out to do and accomplish in a week without monomaniacal focus, like “get a new pair of eyeglasses” or “buy a cow.” Maybe we’ll use slightly longer-term tasks now and then. The scope will inform our choices for constraints later on.
If you want to handle an NPC at multiple scopes, use your largest scope brain to choose your main tasks, and break that down into sub-tasks and evaluate those, and so on. I am not sure to what extent you might benefit from this.
Step Two: Constraints
Now we are going to set up a number of constraints that color your NPC’s thinking. I don’t think we’ll benefit from using more than three to five per scope. Here’s where you start creating your NPC’s personality. In OT, we define constraints as “things that we try to avoid. That try to is important! You may arrive at a situation where you need to violate one or more of your constraints. That’s okay, even desirable. (In OT linguistics, the prototypical constraints, from which all the others are derived, are in direct conflict: “Say as little as possible,” and “Say what you mean.” The specific way that different languages resolve this conflict is what makes them unique.) It creates that naturalistic texture we’re looking for.
For our villain, let’s imagine that he is a merchant baron living in Tanelorn. We will call him Leoric. Maybe what we know about him is, he’s petty, lazy, and greedy. Now let’s translate those into constraints. For petty, we can say, Don’t let an offense go unpunished. In the table below, we’ll call it PUNISH and it’s violated when Leoric is annoyed and does not punish anyone. Let’s elaborate this a bit and add another constraint, *DICK (that’s pronounced star dick,) the “don’t be a dick” constraint. *DICK says, Punish the person who offended you. We only care about it when PUNISH is also relevant. What’s interesting about *DICK is that, because it’s a constraint, we can violate it sometimes, which means that sometimes Leoric will be a dick to someone to blow off steam from some third party pissing him off.
For lazy, let’s use MINION: Don’t do things yourself. For greedy, we’ll use *50gp: Don’t spend 50gp. Leoric’s greed doesn’t affect his decisions unless expenses hit a certain price threshold; then he gets sticker shock. *50GP can be violated more than once—if a task costs 100gp, that’s violating twice. Again, we can violate these things if necessary.
Lastly, we have to figure out how much these things influence Leoric’s behavior. Maybe we’ve already established that he rides around in an expensive carriage; he blows a lot of money to look cool and avoid walking on his own two feet. That tells us that MINION » *50GP ( » is pronounced “dominates”), which is to say that if Leoric is forced to choose between doing a thing himself and spending 50gp to get it done, he’ll spend 50gp. We could devise test cases for the other stuff, but instead, let’s just define them in a way that seems fun. We’ll rank PUNISH below MINION (Leoric will avoid personally punishing folks even if it results in them going unpunished) and *DICK below *50GP (Leoric will avoid being a dick if it doesn’t cost him anything.)
Step Three: Evaluate A Task
So now that we have Leoric’s thought processes in hand, we are able to evaluate his actions. We do this by naming a desired end goal, like for instance “That potato farmer pissed me off; acquire his farm.” Next, we think of some strategies that he could use to make this happen. (In by-the-book OT, we would assume that all possible courses of action are being evaluated, but that is bound to make your decision-making less enjoyable, so let’s not.)
- Go to the farm and buy it.
- Send a dude to go to the farm and buy it.
- Drive the farmer off his farm and take it.
- Send dudes to kill the farmer and take his stuff.
- Abuse the dudes you are sending to kill him and take his stuff.
Okay that’s enough. Let’s say, btw, that this farm costs 100GP. Now we can evaluate these courses of action against the constraints. We use an OT tool called a tableau to illustrate this.
How to read this: If there’s a star in a cell, it’s a constraint violation. If a candidate has a violation and any other surviving candidate doesn’t have one for the same constraint, its a fatal violation—the candidate is strictly worse than some other. Fatal violations are marked with an exclamation point. (Due to the limitations of my WordPress style I can’t use the helpful shading that OT tableaux usually use to mark cells that we can ignore.) In this case, the winner has no constraint violations at all! This isn’t always the case. If it hadn’t occurred to Leoric to drive the farmer off his farm, he might have tried to send a dude to buy it for a reduced price, which would end up violating *50GP once rather than twice.
Obviously this is a laborious method and I’m not sure that you should actually use it in tabletop gaming! But I assure you that, with repeated use, it becomes a much faster technique. You can often do it in your head.