Something that emerged from my reading on conversational analysis is how many of our conversations in daily life are essentially pre-scripted, not in their details but in their overall shape. Someone you don’t know well calls you on the phone: you identify yourselves to each other, exchange a little small talk, get to the point of the telephone call, resolve that business, and hang up. You go to a movie: you tell the person behind the desk what you want to see and when, that person prints tickets and tells you the price, you pay, you exchange concluding civilities and leave.
It might seem that we can negotiate these scenes because of our natural language fluency, but that’s not really the case (or not all of it): context helps a huge amount. I’m terrible at following a conversation between two French speakers I don’t know anything about, but I’m comfortable ordering a restaurant meal, buying stuff at a store, checking into a hotel, etc. — because those are situations for which I not only have the specific vocabulary but have very clear expectations about each stage of interaction to help me guess what an ambiguous utterance might mean.
It occurred to me that this idea of scripts might help address a particular problem with characters in open/exploratory IF where the player can choose when and how long to interact with each person in a landscape full of (say) shopkeepers, tourists, bus conductors, etc. One usually has a choice of making these interactions either very curtailed or very unrealistic: either you can *only* talk to the shopkeeper about the price of milk, or you’re allowed to ply him with a lot of questions about everything under the sun, which a real shopkeeper would probably try to cut short.
So my current implementation works this way:
When you meet a new character, that character tries to work out which script you’re on. He may have some starting assumptions (a shopkeeper will assume that you’ve come to buy something), but your behavior might change his mind (if you walk into a shop and ask for directions, he’ll decide you’re in a lost-tourist script rather than a buy-stuff script). Once he’s ascertained which script he thinks you’re on, he’ll usually try to help you along towards its conclusion — say by giving you directions and some general advice about town. And when he thinks he’s fulfilled the obligations of the script, he’ll expect you to go away again, unless you initiate a new one.
Of course, there are some scripts that some characters don’t want to be in. A shy person, or a tourist who himself doesn’t know his way around, might not be able to play the other role in your lost-tourist script. Moreover, some scripts (aggressive evangelizing about politics or religion, discussing sensitive topics, hitting on a stranger) might be unacceptable to nearly everyone. When this happens, instead of participating to the end point, the character will try to explain that he’s not interested, or even excuse himself and leave if that’s suitable.
The current script may even determine whether the character is willing to answer certain questions, even if there’s no real difference in friendliness or intimacy level, because the questions that fit the script are more acceptable than ones that don’t.
In describing this model I’ve probably made it sound fancier and more simulationist than it actually is under the hood — essentially various characters have quips they can use to try to find out what you want, and certain triggers that will make them think they’ve figured it out, and they will then follow rules appropriate to their assumptions. But I’m finding that, for casual encounters, this approach is more effective than trying to model things like friendliness, trust, attraction, etc. The latter tend to be more useful in long and intimate conversations or in a relationship that develops over many scenes.