Drift
Shepherd an allele through bottlenecks, founder events and selection without letting Wright–Fisher sampling fix it or lose it.
5
levels3–12 min
a run, player-paced7
movesNo timer
player-paced, always
Drift
Shepherd an allele through bottlenecks, founder events and selection without letting Wright–Fisher sampling fix it or lose it.
A population, one allele at a stated frequency, and a horizon of events you can read ahead: dry summers, a founding party, seasons when birds favour one morph. Each generation, pull at most one lever from a small budget — a refuge that keeps more individuals breeding, a corridor to a neighbouring population, relief from selection — then advance and let the seeded sampler draw the next gene pool. Small populations wander; the levers change how far.
Levels
5 levelsThe tag on each level says how it gets harder. Levels gate on ideas, not on each other — jump wherever it gets interesting.
What decides the outcome
The game never restates the science — it imports it. These are the model layers that do the deciding.
Wright–Fisher drift, selection on a caller-supplied fitness landscape and gene flow, composed in a declared order (`runGenerations`, `driftOneGeneration`, `selectOneGeneration`, `migrateOneGeneration`), the Hardy–Weinberg heterozygote share a target is judged against (`hardyWeinbergGenotypes`), and the seeded generator. The game states no law of population genetics of its own.
Why it teaches
The author's own delete-the-science argument: remove this game's substrate and there is nothing left to choose.
Every lever is a bet on the drift variance p(1 − p)/2N. Without the substrate's sampling, a generation is a random button and a refuge does nothing; with it, raising N in the narrowest generation buys more than raising it anywhere else, a corridor pulls a frequency home only as hard as its migrant fraction, and relieving selection helps an allele selection is against while sinking a level where selection is the only force on the learner's side. The designed-failure level loses whatever is pulled, and its mechanism line says why.
Accessibility
The contract's declarations, stated before you commit to a run.
Keyboard
Playable start to finish from the keyboard.
Screen reader
Every move is narrated — the narration is the state, not a description of a picture.
Motion
Reduced-motion: consequences render statically.
Audio
Silent — no sound, and nothing on screen moves on its own.