utwordSystem v3.25.7
Patterns

A round

The screen every game is played on. A clock and a score on top, the word in its slot, the board under the thumb. While the clock runs, only feedback moves.

stable

When it happens

Every game in Outword is a round on this screen. The modes change the board, the clock and what the score pill counts; the screen stays the same.

ModeWhereBoardClockScore pillEnds
Daily boardCompete5×5, the same for everyone90s"N pts"at 0:00
Longest wordCompete5×5, the same for everyone60s"longest N"at 0:00, or the moment you find the longest word possible
Daily triviaCompete5×5 per question2 min"N solved"at 0:00; see Trivia
Classic roomPlay4×4 or 5×5, the host's pick30, 60, 90 or 120s"N pts"at 0:00, for everyone together
Trivia roomPlay5×5 per question1, 2 or 3 min"N solved"at 0:00
SoloPlayClassic or Trivia, the same settingsthe samethe sameat 0:00; nothing banks

A room holds up to 12 players. Classic rooms and solo also set the minimum word length (3, 4, 5 or 6 letters) and Kids mode. How each mode scores is on Scoring.

Composition

From top to bottom. A word round and a trivia run share everything except the parts marked.

PartComponentSpec
Headerbrand mark, backThe mark rests on its canonical path instead of looping. No help button during play
EyebrowlabelTrivia only: "Trivia · Sat, Oct 10", "Trivia · Room RUXP", "Trivia · Solo". The word round has none
HUDtimer pill, score pill.game-top: clock on the left, score on the right, 12px below. Pills are 8px 16px, 800 16px, tabular figures
Mode linehintLongest word only: "find the longest word · 9 on this board"
Question cardcardTrivia only, between the HUD and the slot; see Trivia
Captionswipe hint700 10px, 2px tracking, uppercase, --fg-soft. "Swipe to spell" at rest; the verdict for 750ms after a word
Slotword pillradius 999, padding 9px 18px, min-height 40, 800 17px, 2px tracking. No box when empty
Boardtile grid4×4 or 5×5, gap 8, no trace line
Word logwords head, word listWord round only. "Your words" and "N found"; a 40px hairline until the first word; then every word, newest first, with its points
Actionsoutline buttonsTrivia only: Hint and Skip, 44px tall. The word round has no buttons on the board screen
Dark
Light
A word round, mid-trace real game CSS; STAR is traced and the pill stays neutral, though it is a word

Flow

Get ready, before the countdown
Get ready…
The countdown at 3
3, 2, 1
Lit tiles and a neutral pill mid-trace
Tracing
The word pill in rose
Refused
The timer pill in rose at 0:08
Last 10 seconds
  1. Get ready. The round is set to start a few seconds out: 4.5s in a room, 3.8s alone or on a daily. "Get ready…" shows until 3 seconds are left, then 3, 2, 1, each number popping in over 0.25s. In a room every phone counts down to the same moment on the shared server clock. A phone that learns of the start late, because the app was in the background or the network was slow, skips the countdown and joins with the time that's left, so the round still ends for everyone together (3.25.7).
  2. Trace. Press a tile and drag through its neighbours. The tiles light and the pill shows the letters in neutral, whatever they spell.
  3. Lift. The word is judged once. The caption names the verdict and the pill takes its colour for 750ms: "+N pts" and green for a word that scores, with a 12ms haptic tap; "already found"; "go longer" for a word under the minimum; "not a word" in rose. Under 3 letters says nothing.
  4. Log it. A scored word goes to the top of "Your words", in green until the next one lands, and the score pill adds its points. In a room, the ×2 for a word only you found is added at the tally, once every player's list is in.
  5. Last 10 seconds. The timer pill turns rose: --danger fill, --ground ink.
  6. Time. At 0:00 the board goes and "Time!" shows over a status line: "Tallying…" alone or on a daily, "Collecting words…" for the host, "Waiting for the tally…" for a guest. Then Results.

In Longest word, a word only counts if it's longer than your best so far. One that is reads "new best" and the score pill becomes its length; anything else reads "go longer". Finding the longest word on the board ends the round at once, with a double buzz.

States

StateWhat the player sees
Get ready"Get ready…", 700 22px, --fg-soft
Countdown3, 2, 1 in the display face at 110px
At rest"Swipe to spell" in the caption; the slot holds its 40px with no box
Tracinglit tiles; the letters in a neutral pill
Tracing a word you havethe pill in --raise with --fg-soft letters; the lit tiles at 0.72 opacity
Scoredcaption "+N pts" in green; the pill green for 750ms; the word on top of the log in green
Already foundcaption "already found"; the pill dims
Too shortcaption "go longer"; the pill in --raise
Not a wordcaption "not a word" and the pill in rose, 750ms
Fumbleunder 3 letters: nothing
Last 10 secondsrose timer pill, --ground ink
Time up"Time!" in the display face at 44px, and the status line
Joining late (a room)no countdown: the board opens with the time that's left, and the round ends with everyone else's
Still playing when the room's tally is outthe round ends here too: "Time!", then the results (only a phone whose clock couldn't be synced)
Dark
Light
The verdict, for 750ms after the finger lifts caption above, pill below: scored, already found, too short, not a word
Dark
Light
The HUD at rest and in the last 10 seconds

Why it's built this way

Known issues and gaps

  • The word round didn't get trivia's swipe fixes. 3.23.2 made trivia read the word from the live trace on lift and take the whole tile for the first touch and the lift point. The word round's board (SwipeGrid) still needs the centre 70% of a tile for the first touch and reads the word from the last render, the same path that dropped a final letter on a quick lift in trivia.
  • Verdicts aren't announced. A trivia run has a status region that reads "That's it" or "Not it". The word round's caption has none, so a screen reader hears nothing on release. Like every board, a round also needs a pointer to play.
  • The countdown and "Time!" render at regular weight on iPhones. .count-num and .timer.done set --font-display without a weight, and Arial Black isn't on iOS. Logged as known in 3.9.1 and not fixed.
  • Lit tiles fade in over 0.5s, not 0.08s, because the light/dark cross-fade overrides the tile's transition. See Tile.
  • Survival is still in the code. Play stopped offering it in 3.23, but the round still carries its 4×4 that grows to 5×5 and its "You're out" standings.

Changelog

VersionChange
3.25.7A phone that sees a room's start late joins the round in progress with the time that's left, instead of counting a fresh round from when it saw the start; one still playing when the tally is out stops. Three phones, one 22s late: all end at the same second (it played on 20s after the others before)
3.23Trivia mode replaces Survival in Create game and Play solo
3.19.8A phone whose shared clock is off counts the 4.5s lead from when it saw the start signal: it starts within about 0.7s of everyone (was 3s early, with no countdown)
3.19.7Round timing moves to the Firebase server clock: three phones 17s apart start within about 60ms (was up to 8.8s)
3.12The trace line is hidden on the game board; the lit tiles carry the word
3.11.0The urgent clock's ink becomes --ground; white on the light rose was near 1.4:1