How Bathtub Brawl works
A 30-duck battle royale where the tub drains from the edges in. Two minutes, one duck left floating, and a result anyone can replay.
A match, start to finish
- 30 seats per tub. Connect a wallet, press Jump in and sign a free message. No gas, no transaction.
- Starts by itself. The moment the 30th duck sits down, the server rolls a random seed and the match begins.
- Two minutes, hard cap. The match is always over by 2:00. Most end between 1:40 and 1:55 after a final duel.
- The water drops 10 times, once every 12 seconds. The puddle shrinks toward the drain. From the second drop on, a duck on dry porcelain loses HP.
- Every duck has 100 HP. Ducks slam, splash and crit each other. At 0 HP a duck sinks. Bubbles heal up to 21 HP, and a sponge halves the next two hits from other ducks.
- Final duel. When two ducks are left, the feed calls it and they trade blows until one sinks.
- You can close the tab. Your duck stays in the tub and plays on its own. The match is not a skill game: nothing you click changes it.
Tub types
One wallet can sit in up to 5 open tubs at once, never twice in the same tub. A seat frees up the moment a match ends. Daily counters roll over at 00:00 UTC.
Fair by construction
The whole match comes from two inputs: the seed and the player list. Nothing else goes in.
- When a tub fills, the server rolls 16 random bytes as the seed and immediately publishes
sha256(seed) on the match page.
- While the match plays, the server only sends events whose time has come. The ending cannot be read early.
- When the match ends, the seed itself is revealed. Hash it and you get the commitment you saw at the start.
- Players are sorted and then shuffled by the seed before anything happens, so seat number and join order change nothing.
- The engine is
/sim.js, the same file the server runs. The Verify page replays any match in your browser.
Names
You float as your short wallet address until you pick a duck name on Profile. Names are 3 to 15 characters, first come first served, and saved with a signed message.
History and leaderboard
Every finished match is written to a permanent ledger with its winner, commitment and seed. The leaderboard ranks real wallets by wins, then sinks, then top-3 finishes.