A Number That Drains: How BraPP Keeps Score

One draining number does most of the design work in BraPP. Notes on the clock that ignores buffering, why typing is the stop button, and a ladder that deals deeper cuts the higher you climb.

A Number That Drains: How BraPP Keeps Score

Most of BraPP is one rule: a song starts at 1,000 points and loses 100 for every second it plays. Almost every other decision in the game exists to keep that rule fair.

A round in progress, and the profile it feeds

The clock is the player's, not the network's

A press plays up to five seconds from wherever the song last paused. The worth drops on the player's own clock, counted from the clip that is actually playing, so buffering costs nothing. If the preview takes a moment to arrive, nobody is paying for it.

The phone works the live number out locally and the server is only told at each press and each stop:

var liveWorth: Int {
    playing && snippet
        ? max(0, worth - Int((Double(chunkMs) * Double(drainPerSecond) / 1000).rounded()))
        : worth
}

Between presses, worth is whatever the server last said. During a clip, it's that minus what has drained so far. The server stays the authority; the phone just draws the countdown.

Typing is the stop button

There is no separate "pause" to hit. The moment you start typing, the song stops and the clock stops with it. Knowing the answer and stopping the drain are the same gesture, which means a fast guess feels fast.

Everything else is priced against the same 1,000:

  • Hear more: press play again. Another chunk, more drain.
  • A wrong guess: minus 100. Three wrong and the song is gone.
  • A hint (the artist's name): minus 200, on games that allow it.
  • Just the artist: half.

Voice has one awkward problem

With voice on, you can say the title instead of typing it. The catch is that the phone is also playing a song, and lyrics coming out of a speaker look a lot like guesses to a speech recogniser.

So the microphone has two modes. While the song is playing it listens for one word, "stop". Only once the sound has stopped does the next full phrase count as the guess. Say "skip" and it skips.

The ladder changes what you're dealt

Points add up into a rank: Rookie, Fan at 1,000, Roadie at 5,000, Tour Manager at 20,000, Rock Star at 100,000, and on up past a million. A rank isn't only a label. Each rung widens the pool of songs you can be dealt, so the higher you go, the deeper the cuts. The game gets harder because you got better.

A reason to come back tomorrow

The daily challenge is one five-song game a day, the same five for everyone. Finish it on the day and you build a streak, and streaks pay a growing bonus. The reminder for it arrives at 10am in your own time zone, because the phone sends its time zone along with its push token.

Today's challenge on the home page, and a finished game

Every song has a record

The fastest person to name a song holds its record across every game that song has been dealt into. It's a small thing, but it turns a guessing game into a few thousand tiny leaderboards, and it's why the reveal after each song shows the record to beat.

BraPP is free on the App Store.