ChatGPT for Interactive Fiction Keeps No Ledger

ChatGPT for interactive fiction writes clean prose and keeps no record. What fails after an hour is the bookkeeping, not the sentences.

By The Fabledrift Team · · 8 min read

ChatGPT for interactive fiction works for about an hour. The prose is not the problem: ask it to run a haunted library in second person and the sentences come back clean, atmospheric and responsive to what you typed. What fails is the bookkeeping — the record of what happened, the boundary between one scene and the next, and anything that would eventually bring the story to a close.

  • A chat carries a transcript, not a record, and a long transcript is a poor index of itself.
  • Interactive fiction engines keep the world in a layer of its own; Inform 7 ships a kit for modelling space, time and actions.
  • QuestJS does explicit end-of-turn accounting — turn count, elapsed time, what is in scope — and a chat window does none.
  • A recap prompt restores some of the missing bookkeeping at the cost of making you the engine.
  • A story that cannot record a debt cannot call one in, which is why chatbot stories rarely end.

What breaks when you use ChatGPT for interactive fiction?

Three things go, roughly in this order. Around the twentieth exchange small details start drifting: a name, an injury, which door you left locked. Around the fortieth the scenes lose their edges, and each reply reads as a continuation of the previous paragraph rather than a new beat. And nothing ever pushes toward an ending, because nothing is holding a list of what is still unresolved.

None of the three is a writing failure. They are accounting failures, and they arrive in that order because each depends on a different piece of missing machinery: a fact store, a turn boundary, a sense of what the story still owes you.

The drift in particular is not random. A model asked to continue a story will continue it. If the detail has fallen out of what it can see, it supplies a plausible replacement rather than stopping to ask, and the replacement is now part of the story. Three scenes later there is no way to tell which version was the original.

Why the prose stays good while the story falls apart

Because good sentences and long continuity draw on different resources. A good sentence needs only the paragraph before it, which is always close at hand. A story that holds needs its whole history available in a form that can be checked: who is owed what, who witnessed what, which promise is still open.

A transcript contains that history, but containing is not indexing. By the fiftieth turn the fact that a character’s sister is dead is one clause buried among fifteen thousand words of narration, weighted no differently from a description of weather. That gap between a record you can query and a conversation you can merely re-read is the whole of the difference between story memory and a context window.

Two rows of five story turns. In the chat window row a bracket reaches only the last three turns and the first two are drawn as dashed outlines, out of view. In the engine row all five turns draw an arrow from a single story record below them holding facts, people, places and open promises.a chat windowan engine with a story recordturn 1turn 2turn 3turn 4turn 5out of viewwhat the story still hasturn 1turn 2turn 3turn 4turn 5story record: facts, people, places, open promises

What a text adventure engine tracks that a chat window does not

Text adventures settled this decades ago by keeping the world separate from the prose. Inform 7, a programming language for creating interactive fiction “using natural language syntax”, ships its simulation as a distinct component; the repository lists WorldModelKit as “Support for modelling space, time and actions in interactive fiction”. Narration is written on top of that model. The model is the part that persists.

The accounting is explicit and happens every turn. The QuestJS wiki’s page on events and turnscripts describes the end-of-turn order as all done in world.endTurn(): the turn count is incremented, elapsed time is updated, what is in scope is re-evaluated, and only then does the interface refresh. It also tracks countdowns, so an event set with an eventPeriod of five fires on a schedule the prose never has to remember.

Bookkeeping job Text adventure engine A story run in a chat window
Where facts live A world model, separate from the text Inside the transcript, mixed into prose
Turn boundary An explicit end-of-turn step Wherever you happened to press send
What is reachable now Scope recomputed each turn Whatever the model infers from context
Scheduled events Countdowns and timers Nothing, unless you remind it
Open threads Flags you can query Your own memory of the conversation
Ending Triggered by state Whenever you get tired

The interesting part is that these are not opposites. A live narrator can have both: prose written fresh for the scene in front of you, and a record held outside the prose so it survives the conversation. That is the arrangement behind Fabledrift, an interactive fiction app for Android, where nothing is pre-written but the facts, characters, places and open promises are stored separately and handed to the narrator on every turn.

Can a prompt do the bookkeeping for you?

Partly, and it is worth knowing exactly how far. The workaround most readers arrive at is a recap: start each message with a compact block of state — names, injuries, debts, location, what you want next — so the facts sit at the end of the conversation rather than buried at its start. This genuinely works. It also means you are maintaining the ledger by hand while trying to read.

A recap block that holds up for a long session needs, at minimum:

  • A cast list, one line each, with what that person currently wants.
  • The places you have been and what changed in each.
  • Promises and debts, with the scene they were made in.
  • A scene count, so you can tell how far into the story you are.
  • One line on what you want the story to move toward.

There is a second, quieter cost. A chat window has exactly one channel, so every clarification you type becomes part of the fiction. Asking “wait, who was the older brother?” arrives as a line your character says out loud, and the story now contains a person who stopped to ask. A form that separates asking the narrator a question from making a move keeps the question out of the record entirely.

When a chat window is the right place for a story

It is the right place more often than a comparison like this suggests. If you are testing a premise, writing with the model rather than reading, or want a single vivid scene rather than a story with a shape, a chat window is faster and more flexible than any app. It will follow an instruction like “make the sister a liar” immediately, which a designed system may refuse.

The fit changes when what you want is to read. Reading rewards continuity, scene boundaries and a last page — the three things the format is worst at. If the appeal was partly that it was free and already open, that is a fair reason, and there are also free ways to read with an AI narrator that keep the record on your behalf.

The hour-two test

Run a story wherever you like, and at the two-hour mark ask one question: name three things this story is still carrying. An unpaid favor, a lie told in scene six, a door you never opened. Then check whether the narration has mentioned any of them recently without your prompting.

If you can list all three and the story cannot, the record lives in your head rather than in the software, and you have been doing the engine’s job for the last hour. That is the honest limit of using ChatGPT for interactive fiction: not that the writing is thin, but that you are the only one keeping the books.

Frequently asked questions

Can ChatGPT run a text adventure?

Yes, and it does it well for a short session. Ask for a setting and a second-person voice and you will get responsive, readable scenes for an hour or so. What degrades is continuity rather than prose.

Why does ChatGPT forget details in a long story?

Because the only record of the story is the conversation itself. As the transcript grows, an early detail is one sentence competing with thousands of later ones, and nothing marks it as a fact to be preserved.

Is a recap prompt enough to fix story memory in a chatbot?

It helps a great deal, because it moves the important facts to the end of the conversation where they carry more weight. The cost is that you are now maintaining the story's record by hand while also trying to read it.

What is the best prompt for interactive fiction in ChatGPT?

One that states the voice, the content level and the length you want, then asks for a short state block after each scene listing people, places and open threads. The state block is the part that does the real work.

Is a dedicated app better than a chatbot for interactive fiction?

For reading, usually yes, because the app keeps the record and the scene boundaries for you. For drafting or experimenting with a world, a chat window is often faster and more flexible.