Generative character system vs pre-built roster dev blog cover
Back to Dev Blog
game-design character AI lumenfall

Why We Chose a Generative Character System Over a Pre-Built Roster

Every character in an early version of Lumenfall had a name, a face, a role, and a script. We built 22 of them before we stopped. This post is the decision log for why we stopped, what we replaced the roster with, and what we gave up in the process.

How Far We Got With the Roster

The roster approach was not a short experiment. We spent about four months on it. The 22 characters we built had individual dialogue trees, distinct visual designs, and unique story functions. Several of them were genuinely well-designed: interesting people with specific perspectives on the world they inhabited. The work was not wasted in the sense that it taught us a great deal about what we wanted Lumenfall's characters to do.

The problem appeared during internal testing when we started running multiple consecutive play sessions. By the third run through the same world, players knew the characters. They had encountered the same trader at the mountain pass, the same archivist in the ruin settlement, the same wanderer on the coastal route. The dialogue trees had variations but the characters were the same people saying different things. The roster was exhausted in a way that the terrain was not.

We ran a thought experiment: if we doubled the roster to 44 characters, would that solve the problem? We concluded it would not. It would extend the time before exhaustion, not remove it. Doubling again to 88: still not infinite. The roster model's fundamental limitation is linear: more authoring work produces more unique characters but the relationship is one-to-one. The world's scale does not change that math.

The Decision: Synthesis Over Authoring

The synthesis alternative we were weighing against the roster was exactly the trait pool system described in the character synthesis post from September. The tradeoff was concrete: with the roster, we had deep, authored characters that players could form relationships with over a run. With synthesis, we had a population that was varied, contextually appropriate, and effectively inexhaustible, but each individual was shallower.

We chose synthesis. The decision was not unanimous at first. One specific concern was whether synthesis could produce characters that players cared about, or whether the generative characters would feel like generated characters in the way that procedurally-generated dungeons in some games feel visibly procedural. That concern is still partially unresolved. The closed alpha gave us evidence that players found the synthesized NPCs coherent and varied. It did not give us strong evidence that they felt attached to them across a session the way they might attach to a well-written authored character.

We are not claiming synthesis is superior to authoring for every game. We are saying synthesis is the right model for Lumenfall because Lumenfall's core premise requires a world that stays novel across runs. An authored roster cannot deliver that regardless of its quality. A synthesis system can, with the caveat that the depth ceiling is lower.

What We Kept From the Roster Work

The roster characters were not purely discarded. Several design insights survived the transition.

The most valuable was the occupational identity framework. Every authored character had a defined relationship to their work: what they did, why it mattered to them, how they talked about it. When we designed the trait pool, we included an occupational identity category directly inspired by what the roster characters taught us. Without occupational anchoring, generative characters had no consistent frame for why they were where they were. With it, the same character generates plausible explanations for their presence in any terrain context.

The second surviving element was the relationship between character knowledge and world knowledge. Authored characters knew specific things about the world that players could learn by talking to them. That model works for authored worlds. For a generated world, we adapted it: synthesized characters know things about their terrain zone and its features rather than about a fixed map. They have local expertise rather than global knowledge. The knowledge domain trait in the synthesis system is a direct descendant of the authored characters' information roles.

The third surviving element is more abstract. Writing 22 authored characters gave us a vocabulary for what a Lumenfall NPC should be: not a service provider, not a quest dispenser, but a person the world seems capable of having produced. That sensibility shapes the trait vocabulary and the dialogue generation prompts even though none of the 22 characters shipped.

What the Roster Would Have Done Better

We want to be direct about what we gave up.

Authored characters can have arcs. They can change across a playthrough. The 22-character roster included several characters designed to evolve based on what the player did or did not do in the world. Synthesized characters do not have arcs in the current system. They have fixed profiles that express consistently. The difference in what that feels like from a player's perspective is real and not trivial.

Authored characters can also carry world lore at a depth that synthesis cannot easily replicate. A character who was a witness to a specific event that shaped the world can describe that event with the specificity of an author who designed both the event and the character. A synthesized character can describe its zone's terrain and climate with contextual accuracy. It cannot describe a history it was not given.

The honest framing is that we chose a system that scales at the cost of depth, and then we built as much depth as we could into the synthesis layer to close the gap. Some of the gap is closed. Some of it is not.

Where the Roster Might Return

There is a version of Lumenfall's design space where a small number of authored anchor characters coexist with a synthesized background population. The anchors would carry the world lore and the long-arc story content. The synthesized population would carry the ambient world feel and the inexhaustible variety. Several games handle this kind of hybrid; it is not a novel approach.

We have not built it for the same reason we made the original switch: authoring is expensive and we are three people. The question of whether Lumenfall eventually has a small authored cast sitting on top of the synthesis system is something we will revisit when we have more capacity and a clearer picture of what players most want from the NPC layer.

More from the Dev Blog

All posts
LLMs for NPC personality generation blog cover

Using Language Models to Generate NPC Personality Profiles

Read post
Character trait pool synthesis blog cover

Building Characters From Trait Pools, Not Pre-Written Scripts

Read post
Open world scale indie AI blog cover

Open-World Scale for an Indie Team: Why Generative AI Is the Only Path

Read post