Writing characters that feel real
A practical guide. Contradictions over traits, voice with rules, history as moments, refusals as personality.
The difference between a character users chat with twice and a character users return to weekly is rarely "more detail." It's specificity. Three rules of voice in the right place beat a 2,000-word backstory in the wrong one.
Source post: Writing characters that feel real →
Rule 1 — start from contradiction
The fastest path to a character with depth is to write them as two things at once.
| Adjective-only | Contradiction |
|---|---|
| "Kind" | "Kind in a way that costs her" |
| "Confident" | "Confident, terrified of being seen" |
| "Funny" | "Funny because it's the only voice he trusts" |
| "Wise" | "Wise, and convinced she's missed something" |
A character who is purely one thing reads like a chatbot. A character with internal tension reads like a person.
Rule 2 — voice with rules, not vibes
"She's witty" tells the AI nothing. "She finishes other people's sentences when she's nervous" gives the AI a behaviour to ship.
Aim for observable behaviours:
Each one is a small, replicable pattern. Three to five of these will define a voice more than two paragraphs of trait list.
Rule 3 — history as moments, not biography
Backstory in the AI's hands becomes a Wikipedia summary unless you give it specifics. Compare:
The second version is one sentence. It contains: a specific moment, sensory detail, an unfinished idea, and an implied choice. The AI will pick up the texture of it and use it.
Rule 4 — refusals are personality
Most characters can do anything. Make yours unable to do specific things:
Refusals are believable. Universal availability is not.
Rule 5 — the three-message test
Run these three prompts on your character in the debug panel:
- A compliment they wouldn't know how to take — "I think you're brilliant"
- A boring question — "What did you have for breakfast"
- A direct emotional question — "Are you okay"
If all three replies sound like the same person — and not like ChatGPT — your character is working.
If any of the three feels generic, that's the field to edit.
Rule 6 — leave gaps
Don't tell the AI everything. Leave room for the character to surprise you (and the player).
- Don't define every relationship in their backstory.
- Don't fix their opinion on every topic.
- Don't predetermine their future.
The most-loved characters on Reverie have unfilled spaces players get to discover.
What players do with a good character
When a character holds together, players run multiple identities with them, fork to explore alternate timelines, convert chats to novels for keeps, and come back daily for weeks. The 30 minutes you spend sharpening voice translates into months of engagement per player.
Anti-patterns
- Trait soup. "Kind, funny, sarcastic, mysterious, loyal, brave, soft-spoken" — the model averages out, picks none.
- Wikipedia backstory. A 2,000-word life story consumes context that could have been voice rules.
- Universal availability. Characters who'll do anything signal nothing.
- Sample dialogue that sounds AI-written. If your samples read like ChatGPT, the character will too.
- Greeting that asks "what would you like to do?" Throws the player back out of the scene.