Classic NPC AI decides what a character does: behaviour trees, utility scores, pathfinding. LLM NPCs add what a character says, in response to anything. That is the attraction and the risk: players will ask the blacksmith about the ending, try to make the priest swear, and paste in instructions to break it. A character that answers all of that freely is not a character.
So the model is the voice, not the authority. The writers own a character profile, what the character knows and does not know at each point in the story, and a lore base it retrieves from. Game state changes, such as giving an item, starting a quest or turning hostile, happen only through a small set of actions the designers expose and the game validates. The model can propose; the game decides.
Latency and cost are design constraints too. We budget each line, use smaller or local models where they are good enough, cache common exchanges, and keep a scripted line ready whenever a response is late or rejected.