Branching Skies

Stories that remember you.

← All posts

Editorial card reading A Journal That Cannot Drift, from the post on an AI RPG that tracks quests, Branching Skies.

An AI RPG that tracks quests: how a journal stops the drift

An AI RPG that tracks quests is one where each quest lives as a stored record with named milestones, the game advances those milestones only when the underlying event verifiably happens, and the journal you read is written from that record instead of improvised by the narrator. That is the full answer, and almost no product in the category does it. The common shape is the opposite: the quest exists only as prose in a chat transcript, the model rereads whatever recent text fits in its context, and the objective quietly mutates as the transcript scrolls. You accepted a job to find a missing pendant. Four sessions later the narrator is confidently steering you toward a bandit camp nobody ever mentioned, and if you ask about the pendant you get a freshly invented status update.

We build Branching Skies, a mobile AI RPG, and quest tracking was one of the last systems we shipped precisely because doing it honestly is harder than narrating it. This post walks through what quest drift is, what it takes to stop it, and one moment from our logged development sessions where the tracking system caught the narrator inventing an item name in real time.

Why do quests fall apart in most AI RPGs?

Because the quest has no existence outside the conversation. A language model predicts the next scene from the text in front of it, and its recall of that text is uneven: the Lost in the Middle research measured how model accuracy drops sharply when the relevant information sits deep in a long context, which is exactly where your quest acceptance scene ends up by session three. The model then does what models do. It fills the gap with something plausible. Plausible is the problem, because a plausible objective is close enough to the real one that you may not notice the drift until the ending contradicts the middle.

No prompt instruction fixes this, since the failure is in what the model can reliably see, not in what it is told to do. The fix has to live outside the model, in the same place your reputation and consequences have to live: structured state the story is required to read.

What does it mean for a quest to be a record?

It means the quest is authored and stored before the narrator ever speaks about it. In Branching Skies, a quest is written into the world's canon with its milestones spelled out, and when your campaign picks it up, the game creates your own copy of that record. From then on there are two separate jobs. The narrator tells the story of the quest. The record decides what is true about it: which milestone you are on, what happened at each step, and when it ended.

Your journal reads from the record. Open it mid-story and you see the quest, the one-line objective you are currently on, and a history of finished quests grouped with how each one actually ended. Because entries are written from recorded state at the moment each step completes, rereading the journal next week shows the same words. There is nothing to misremember, which is the property a memory system needs everywhere, not just in quests.

How does the game know you actually did the thing?

By watching facts instead of narration. Each milestone in our system is a concrete check against recorded state: this item now exists in your inventory record, or this many in-game days have passed since an earlier step. The check runs after every turn, and only a true fact advances the quest.

The distinction earned its keep in one of our logged development sessions. A quest milestone was waiting for the player to be holding a particular pendant. When the scene finally delivered it, the narrator invented its own casual name for the item rather than the canonical one in our files. A tracking system that trusted the narrator's words would have missed the moment entirely, and the quest would have stalled forever on a step the player had already done. Ours does not read the words. It reads the inventory record, found the pendant sitting in it, and advanced the milestone on the spot. We keep that log line around because it is the whole argument in miniature: the storyteller and the scorekeeper have to be different systems.

This is the same split that decides whether an AI companion picks the right spell in combat. Models are excellent narrators and unreliable bookkeepers, so the bookkeeping goes somewhere deterministic.

What does quest tracking look like when you are playing?

Quiet, mostly. When a quest opens, a small on-screen moment says so and gets out of the way. While you play, the journal is one tap away, split into your main story, your companion's thread, and the quests you have finished. The current objective is a single line that updates as milestones complete, so a player returning after a week can reorient in five seconds without asking the narrator for a recap it might get wrong.

Completion works the same way in reverse. The finished quest moves to the completed list with its outcome, written from the milestones that actually fired. If you took an odd path, the history shows your odd path. It does not show a tidied-up version the model invented while summarizing.

Can a quest still start by accident?

Yes, and we would rather tell you about it than pretend otherwise. In the same play sessions that produced the pendant log, a player asked the narrator whether a character's missing pendant was a quest. The narrator, agreeable to a fault, said you are right and started it. That is wrong. Asking whether a job exists is not taking the job. The tracking held together perfectly from that point on, which is its own kind of embarrassing, because it faithfully tracked a quest nobody had agreed to. The fix, gating quest starts on explicit commitment, was filed the same night and sits near the top of our list.

We publish defects like this because the test for any AI campaign worth your time is not whether the studio claims the system works. It is whether the system's failures are visible, specific, and fixable, instead of dissolving into vibes.

Where this is heading

Branching Skies is a curated, mobile-native AI RPG set in Syrinway, a world we ran as a homebrew tabletop campaign for close to a decade before writing a line of code. Everything in this post, the authored quest canon, milestone checks against recorded facts, the journal and its on-screen moments, is working in our development builds today, and every example above comes from our own logged sessions. The early beta list is open now. If you want a campaign where the job you took is still the job next month, the form below is where it starts.