system

Use when

You need to shape challenge over a session, react to a player's skill, or offer honest difficulty options.

Difficulty & Dynamic Difficulty

What it is. How hard the game is, over time and per player. Three tools: a difficulty curve (a designed sequence of spikes and breathers), a director (a system that spawns pressure in response to state), and assist modes (honest knobs that let anyone find their edge). The goal is the flow channel — challenge tracking skill, never far above or below (pattern-mastery-and-flow).

Player fantasy / why it’s fun. Being tested at exactly your level. A curve that breathes lets tension land — a boss hits harder after a quiet corridor. A director makes a run feel authored to you. Assist modes let the humane version of the fantasy exist (Celeste): the game meets you, it doesn’t gate-keep you.

When to use / when NOT

ToolReach for it whenDon’t when
Authored curvelinear/campaign content; you control orderfully procedural — shape the generator’s band instead
Director (DDA)survival, colony sim, replayable runs; you want reactive pressuretight puzzles — perfect information forbids hidden dials (§12)
Assist modesany single-player skill gamecompetitive PvP where fairness is symmetry

Two ditches. Static difficulty leaves half your players bored and the other half walled out. A hidden rubber-band that punishes doing well (“do better, get punished”) betrays trust the moment it’s noticed. DDA must nudge, never lie.

Variants

VariantHow it decidesFeels likeAnchor
Authored curvefixed schedule of encountersa designed rollercoastermost campaigns
Threat-budget directorspends a rising budget on spawnsescalating siegeanchor-rimworld‘s storyteller
Performance DDAreads hp/deaths/time, adjusts spawns”the game read me”Left-4-Dead-style
Player-chosen tiersdifficulty menuhonest self-selectionDoom, most action games
Assist togglesper-axis mercy (speed, i-frames, skip)“I set my own edge”anchor-celeste assist mode

Tuning levers

LeverEffectWatch for
Spike/breather rhythmtension arcmonotone-rising = exhausting; flat = dull
Director budget slopehow fast pressure growssuperlinear needed to outpace build growth (§6)
DDA sensitivityhow sharply it reactstoo twitchy = visibly rubber-bandy
DDA boundsfloor/ceiling on adjustmentunbounded = trivializes or walls
Assist granularityper-axis vs. one sliderone slider forces all-or-nothing

How it wires to Hayao

Fails when…

Verify

Composes with

See also

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