Trailer · 9∶16, as made for the game · silent

← All games

Card game · solo build · live

Bullheads

The 104-card “don’t take the sixth card” game, for 2–10 players in a browser.

Play the game How it was made Try a turn here GitHub

My part
Everything in the repository: rules, bots, game server, web app
Kind
Browser game
Tags
Browser · 2–10 players · Rooms · Bots

Making of

  1. 01 Before

    A single table, then a rebuild

    The first version, in March 2026, was one deployable table. In September it was rebuilt as a multi-room monorepo: a React web app, an Express and Socket.IO server, and one shared package with the rules, the protocol types and the bot, used by both sides.

    Source · commits 2a1af90, 2026-03-23 and b8768c0, 2026-09-30

  2. 02 Problem

    Stuck on “Opening room”

    Creating a room seats you, then the page moves to the room and joins again. The server saw a player already seated and returned early, so the new page never received the room state.

    Source · apps/server/src/rooms.ts · commit 9a46740, 2026-09-30

  3. 03 Decision

    The server re-sends what the page missed

    An already-seated join now gets the current room state again. The server stays the only authority on the game; a scenario script checks reconnects, matchmaking, sync and rematches.

    Source · commits 9a46740 and 0c5a45a, 2026-09-30

  4. 04 Now

    Bots that count

    A bot plays each card in its hand against sampled guesses of the unseen cards, up to 500 times, and keeps the cheapest. Easy, normal and hard differ in the number of simulations, noise and random play; over 900 games they averaged 13.7, 10.9 and 9.2 bullheads. On phones the hand is a 2×5 grid with a fixed action bar.

    Source · packages/shared/src/bot.ts · commits 0c5a45a and c52f066, 2026-09-30

Try a turn

One turn. Pick a card from your hand.

Your hand · pick one

Your pile

 

The full game