The roster is the alphabet: the sequence is the zombies themselves

Oliver's insight, and it retires a whole subsystem: "we don't need colors at
all! we already have different zombie types.. so the sequence is the zombies
themselves".

The bib and then the ground disc were both inventions bolted on to give a
body an identity it already had. A brute does not look like a runner, the
game is built on reading those silhouettes at speed, and the strip can show
the body's own walk frame instead of a swatch — no legend, no mapping, no new
art ever. It also deletes the accessibility problem outright rather than
deferring it, because a silhouette is not a hue. DRILL_COLS, drawColourRing,
drawBib, PIP_FACES, blip(), drillRingR and drillTones are all gone.

Two rules keep a type unambiguous: the plain shambler is never in the
alphabet (it is what the eaters are, so "not the puzzle" needs no marking),
and one of each type is on court at a time.

The new failure mode this created is instructive. Types move at different
speeds and drill bodies hold their lane, so one in a lane you are not in
walks the whole court and off the back untouched — stranding the sequence
asking for a body that no longer existed, i.e. the un-winnable state the mode
exists to prevent, reintroduced by a change that looked cosmetic. A batch
body crossing your baseline counts as caught now ("GOT PAST YOU"), which is
also just better design, and the speed spread is narrowed to 1.35..0.70 so a
batch stays coherent. Their real difference is HP and that is untouched: a
runner is one shot, a roller is seven.

Verified: 14400 frames of simulation, zero frames where the sequence named a
body that was not on court.

29 tests.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Opus 5 committed 2026-08-11 20:24:58 +02:00
1 parent 3379e83efc
commit 5b2f1d55ce
7 files changed
+197 -145

No files matched your search

+35
View File
@@ -694,6 +694,41 @@ not so close to the color gang"*.
They still converge on you afterwards, which is what they are for; this only decides where they
come in, so they stop screening the bodies you are trying to read.
**NINTH PASS — THE ROSTER IS THE ALPHABET, and it deletes a whole subsystem.** Oliver: *"we don't
need colors at all! we already have different zombie types.. so the sequence is the zombies
themselves"*. He is right, and it is better on every axis the colour version was losing on.
The bib, then the ground disc, were both inventions bolted on to give a body an identity **it
already had**. A brute does not look like a runner, the game is built on reading those silhouettes
at speed, and the strip can show the body's own walk frame instead of a swatch — no legend, no
mapping, no new art ever. It also **deletes the accessibility problem outright** instead of
deferring it, because a silhouette is not a hue. `DRILL_COLS`, `drawColourRing`, `drawBib`,
`PIP_FACES`, `blip()`, `drillRingR`, `drillTones` and the seven `drill_*.m4a` call recordings are
all now gone or unused — the mode is materially smaller than it was three passes ago.
TWO RULES keep a type unambiguous and both are load-bearing:
1. **the plain shambler is never in the alphabet** — 'a'/'b' is what the EATERS are, so "not part of
the puzzle" is legible at a glance and needs no marking on anything;
2. **one of each type on court at a time**, guaranteed by the batch dealing distinct types and by
eaters only ever being shamblers. "The brute" always names exactly one body.
**The new failure mode this created, and it is a good example of the class.** Types move at
different speeds, and drill bodies hold their lane — so a body in a lane you are not standing in
walks the full court and off the back untouched. Left as the ordinary despawn that stranded the
sequence asking for a body which **no longer existed**: precisely the un-winnable state the mode
exists to prevent, reintroduced by a change that looked purely cosmetic. Two fixes, both needed:
- **a batch body crossing your baseline counts as CAUGHT** ('GOT PAST YOU'), which is also just
better — the drill is "don't let them through" and now the lanes mean something;
- **the speed spread is narrowed to 1.35..0.70**, not the roster's own 3.2x..0.45x, so a batch stays
coherent. The types still read as different because their real difference is **HP, untouched**: a
runner is one shot and a roller is seven, so the called order still decides how early you must
start on what. Verified: four minutes of simulation, 14400 frames, **zero frames** in which the
sequence named a body that was not on court.
Watch: **a roller in the middle of a sequence is seven aimed serves.** Oliver asked for the roster's
robustness to be kept, so it is — but if a round ever feels like grinding rather than reading, a
drill-only HP scale is the knob, not a change to the roster.
**Open, and every one of them is Oliver's call after he plays it:**
1. ~~**A ball that carries through the lane can complete two steps at once.**~~ Largely CLOSED by
the slice removal (seventh pass) — a cut ball picking its own next victim was the main way this