Dynamic NPCs Are In
One of the features I’ve been most excited to build since day one just landed: dynamic NPCs. This is the first real stress test of the AI content engine I’ve been building toward. Let me walk you through what’s in and how it works.
Seeding the World
When you start a new game and the map generates, a handful of NPCs get seeded into it alongside everything else. They’re part of the world from the very beginning — they have names, backstories, and motivations, all randomly generated at game creation time. The LLM is used sparingly here - most of the content is coming from random tables, with the LLM asked to then map the random name and motivation to existing archetypes.
Some of the NPCs will be immediately visible on the map, marked by a little gold star icon. Others are hidden, lurking somewhere out there in the world, and you’ll stumble across them organically as you explore. If you want to test it out, it’s definitely worth finding a star and pushing towards it.

The Encounter
When you actually meet an NPC, the LLM is more involved. The game hands off a bundle of context to the AI: the NPC’s randomly generated motivations, their history, and your character’s hand-written backstory. That backstory is the text you wrote during character creation. The AI reads all of it and generates the NPC’s opening dialogue from scratch, trying to weave threads between your character’s story and the NPC’s situation.

The result is something that feels genuinely authored. The NPC above, Bird Rhegedsson, clocks your character Merlin by name and their dialogue options pull from both characters’ histories. It’s not a canned response — it’s something the model constructed specifically for that meeting.
Now the responses and branching from there won’t be just open-ended chat with an LLM. We still keep a pretty tight hold on the rails here, presenting the LLM with options of pre-existing templates to choose from. It’s like we’re playing mad-libs with the LLM. We let it make connections between content that was hand written by the player and content that was pre-authored for the game.
This is the core promise of HexCrawl in action: the AI isn’t generating the game, it’s personalizing it. The NPC exists deterministically. Their motivations were rolled on a table at game start. But the moment you meet them reads like it was written for you, because the model is actively trying to connect their story to yours.
Still Very Much In Progress
This system is still pretty bare bones. Right now it generates a greeting and a handful of dialogue options, and that’s about it. The NPC remembers the interaction so the next time you encounter them they may reference the earlier meeting, but there’s no real consequences to how you respond. Every encounter is essentially a self-contained vignette.
Here’s what I’m planning to build on top of this foundation:
Quest system. NPCs should be able to dispatch you on missions — go find this thing, clear out that nest of wolves, deliver a message to someone three days’ travel away. The goal is for these to grow organically out of the NPC’s stated motivations. If an NPC is driven by vengeance, the quests they offer should feel like a reflection of that.
Encounter scattering. Important NPC encounters should be foreshadowed before you actually reach them. If there’s a powerful warlord seeded somewhere on the map, you might start running into their scouts and soldiers first — little breadcrumbs that build anticipation. By the time you finally meet the main character, you’ve already got context.
Reputation tracking. Right now every encounter starts fresh. Eventually I want the game to remember how you’ve treated people. If you cut your way through every minion of a certain NPC on the way to their castle, they should be calling for your blood by the time you arrive.
What’s Next
The NPC system is live and it’s working. Getting to an NPC can be a bit of a gruelling task wading your way through the same random encounters over and over. I need to create more content to draw from - guard, bandits, minions for my NPCs. Once I have that I can start building the systems mentioned above to make the journey between the big encounters feel more interesting.
More soon.
— Paul