antipattern

Use when

You are adding choices; check whether any is actually taken by informed players.

What it is. A branch presented as a decision that, once understood, has one dominant answer or no answer at all. The player picks, but the pick doesn’t change anything that matters.

Why it hurts. A choice you always resolve the same way is a corridor wearing the mask of agency. It costs UI, costs the player deliberation time, and pays out nothing — worse, it teaches players their agency is theater, so they stop reading your real choices too.

The smell

The dominated option: two doors, one strictly better on every axis. Or the cosmetic fork: three builds that differ in flavor text but converge on the same numbers. Informed players don’t agonize — they autopilot.

How it happens

OriginWhat you did
Balance driftOne option got a buff (or the rest got nerfed) and now dominates.
Same-axis options”+10 damage” vs “+15 damage” — more of the identical thing, never a real fork.
Illusion for narrativeA genre-narrative-decisions branch that reconverges two lines later with no state change — see antipattern-guess-the-designer when it’s readable but pointless.
Fear of commitmentYou refused to let a choice lock the player out of anything, so nothing is at stake.
Content paddingOptions added to look deep — the antipattern-false-depth cousin.

The tell (check YOUR OWN design)

The fix

Give options different axes, not different amounts. A real choice is a trade — each side pays a cost the other doesn’t, and no single axis ranks them. Route the fix through pattern-meaningful-choice; the surrounding systems that keep it live:

Twist seams

Seen in…

GameLive choiceWhy it holds
anchor-into-the-breachEvery turn: which threat to eatFull information, yet no dominant line — you trade damage taken for board control.
anchor-slay-the-spireCard picks and path branchesCards trade tempo vs scaling vs defense; the “best” card depends on your deck’s axis.
anchor-civilizationTech and policy forksEach opens a different victory axis; dominance is situational, not global.
anchor-dishonoredLethal vs ghostDifferent playstyle and different world-state outcome — orthogonal, not more-vs-less.
anchor-hadesBoon choicesBoons trade build identity (system-build-diversity); rarity + duo constraints keep any one from dominating.

Failure cases to study: RPGs where a “morality choice” reconverges with no mechanical delta; loot systems where every drop is “+X to the same stat” (the antipattern-stat-inflation trap); talent trees with an obvious optimal spread everyone copies — the antipattern-boring-optimal endpoint of a fake choice left to rot.

Composition notes

Verify / guard

Before handoff, run the design against [[design/FUN.md]]: for each branch, name the axis it wins on and the axis it loses on. If you can’t name a losing axis, it’s dominant — cut it or re-cost it. Instrument pick rates once playable (system-achievements-and-leaderboards telemetry, or the workshop playtest loop) and treat any >80% branch among informed players as a fake choice to fix, not ship.

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