Characters and dramatic roles

A compelling Bunnyland character needs more than a name and biography. They need a place in the world, a point of view, something they want, limits on what they know, and a controller that can act through the same rules as everyone else.

Build a cast by function

Start with the smallest cast that creates useful tension. Give each character a dramatic function before giving them a page of history.

CharacterPublic rolePrivate pressureWhat they can change
Ferrymaster Sablemaintains the crossingashamed of a broken promisecan explain and operate the ferry
Courier Rowancarries medicinedeadline and growing fatiguecan complete or abandon the delivery
Storekeeper Fencontrols lamp oildistrusts Sablecan trade, refuse, or reconcile
Archivist Larktends the marsh shrinevalues truthful recordscan point toward the old ledger

No one is merely a clue dispenser. Each person has an ordinary role that remains meaningful after the immediate problem is solved.

Separate identity, description, and persona

Use each layer for a different job:

StatePurpose
IdentityComponentstable name, kind, and searchable tags
DescriptionComponentwhat observers can see
CharacterComponentspecies, public biography, and player visibility
PersonaProfileComponentthe character's voice and current social role
TraitSetComponentdurable temperament expressed as concise traits
PreferenceComponentlikes and dislikes that can influence choices
GoalComponentcurrent motives presented to that character

Keep descriptions observable. “Fen wears a rain-dark apron and counts every bottle twice” is visible. “Fen secretly forged the ledger” is hidden truth and does not belong in appearance.

Keep persona fields short enough to guide action. A useful voice line is “measured, practical, and unwilling to overpromise.” A useful role is “village storekeeper and keeper of emergency supplies.” A biography can hold more context, but the active goal should still say what matters now.

Give everyone an ordinary life and an immediate want

A dramatic character has at least two vectors:

Sable's ongoing concern is keeping the ferry trusted and maintained. The immediate goal is to relight the lantern before moonrise. Fen's ongoing concern is protecting scarce village supplies. The immediate goal is to settle what Sable owes before releasing more oil.

This gives autonomous characters something to do after a quest stage changes. It also avoids the “NPC turns off when the party leaves” feeling.

Place knowledge carefully

A biography and persona are persistent character context, not a universal lore database. Ask of every secret:

Put public facts on visible objects and descriptions. Put private experience in memory. Put directed opinion in social bonds. Put uncertain second-hand claims in gossip or authored dialogue. This lets characters disagree honestly rather than hallucinating a shared canon.

Add physical and simulated state selectively

A basic playable character normally needs room containment and inventory capability in addition to identity and character state. Add mechanics that support the story you want:

More meters do not automatically create more personality. Add a need when satisfying or neglecting it produces interesting decisions and when the world contains ways to respond. Do not add thirst to every character if there is no water and no intended survival problem.

Treat control as a separate role

The character is persistent; its controller is replaceable. A human can claim a character, release it back to an LLM, or leave it suspended. Scripted and behavior-tree controllers are useful for deterministic background roles. LLM controllers are useful when the character must combine context, motives, memory, and available actions in less predictable ways.

Do not create a different copy of the character for each controller. Assign control to the same character so inventory, relationships, needs, and memory survive handoff.

When LLMs are enabled, use the inspector or character administration surface to assign an existing LLM controller. The controller's model profile is server configuration; it is not the character's personality. Persona should survive changing models.

Write recoverable dialogue roles

Important guidance should be repeatable and state-aware. Sable can describe the route to the store, then later acknowledge that the oil has arrived. Lark can say which archive record is relevant without announcing that anyone has already read it.

Useful dialogue answers one of these:

Avoid a biography that prescribes exact dialogue or a one-time speech that carries the only copy of a required clue.

Character review

Next, give the cast meaningful things to notice, carry, and change in Items, clues, and environmental storytelling.