antipattern

Use when

Your world sends players back through solved space with nothing new.

What it is. Playtime inflated by return trips — trudging back through rooms you already solved, past enemies you already beat, to reach a door you couldn’t open the first time. The map charges you a second toll for content you already bought.

Why it hurts. The first pass through a space is discovery; the fifth is commute. Backtracking that adds only distance — not a new lens on old ground — reads as the designer padding runtime instead of building it. Players feel the clock, not the world.

The smell

Distance masquerading as content. When “the game got longer” and “the game got better” have quietly diverged, and the delta is footsteps.

How it happens

The tell

Check your own design against these:

TellWhat it means
You can name the route but not what happens on itThe trip has geometry, no events — pure system-map-and-navigation cost
Removing a return trip removes minutes, not memoriesIt was runtime padding
The space is byte-identical on re-entryNo system-weather-and-time, no new enemies, no reframing
Players open a wiki for “fastest route”You outsourced navigation the game should own
Your critical path crosses one room 4+ timesThe mesh is missing shortcuts

If a return trip survives all five, it is a tax, not a texture.

The fix

The cure is not “less backtracking” — it’s make the return worth the walk, or delete the walk. Three moves:

  1. Change the space on return. The best metroidvanias re-earn old rooms: a new ability opens a shortcut through them, an event repopulates them, the story recontextualizes them. Route the fix through system-map-and-navigation and system-weather-and-time. See pattern-pacing-and-tension — the return should be a different beat, not a repeat.
  2. Collapse the distance. Shortcuts that snap open from the far side (the Souls door you kick from behind), fast-travel nodes, one-way drops. This is system-map-and-navigation doing its job. Gate travel behind effort already spent, not behind more effort.
  3. Front-load the reward on the trip. If the walk must exist, seed it — a system-collectibles trail, an system-encounter-design escalation, a world-level-as-story reveal that only lands on the second pass. Turn commute into pattern-escalation-and-payoff.

Guard against over-correction: teleport-everywhere (mechanic-teleport) can flatten a world into a menu and kill the sense of place world-mood-and-atmosphere earns. Restraint is a tool too — see pattern-restraint-and-negative-space.

Twist seams

Reframe the tax into a mechanic:

Seen in…

GameWhat it teaches
Dark Souls (anchor-dark-souls)Shortcuts that kick open from the far side turn the map into a mesh; the return trip is a triumph, not a tax
Hollow Knight (cf. genre-metroidvania)Fast-travel (Stag stations) gated behind rooms you already earned — travel as reward for progress
Metroid DreadNew abilities reopen old zones as shortcuts, so revisits are faster and lethal-different, not slower
Outer Wilds (anchor-outer-wilds)The 22-minute loop makes re-walking mandatory — but the knowledge changes, so the space is never the same trip twice
Backtracking done wrongAny RPG that walls the last dungeon behind a triple courier run through one town — antipattern-grind-wall‘s spatial cousin

The dividing line: Dark Souls and Metroid re-earn the ground; a padded fetch chain re-charges for it.

Verify / guard

This is a pacing failure — audit it where you audit flow. The metroidvania feel-gate in design/FUN.md#3-·-metroidvania is the checkpoint: if a critical path crosses the same node past the threshold with no new state, the gate should flag it. Design the mesh first; let pattern-pacing-and-tension and system-map-and-navigation carry the proof.

This module rendersthe repo's markdowndirectly — edit it there, it changes here.