Formal(-ish) Models For NPC Decision-Making and Persuasion

For that stuff specifically a lot of it is down to the writing of the interactions themselves. My basic model is that most early interactions are comparatively free-form and low-stakes, and from the start the core gameplay loop will emphasize that the player should be thinking about things as iterative choices.

Time works kinda-sorta vaguely like a modern Persona game, if that means anything to you. Days are divided into segments: early morning, afternoon, evening, and so on (via calendar cycles from the calendar module). Time doesn’t advance automatically, but only when doing certain tasks (like “dungeon” exploration, which in this case means things like “searching the woods for the UFO crash site”; or “searching for a copy of the Necronomicon at the local library”). And the player will learn early on that they’re not playing out a single day or just a couple days, but they’re going to be thinking in terms of “what kinds of things can I do in afternoons” and “what kind of things can I do at nights” and so on.

So in addition to scripted hinting in the responses (“Nah, I can’t get a beer after work, I’ve got too much other stuff to take care of” or “Nah, I’m just not feeling it today” or whatever), there are a couple specific NPC interactions that are intended to basically offer a tutorial on the mechanism(s), in that the player will just naturally end up interacting with them every day. And then hopefully translate the pattern into interactions with the rest of the NPCs.

I also have a dig-as-much-as-you-want, fourth-wall-breaking in-game tutorial mechanism: bathrooms in the game always contain hints for the nearby puzzles and basic gameplay mechanics. And the bathroom near the first NPC you meet has information on how NPC interactions work. Or rather it will when the game is close enough to being done that I actually start replacing all the placeholder text with actual gameplay and puzzle hints.

That all applies to the specific case of player-NPC interactions. Which is a big part of the design. But the point I’ll make is that the decision-making logic is basically just a (hopefully) nuanced way to roll the dice. Part of that is giving flavor to player-NPC interactions, but those interactions are never (in my design) going to be purely procgen things. That is, I’m not using an LLM (or anything else) to generate text, so the basic writing task isn’t that different from what you’d do in scripting the interactions using a more “traditional” affection gauge/fetch quest kind of thing. That is, you’re still having to add hinting (either directly in dialog or off to the side, environmentally, via interactions with other characters, or whatever) to clue the player in to whatever the blocker is.

And then the other part of the design, which is NPC decisions that aren’t part of direct interactions with the player and I think those end up reading as “working” even if the player can’t directly see or deduce the inner logic that produced the behavior. Like, if instead of just standing around and being a dialog kiosk some of the NPCs are doing things independent of the player’s actions, that is, or at least can be, inherently interesting.