▮File 04 — Construction

Behind the game

hum(ai)n is an independent web project — one codebase, no publisher, no database, and a set of constraints chosen early and then defended.

The shape of it

It is a single-page browser experience built on a modern React framework and deployed as ordinary static output plus a handful of server routes. There is no account system, no content management system and no player database, because none of those would make the piece better and all of them would make it heavier.

The whole game runs with no configuration at all. With no model credentials present, the deterministic local engine plays Darry end to end — the same path the automated test suite exercises on every change.

Behavioural modelling

The profile Darry works from is derived in the browser from the choices you make. Each measured tendency carries its own sample size and a confidence value, and every rate is smoothed toward an even prior in proportion to how thin the evidence is. This is the single most important honesty constraint in the project: it means a short session cannot produce a confident-sounding claim, and it is why Darry frequently loses.

Left and right placement of the two options is counterbalanced on a shuffled but balanced schedule, so a side preference is measurable rather than an artefact of the layout. Which option carries the better odds is randomised per game.

The prediction commitment

The mechanic only works if Darry cannot cheat, so the ordering is enforced by the system rather than asserted by the copy. Predictions are produced and sealed on the server with authenticated encryption before the browser receives anything, and the browser is given a token it cannot read plus a fingerprint it can check afterwards.

Each seal is bound to the session, the game and the round, expires, and can be opened once. The reveal route does no prediction work — it opens what already existed. The state machine will not leave the deciding state without a real sealed prediction, so the disabled controls are a consequence of the mechanic and not a timer.

The specifics of the scheme, the abuse limits and the prompts are not published. That is not secrecy for its own sake: publishing them would mostly help somebody read Darry’s answer early, which is the one thing that would make the game pointless.

A small data footprint

The behavioural profile is never written to disk. It lives in memory for the life of the tab, which is why it carries across play again — Darry keeps what it learned — and why refreshing the page is a complete reset.

One preference is stored on your device: whether the sound is muted. Profiles written by an earlier release are deleted on load rather than migrated, so an old record cannot quietly reappear in this version. What is and is not processed on the server is set out in full in the privacy policy.

Art direction

True black, one cold off-white, one restrained error red, and a sickly phosphor tone used sparingly for machine state. Everything is monospace, on a font stack that is entirely local — nothing is fetched at runtime, so there is no flash of unstyled text and no external dependency for the way the piece looks.

The escalation runs off a single value that rises with progress and with how well Darry is actually reading you. It drives the scanline weight, the grain, the red bleed and how far the vignette closes in. Because it tracks something real, a session where Darry is failing genuinely feels different from one where it is not.

Glitches are authored rather than sprayed. Each one is a specific effect fired at a specific moment, which is why the title screen stays readable for minutes at a time while the ending does not.

Accessibility and flashing

No animation in the game cycles opacity or colour faster than three times a second. Under prefers-reduced-motion every displacement, shake, drift and blink is removed, while the grain, scanlines, vignette and colour remain — so the screen still feels wrong without anything jumping. There is an automated test for that.

Every control is reachable and operable from the keyboard, with a visible focus ring. The booth’s machines are removed from the keyboard order entirely while Darry is deciding, rather than merely being greyed out. Screen transitions are announced through a polite live region, and the wordmark keeps a fixed accessible name however badly the glyphs are corrupted. The sound can be turned off from the menu, from the corner of the game, and it stays off.

Phones first

Most people arrive on a phone, frequently from a code printed on something physical, so the phone layout is the primary one rather than an adaptation. The layout is tested at several handset widths on every change, with a hard rule that nothing may ever scroll sideways and every control must meet a minimum touch size.