Saving and Rewinding in Text RPGs
A save system is not a convenience feature bolted onto a story. It decides how much a bad turn costs, how often players experiment, and whether a death feels like a lesson or a waste of an evening.
Text RPGs have an unusual relationship with saves. The action is cheap to repeat, the state is mostly numbers and strings, and the browser makes it trivial to reload. That sounds like a recipe for save scumming. In practice, the save model is one of the strongest design choices in the genre, because it sets the price of curiosity.
Four save models
Most single-player text RPGs use one of four models, or a hybrid:
| Model | What it does | Effect on tension |
|---|---|---|
| Autosave only | Every turn is written to one slot | High tension; mistakes stick; reloading may not help |
| Checkpoint save | Save at floor starts or story beats | Medium; a bad run loses the current segment, not everything |
| Manual save | Player chooses when to save | Low tension; encourages experimentation and scumming |
| Permadeath / run-based | Death ends the run; meta progress persists | High stakes; needs fast opening and meaningful variety |
None of these is inherently better. A horror text game with manual saves everywhere will struggle to feel dangerous. A forty-hour epic with autosave only will punish experiments so harshly that players stop experimenting. The model has to match the length, the failure rate and the amount of content you expect players to see.
What a save actually contains
Players say “save” and mean “the story so far.” Designers need to be more precise. A robust save includes:
- the player’s stats, HP, gold and inventory;
- depth, current scene and pending event or chest;
- monster state, status effects and boss flags;
- the story history the narrator uses for context;
- the RNG state, if outcomes are reproducible;
- the ending/achievement flags;
- the version of the content, so old saves can be migrated.
Miss the RNG state and a “reload” may produce a different result without telling the player. Miss the content version and a text update can corrupt an old run. Miss the history and the narrator forgets the promise you made three floors ago. The visible save button is the easy part.
Why browser cookie saves fail
Many browser text games store progress in a cookie or localStorage and call it a day. That works until one of these happens:
- the player clears cookies or switches from `www` to the apex domain;
- the game moves from a temporary hostname to a real domain;
- the player opens the site in a private window or a different browser;
- the server cleans up inactive sessions;
- the player expects to continue on a phone.
From the player’s side, the save “disappeared.” From the server’s side, a new random session was created. The fix is not necessarily accounts. It can be an explicit save code, an export file, a visible “this save lives in this browser” warning, or a short account-free recovery token. The worst option is silence: a save that looks permanent and is actually tied to one cookie.
If you are testing a browser text RPG, do one boring thing before you invest an hour: open the game in a second browser and see whether your progress follows. If it does not, find the export or save-code feature. If there is none, treat the run as disposable.
Rewind and the cost of a bad turn
Rewind is not the same as save scumming. A deliberate rewind feature — “step back one turn” or “retry this check” — can be a design tool. It lets players see content they would otherwise avoid and reduces the fear of trying a weird action. But it also removes the weight of consequences, especially in a game whose tension comes from resource attrition.
A useful compromise is limited rewind: one step back per floor, or a rewind that costs a resource, or a rewind that only undoes the last action but not the death. The player gets a safety net without turning every fight into a free retry. The key is that the cost is visible before the player uses it, not hidden in a menu.
Checkpoints and the shape of a run
Checkpoint placement changes how players explore. A checkpoint at the start of every floor invites bold experimentation on that floor. A checkpoint only at the entrance makes the whole dungeon one long commitment. A checkpoint after a boss tells players “this was the hard part; the next part is a victory lap,” which may be exactly wrong if the escape is the real climax.
Place checkpoints at decision boundaries, not just at content boundaries. The moment before a floor’s main choice is a better checkpoint than the moment after the stairs. The player should feel that the save respects the decision they are about to make.
What the save system should show
A save is also an interface. The player should be able to answer four questions without opening a wiki: where is my progress stored, when was it last written, what will erase it, and how do I move it? A tiny line under the title screen can do this: “Progress is saved in this browser. Clearing site data starts a new run. Export a save code from Settings.” That one sentence prevents most support complaints.
If the game has multiple save slots, show the run summary before the player commits: depth, turns, ending flags, last played. A slot that says only “Save 2” is a slot the player will overwrite by accident. If the game has one autosave, show the last write time and make the autosave visible after a death. Players tolerate loss when they understand it; they do not tolerate a silent reset.
For long runs, offer a portable save code even if there are no accounts. A short encoded string is enough to move a run between browsers, and it turns a fragile cookie into something the player can back up. It also makes the game easier to test: you can reproduce a bug from a save code instead of replaying six floors.
Finally, decide what happens when the content changes. If a floor is rebalanced or a scene is rewritten, old saves may reference states that no longer exist. A version field and a migration path are less exciting than a new monster, but they are the difference between a game that respects a long run and one that quietly breaks it.
A practical checklist
- Tell the player where the save lives and what clears it.
- Show the last save time and the current run length.
- Provide an export or a copyable save code for long runs.
- Do not silently change the RNG on reload; either preserve it or disclose the reroll.
- Version the save and migrate old runs when content changes.
- If you use permadeath, make the first ten minutes fast and varied enough that a retry is interesting.
- If you allow rewind, price it in a resource the player can see.
- Test the save across domains, browsers and a server restart before launch.
The best save system is not the most generous one. It is the one whose rules the player understands before the first death. A run that ends because of a bad decision is a story. A run that ends because the cookie expired is a bug.
For a concrete example of a browser game with a session-based save, see Echo Abyss; the beginner guide explains what persists between runs and what does not.
Try the loop yourself
Echo Abyss is a free browser text adventure with a rules engine and an AI Dungeon Master. No account is required to start.
Play Echo Abyss