Skip to content

Field Day

A game weekend for 13 friends, run from everyone's phone and the TV.

In progress

I'm running a bachelor party weekend in Scottsdale, with 13 of us playing 14 events over three days, from Long Putt and Beer Die to poker on the last night. Field Day is the app I designed and built to run it. The TV is the room's scoreboard, and each phone holds your chips, bets and games.

  • 14 events, 13 players
  • TV plus every phone, in sync
  • Cloudflare, React, Three.js

One round, start to finish

The event, the draw, the face-off, everyone's bets, the result, the standings and the winner's song, then the crown at the end of the weekend.

Rendered from the app with stand-in names, before the weekend. No sound.

How it's built

  • Cloudflare Durable Objects
  • React
  • Three.js
  • A web app, added to the home screen at check-in

Every phone

  • React and Three.js
  • Each player's next game, chips, bets and buzzer
actionswhere things stand

One Durable Object

  • On Cloudflare
  • Runs the whole game and decides every action
  • One clock, so draws land everywhere at once
where things stand

The TV

  • React and Three.js
  • The standings, the draw, face-offs and the crown, for the room
A phone never replays a moment it missed. It shows where things stand.

Why I built it

A weekend of scored games turns scorekeeping into someone's second job. Nobody agrees on the score, side bets are forgotten by Saturday night, and fixing one result breaks everyone's math. So I set a few rules before anything else.

  • One number everyone trusts
  • Nobody does arithmetic
  • Every screen answers its question in a ten-second glance
  • The host runs it from one button, because the host is playing too

The first version

It came together on July 19, with a leaderboard, betting, draws, a TV view and host controls, all on one server every phone talks to. It was called The Invitational, in black and gold. By that evening it was Field Day.

The ideas that still hold it together all showed up that first week.

  • Everything is chips. One chip is 100 real ones, so your stack on Saturday night is your stack at the poker table
  • Betting works like a rack of chips. Pick one and tap it onto a side
  • You can only risk half your stack
  • Standings are worked out from results, so fixing a result fixes every payout with it
Three phones from the first version, The Invitational, in black and gold: check-in with the 13 names, the board, and wagers on 8-Ball Doubles.
July 19, as The Invitational. A new render of the old release, rebuilt from its commit.

The app was the invitation

I sent it out months early, so check-in was the first thing anyone saw, and it had to explain the weekend.

  • Claim your spot on the roster
  • Flights go in as boarding passes
  • Build a player card with your chip color and photo
  • Rate yourself privately, so team draws come out even

By the end of September, 12 of the 13 had checked in. Their answers were sitting in production, so no later redesign was allowed to reset anyone or send them back through setup.

Three phones from July 28: the add-to-home-screen step of check-in, the board in dark brown and gold, and a player card with a Quick Draw challenge.
July 28, the version my friends checked in on, rebuilt from its commit. The LOCAL tag marks the rebuild.

One button for the host

I'm the commissioner and a player, so the host's controls collapsed into one pill that always shows the next step, whether that's announcing, locking bets or recording the winner. Each tap moves the tournament along and points the TV at the right scene in the same instant.

  • Anything on a timer runs itself, and one switch pauses it all
  • Fixing a result shows what it changes before I confirm
  • Friday check-in is a code on the TV, so the lobby fills in as people walk in

Not everything worked. I folded an awards feature into a betting rework, it muddied the betting, and I rolled both back the next day. Awards came back later on their own.

Host screens: the next step on home with the winner to record, the commissioner menu, and the crew check before a draw.

Finding the look

In early September I tried a light redesign in paper and burgundy, with rewritten copy. I put it on staging and turned it down the next day. It was harder to use, and it lost what held the dark version together.

On October 1 I threw out visual rules I hadn't chosen and started over as a lit pinball backglass, with blue-black glass, bone-white type and lamps that each have one job.

  • Magenta means live
  • Amber means chips
  • Cyan means information
  • Yellow only ever means you

Anything that needed explaining got drawn instead. Every game's rules became three or four drawn steps.

Four versions of the home screen side by side: light cream on July 19, dark brown and gold on September 30, the first blue-black backglass on October 3, and today's, with lit chips.
Home on July 19, September 30, October 3 and today. The first three are new renders of old releases.

Making the board feel alive

A scoreboard you glance at still has to tell you what just happened, so the moments got motion, and the motion got rules.

  • Standings are towers of each player's chips that clack as they land and re-sort
  • Draws reveal card by card on the TV and every phone at once, on one server clock
  • Only fresh changes animate. A phone back from sleep shows the result without replaying it
  • Win, and your song plays on the house speaker

Games on the phones

  • Where and When. One of my photos goes up, everyone drops a pin and picks a date, and the reveal draws every guess to the answer
  • Trivia started as a team game. A day later I made it individual, because on a phone it plays solo
  • A Jeopardy-style board on the TV with every phone as a buzzer, ordered by each phone's own reaction time instead of whose signal arrived first
  • Karaoke. Everyone picks a song ahead of time, and the room votes
The trivia board on the TV with six categories and their point values, and a phone with the pink buzzer.
Where and When on the TV: a map with everyone's guesses drawn to where the photo was taken.
Phones during games: a geography question, the buzzer, and dropping a pin for Where and When.

Comebacks, and what I cut

I wanted a comeback to stay possible all weekend. On October 3 I added a bounty on the leader, better odds for the underdog, and byes for whoever was lowest on chips. The next day I cut two things.

  • The leader bounty, because it took too long to explain
  • Team MVP, a vote after each team game that played the MVP's song. By the time the vote ended, the song came too late

On October 13 the underdog odds gave way to something simpler, pool betting. The room's own bets set each side's price, so an upset pays what it should.

PICKLEBALL DOUBLESBETTING OPEN

Play-in 1, pool of 1,200

YOUR STACK

1,000

The room's moments

When something worth yelling about happens, the TV reacts, whether it's an upset, a third win in a row, a new leader or a big losing bet. Each one is a short bit starring the players' own chips.

The first bits were cartoon slapstick with white gloves. On October 14 I redrew them as neon in the app's lamp colors, with chips that hop, spin and wobble and no hands. The winner's song now lands on the bit's beat.

An older bit: two chips in cartoon boxing gloves squaring off for a Quick Draw.
Before, on October 14. A new render of the old release.
After, an upset in neon

The TV is the room, and the phone is you

  • One Cloudflare Durable Object runs the whole game. Phones send actions, and the server decides
  • The TV shows everyone, from standings and the draw to the face-off and the crown
  • Your phone shows you, with your next game, chips, bets and buzzer
  • Every match goes face-off, then bets, then lock
  • A phone never replays a moment it missed. It shows where things stand
A face-off on the TV, Marcus and Leo against Sam and Kai, while a phone places chips on the same match.

Where it is now

The newest version is on staging. What's left is what a screen can't test, like dragging chips on a real iPhone, how the 3D chips run on a phone, and how the TV feels in the room.

It isn't done until the weekend happens, October 30 to November 1. I'll add how it went.

In progress. Screens and clips are new renders of the staging build, made October 17 with sample data. Older versions are rebuilt from their commits, not period screenshots. Every name is a stand-in, and photos are placeholders.