Conventional writing advice encourages using beats — descriptions of character action and reaction — to provide variety from an endless stream of “he said” and “she said” tags. This is great advice, but it can be kind of annoying to implement in IF, because any time you describe a character interacting with the environment, you have to make sure that
— the description fits the current world state; the character isn’t adjusting a pair of spectacles he’s no longer wearing, or looking at an item that the player already put into a locked safe in the other room.
— the description correctly modifies the current world state: if the character moves, dons, doffs, or breaks something, that is reflected properly in what we see thereafter.
— the description fits the character’s mood and personality; not every character should draw from the same pool of gestures, and an individual character shouldn’t repeat himself too often. Every character needs his own gestural vocabulary.
— the description reminds the player/reader of the environment, and physically grounds him in the location. In lots of IF, it’s hard to get away from location — interacting with it is all there is. But in very chatty IF, it’s possible to lose all sense of place and start to think of the characters as two floating heads speaking in a vacuum.
— the description contributes to any ongoing action that is supposed to be happening in the scene (if, for instance, the character is supposed to be in the process of performing some task or other); since IF dialogue can happen in various orders, we have to decouple the dialogue from whatever other thing the character is doing.
— (subtler) the description is not too distracting from the dialogue. Sometimes we have descriptions of characters taking independent action which would be fine on their own (if that’s the only thing that character is doing this turn) but which are too detailed or long-winded to fold into the flow of other dialogue.
There’s no one-size-fits all solution to these problems. In Best of Three, I was most concerned about grounding the player in environment and in communicating the NPC’s mood to the player, so I gave the NPC a series of postures. A change in mood would trigger him to change his posture, and the change from one posture to another was a source of beats.
In other contexts, it can be useful to be arrange beat elements in a linear way rather than as a state machine: e.g., with a table or list of beats representing each stage of the action the NPC needs to be performing during dialogue. In I7, it’s sometimes useful to use small scenes to represent the stages of NPC behavior — since multiple scenes can be running at a time, the NPC’s actions can be tracked separately from any scenes that have to do with dialogue.
Whatever approach I take, though, I almost always find that it’s good to have some special model whose job is to provide the content of the beats, and for the conversation quips to refer to that model most of the time. There are of course always exceptions — sometimes a piece of dialogue just has to be paired with a specific gesture or expression, and that deserves to be hard-coded — but the more flexible model allows for livelier dialogue overall, and a more complete sense of place.
Edited to add: see also Talking Head Avoidance Device.