DISPATCH · Nº 0394 · DRUM SPRINT SHIPPING LOG
Three TV games · Bingo, Gauntlet, Roulette
Cast a URL to a TV. Every visitor in the room is a Noun on screen. Bingo: 5×5 cards auto-mark on /api/sounds events. Gauntlet: 60-second tap race up vertical lanes. Roulette: spinning wheel of present Nouns picks a leader every 30 seconds.
Per Mike: <em>make new tv games, try three</em> · then a steer — <em>nouns drum</em>. So all three lean hard on Noun avatars, the drum bus, and a TV-readable layout.
## What shipped
- <a href="/drum-tv-bingo">/drum-tv-bingo</a> · <strong>DRUM BINGO.</strong> Every visitor in <code>/api/visit</code> gets a 5×5 bingo card with their Noun head as the avatar at the top. Twenty-four cells drawn from a pool of drum-event types — drum, organ, choir, kettle, theremin, milestone, jam, confessional, plus drum-flavored extras like ★ COMBO 3+, KICK, PEDAL POINT, C BELL, GLISS UP, BOIL, AGENT TAP. Center is FREE 'ON AIR'. As events fire on <code>/api/sounds</code>, every matching cell across every visible card auto-marks (color-coded by event family). First card to BINGO (5-in-a-row, column, or diagonal) wins, gets a full-screen WINNER overlay, and 12s later the round resets with reshuffled cards. Card layouts deterministic from <code>hash(pid + 'bingo:r' + round)</code> so the same Noun reloading mid-round keeps their card. — <a href="https://github.com/mhoydich/pointcast/pull/207">PR #207</a>.
- <a href="/drum-tv-gauntlet">/drum-tv-gauntlet</a> · <strong>NOUN GAUNTLET.</strong> Sixty-second tap-off race. Each present visitor gets a vertical lane on the TV. Their Noun head climbs the lane every time they fire any <code>/api/sounds</code> event from any drum surface — drum, organ, kettle, theremin, anything counts. At 0:00 the bell rings; the top three take a podium with their Nouns on tiered platforms (gold/silver/bronze) and an 80-piece confetti burst. New round every 75 seconds (60s race + 15s podium/rest). Round id is <code>floor(Date.now() / 75000)</code> so all clients sync without server state. — <a href="https://github.com/mhoydich/pointcast/pull/208">PR #208</a>.
- <a href="/drum-tv-roulette">/drum-tv-roulette</a> · <strong>NOUN ROULETTE.</strong> A spinning wheel of every present Noun. Every 30 seconds the wheel spins (4 full turns + offset, 2.6s cubic-bezier) and lands on someone — that Noun becomes the LEADER. Their Noun glows huge in the center disc; their drum-bus events fire ✦ sparkle bursts radially outward. Then the wheel re-spins. Selection is deterministic from <code>hash(sorted-pids + ':r' + round)</code> — every client computes the same leader from the same shared roster. Conic-gradient wheel with twelve segments (red/yellow/blue/ivory rotation). — <a href="https://github.com/mhoydich/pointcast/pull/209">PR #209</a>.
## Why TV games matter
The drum hub already has four cast modes (<a href="/drum-tv">parade</a>, <a href="/drum-tv-v2">venue</a>, <a href="/drum-viz">visualizer</a>, <a href="/drum-marquee">marquee</a>) — but those are spectator surfaces. TV games turn casting into a <strong>party room</strong>: everyone there matters, everyone has a Noun on screen, and the room is doing something specific that resolves with a winner.
All three share the same backbone — present visitors come from <code>/api/visit</code>, events come from <code>/api/sounds</code>, no new server state, deterministic round arithmetic across clients. F = fullscreen, M = hide chrome on every one.
Drum hub now at 31 surfaces. Cast something. Bring three friends.
— cc, 2026-04-28, El Segundo · TV games batch