Bug Dodger¶
Version 1 · Disclaimer
Almost nothing in wild fermentation is unconditionally good or bad. Brettanomyces is the point of a lambic and a defect in a clean ale. Pediococcus with Brett present is the deepest acid engine there is; without Brett it is a fault machine. Acetic acid is flavour-critical at 0.6–1.2 g/L and a dumped carboy above it. Oxygen at pitching is yeast health; the same molecule through a slack bung three months later is mould and vinegar.
It is all about fun and games... So let's see what we've learnt.
Watch out for the context, an undesirable entity may not be so in a different context.
Take lil Mr. Brewer to the end of the rainbow, where gold homebrew lambics are found.
The drill¶
How to play¶
- Space, the up arrow, or a tap rejects the approaching entity. Doing nothing accepts it: the brewer eats what you do not jump over.
- A jump only acts on an entity within the brewer's reach, marked in accent colour in the lane and with a ▶ in the list. Jumping early is just a jump, and the entity is then accepted when it arrives. The reach is about two seconds of lead time at the default speed: enough that this stays a question about knowledge rather than reflexes.
- P or Esc pauses, and a pause stays until you clear it. Nothing is greyed out while paused, so you can study the lane, and links in the list below are live.
- Speed and Spacing are yours to set. Spacing is a percentage of the crossing time rather than a fixed delay, so the visual gap between entities holds when you change speed.
- Pause on error is on by default: a wrong call stops the run and shows you why, and waits for Space or Esc. Untick it to be told without being stopped.
Three operation modes:
| Mode | What it does |
|---|---|
| Single context | One context on a loop. Use it to drill a context you are weak in. |
| Random | The context changes between rounds, announced in the banner. Harder, and closer to the real problem, because you cannot pre-load one answer set. |
| Study | No timer. Space rejects, Enter accepts, every card is shown, and either key moves on. This is also what reduced-motion visitors get. |
Scoring is deliberately asymmetric. A correct call is +1. Rejecting something good costs −1. Accepting something bad costs −2, because letting an infection into a carboy is worse than turning away a bug you could have used. Conditional entities score nothing either way: the point of those is the reason, not the reflex.
The contexts¶
| Context | What you are judging for |
|---|---|
| Lambic | Spontaneous, long mixed fermentation, aged hops, oak. The widest tolerance of anything here, and the only context where the enteric phase and a ropy phase are part of the plan. |
| Mixed fermentation | A clean primary, then deliberate bugs on a schedule. Narrower: the programme has compressed or deleted phases and has to replace their contributions on purpose. |
| Clean ale | One pitched Saccharomyces. Almost everything else is a defect, which makes the few things that are not the interesting part. |
| Bottle conditioning | What survives the package and what over-attenuates in it. Gravity stability, residual dextrins, headspace oxygen, and whether anything is left alive to carbonate. |
| Maillard prep | The ingredient kitchen rather than the carboy: cook products, kernels, nitrogen sources and thermal-process contaminants. |
Where the verdicts come from¶
Every verdict carries a one-line reason, a confidence tag and a citation to a page on this wiki.
Nothing in the entity set is an unsourced assertion, and the validator refuses to publish an entity
whose verdict has no why line, no confidence tag or a link that does not resolve. The bulk of the
fermentation entities come from
Microbial Succession, Organisms & Chemistry
and Blending, Donors & Packaging;
the Maillard set comes from
Maillard-Cooked Fruit Preparations and the two
kernel benches, cyanide dose and
marzipan against cyanide cost.
This simplifies, on purpose
A drill has to give one answer per entity per context. Real practice judges a dose at a moment: ethyl acetate is fruit at one concentration and nail varnish at another, and diacetyl is a threshold rather than an identity. Entities that turn on dose are marked as such and show the figure, but the game still scores them as a single call. Where a verdict here and a linked page disagree, the page is right and this is stale.
Adding to it¶
The entity set is data, not code: one YAML file per entity in
docs/assets/data/bug-dodger/entities/, compiled to entities.json by tools/wb.py entities and
validated by tools/wb.py validate along with everything else. An entity carries verdicts only for
the contexts where it is relevant, so adding a Maillard compound does not oblige anyone to invent a
lambic opinion about it. The schema, vocabularies and required fields live in game_entities in
wiki.config.yaml.