(also spare a thought for the poor QA testers who would be given the Sisyphean task of making sure an LLM dialogue system always stays in character and doesn't hallucinate non-existent or outdated content/lore/mechanics)
> a good priest wondering what a paladin was doing spotted talking to a notorious thief, etc.)
Love this and the other examples you gave.
Not every NPC would have something deeper to offer, much like not everyone in our world would have something that would pique my interest (in a general sense -- I'm sure I could learn something from anyone I spoke with), but it would also make me interested in conversations with NPCs at a deeper level than I currently engage with.
But of course there is a story behind them.
something like
---
"You are Bob the Farmer. You grow rutabegas in the Kingdom of Foo. You are a cautious, fearful man. Several years ago your home was pillaged by King Foo and your family was taken. [blah blah blah several more paragraphs of biographical information]
Your primary motivation is to get your family back and keep the farm going so that you don't starve.
Last week you saw a mysterious group of figures in the woods who appeared to be headless. This is bothering you, along with the stress of your missing family. You wish a band of strong warriors could investigate, especially if they have a necromancer among them.
You may discuss any of the general world knowledge in background_lore.txt
You know nothing about the following topics: [[insert list of plot points that haven't happened yet or are unknown to him]] and will become confused, fearful, and slightly belligerent when asked about them."
---
You could of course update the system prompts for each character as the events of the game progress.
It would be a lot of work to keep these system prompts updated and relevant, for every character, as game events progress, but I think some of this could be handled by some kind of inheritance system.
Suppose "Bob" lives in "Town A", which is in "Kingdom B." You could probably define a lot of things at the Town/Kingdom level. Like suppose "Kingdom B" is plagued by orcs, but "Town A" is kind of a citadel that is safe against orcs. "Bob"'s system prompt could inherit a lot of concerns and knowledge from "Town A" and "Kingdom B"... the system would not have to be strictly hierarchical either.
Namely, the dialog would still be fixed, where there's a pre-defined flow of the conversation and fixed set of facts to deliver to the player. But the LLM could generate variations on it each time so it's never exactly the same twice. And it could add more character so the NPC gets frustrated if you keep asking it over and over. Or, it tries to dumb it down for you. Or, it gets sick of you and just tells you point blank: Look, you need to know XYZ. That's all I have for you.
Namely, the dialog would still be fixed, where there's a pre-defined flow of the conversation and fixed set of facts to deliver to the player. But the LLM could generate variations on it each time so it's never exactly the same twice. And it could add more character so the NPC gets frustrated if you keep asking it over and over. Or, it tries to dumb it down for you. Or, it gets sick of you and just tells you point blank: Look, you need to know XYZ. That's all I have for you.
If you indexed that with the unique character descriptor then the LLM can be programed to re-read the relevant data other iterations of itself made and keep the characters somewhat consistent.
Maybe allow it other information like:
"How many in game days since last conversation" after a random number would cause the npc to forget the character "What major events have happened in the world, if any" "What events have happened in this area" "Generic gossip related to this character" "What other NPCs are doing at this time"
All of these combined into summary paragraphs would go a long way to influence what topics would be on the characters mind while also not requiring that every NPC has a perfect knowledge of all events or that the game designers have the script everything out.
Could also cause some interesting emergent gameplay, both naturally by the game world evolving over time as the characters play in it, moreso if it's a MMO.
Could also be fun to do things like advance the game clock 1,000 years and see what happens to the npcs.
What if the world is fully destructible? What if the NPCs can build new houses, expand cities, engage in trade? What if NPCs can die of natural causes, get married, have children that are genetic descendants of their parents? What if NPCs undertook quests and occasionally advanced the plot all on their own?
What if you were just one person among hundreds of thousands in the game world?
I'd love to play something like that.
If I travel with Batu the Hun and meet Zaya the Hun Slayer I want to be able to ask Batu if I should kill Zaya on the spot or should entertain his offer. That kind of stuff is extremely valuable both for the connection between player and companion and to provide an in-world perspective on the events you witness and the actions you take. But it's also extremely time-intensive to script. It's also very low stakes, it is essentially small-talk. And with some careful design you can limit it to short exchanges with AI-provided dialogue choices and have it distinguishable from scripted dialogue that advances the story
Realistically NPCs should probably respond with increasing urgency if you forget their quest, and eventually give up on you.
For example, if you're instructing an LLM to portray a character, instead of repeating dialogue like a broken record when they run out of relevant things to say... instruct them to act like their character would.
They might wonder out loud if there's anything else you want to know, or literally let you know that you're acting weird and awkward, etc.
Pair w/ a journaling system so that you can review their dialogue without talking to them and asking the same thing 50 times. Etc.
also spare a thought for the poor QA testers
This doesn't seem entirely unsolveable given strict enough system prompts.Maybe there could be a hybrid system - choose from suggested responses, or type your own.
I also have vague thoughts of a dialogue system that rewards true role-playing, as in rewarding the saying things aligned with what your character might feasibly say. (Like a more freeform version of the dialogue/RP/reward system in Disco Elysium)
Unlike regular prompts you can optimize them exactly the way you'd do fine-tuning, i.e. if you have examples you can tune your latent prompt to match them as close as possible. I guess the benefit is that you can match style more closely and it would be less artificial. Also they can be rather compact.
Another option is to keep a bunch of LoRA adapters which can be dynamically selected. They can also be very compact.
It would also lend itself very well towards interactive fiction, point-and-click adventure games, etc.
Especially if you pair it with a capability like the voice interface of ChatGPT which I find very impressive in terms of intonation and realism.
It would not need to cut humans out of the loop. You would have humans writing the prompts, recording voices, etc. (I assume the synthetic voices used by ChatGPT are based at some level on recordings of humans. Correct me if I'm wrong.)