Face drift: the missing half of AI roleplay
You can solve memory completely and still lose the reader, because the person in the picture is not the person in the story.
The half nobody budgets for
Most of the effort in AI roleplay goes into the text, and reasonably so: that is where the story is. But the moment a product also draws the scene, it takes on a second continuity problem, and this one is judged in a fraction of a second.
You read a paragraph. You recognise a face. So a small inconsistency in prose — a slightly off turn of phrase — is forgivable in a way that a stranger wearing your character's name is not.
Why the same prompt gives you a different person
The intuitive fix is to keep the description identical and re-run it. It does not work, and it is worth understanding why.
A prompt is a description of a category. "Woman in her early thirties, dark hair, sharp cheekbones, tired eyes" narrows the space of possible faces enormously — and still leaves millions of them. Each generation samples a new point in that space. You are not asking for her again; you are asking for someone who matches her description again.
Everything else that changes between two scenes makes it worse. Different lighting reshapes a face. A different angle changes which features dominate. A different expression pulls the mouth and eyes somewhere new. All of these are things a story needs to change, so the very variation that makes a scene worth drawing is what pulls the identity apart.
The writing was hers. The face was somebody else's. I stopped believing the scene before I finished reading it.
A closed-beta player
What drift costs a story
The damage is not aesthetic, it is narrative.
- Recognition fails. In a scene with two characters, the reader has to work out who is who from context rather than seeing it.
- Time collapses. If someone looks different every scene, thirty scenes do not feel like a month with a person; they feel like thirty unrelated portraits.
- Change stops meaning anything. When appearance is noise, a real change — a scar, a cut, an exhausted face after a bad night — reads as more noise.
Anchoring instead of describing
The fix is not a better description. It is a reference.
Each character in projectDigo has approved visual references: an identity portrait, and where it matters, body, wardrobe and location plates. They are made once, reviewed, and then treated as the source of truth for that character's appearance.
When a scene is rendered, the relevant references are passed to the image model along with the scene description, so the model is editing a known person into a new situation rather than inventing someone who matches a paragraph. For models that cannot take a reference image, the same job is done in text by a locked identity block that is assembled deterministically rather than rewritten each time — weaker, but far better than hoping the adjectives land the same way twice.
Day 1 and day 30
The test that matters is not whether two consecutive images match. It is whether a scene from the first evening and a scene from a month later look like the same person on two different days.
What has to stay: the structure of the face, the eyes, the things you would describe if you were telling a friend who to look for.
What has to be free to move: the light, the place, the clothes, the mood, and anything the story has actually done to them. A system that freezes all of it has not solved continuity — it has just stopped the story from showing.
Questions we get
Can a character's clothes or hair change if the story changes them?
Yes — that is the point of separating identity from presentation. Identity references hold the face and build; wardrobe and setting are scene-level, so a haircut, a change of clothes or an injury shows up because the story caused it, not because the model drifted.
Can I build my own character and keep the face consistent?
Yes. You generate candidates, approve the one that is right, and that approved image becomes the character's anchor for every later scene.
Does this work with more than one character in a scene?
Up to the number of reference images the chosen model accepts. Beyond that, the main figures are anchored and the rest are described — which is the honest limit of current image models rather than a design choice.
Why not just fine-tune a model per character?
It works and it is expensive: a training run and a stored model per character, paid before you know whether that character matters to the story. Reference-conditioned generation gets most of the way there at the cost of a single approved image.