Make

CASE STUDY 2 OF 8

HORSE: COURT CALLS

A basketball game built for the wrist.

I rebuilt HORSE for Apple Watch around large targets, four directional actions, and five distinct haptics. A failed bright-sun session led to an Outdoor mode with larger, higher-contrast controls.

Status

Version 1.0.1 is live on the App Store.

Context

A watchOS 26 app built in SwiftUI and tested on a physical Apple Watch.

My role

I owned the interaction design, watchOS direction, integration, physical-device testing, and final decisions.

The whole game fits in a brief glance

The watch calls the shot: Layup, left side, with green made and red missed buttons

The primary decision is made or missed.

The watch calls a shot: layup left side, floater in the lane. You take it for real, then answer with a tap. Green means made, red means missed, swipe right to skip, swipe left to undo.

Five haptic patterns distinguish made, missed, the final-letter warning, game over, and reset. They let me confirm the state change without immediately rereading the score.

4
game actions
5
haptic patterns
4
shot packs

Why a basketball game lives on a watch

I play solo shootarounds in short windows: fifteen minutes, an empty court, a ball, and whatever is already on me. A phone is a poor scorekeeper when both hands are busy. The watch is already on my arm.

What stayed and what changed

STAYED THE SAME

  • Directional grammar
  • Made, missed, undo, and skip
  • The real court stays primary

CHANGED FOR APPLE WATCH

  • Larger touch targets
  • Distinct haptic feedback
  • Watch-sized screen hierarchy
  • Outdoor mode and undo timing
  • Shot-pack settings

One run, four screens

Start overlay with the controls: make, miss, swipe to skip or undo
Start
Mid-run call: Layup, left side
The call
Final letter warning: Floater in the lane with HORSE nearly spelled
Final letter
Game over: HORSE, you made 0, play again or home
Game over

A missed-shot overlay appears for three seconds after each new letter. The final letter advances to Game over.

Outdoor mode and shot packs

Outdoor mode: short baseline left, with oversized make and miss targets
Outdoor mode · bigger targets for bright sun
Settings: shot pack picker and the outdoor mode toggle
Shot packs · Close, Normal, Tricks, Kids

Outdoor mode started with a failed bright-sun prototype session: I could not hit my own targets reliably. The result is a higher-contrast, larger-target option for bright-court play.

Release follow-through

Shipping exposed a launcher failure. Version 1.0.1 fixes it.

Version 1.0 launched with a Control Center basketball that rendered correctly but did not open the app. The widget could display the control, but its URL intent could not complete the action.

I replaced the URL intent with an App Intent, inspected the archived widget binary, installed the update through TestFlight, and physically retested the launcher on Apple Watch. Version 1.0.1 is now live.

Current boundary

The version 1.0 launcher issue is fixed in the live 1.0.1 release. HORSE does not include multiplayer, accounts, cloud scores, or a phone companion.

AI working method

How I used AI to move from product decision to working software

Product decision
Cross-device interaction design, watchOS adaptation, UX writing, accessibility, device QA, and App Store release.
AI-assisted build
I used Codex and Claude Code to port HORSE to SwiftUI, then adapted the controls for Apple Watch and tested the release on-device.
Evidence
  • Release: Version 1.0.1 · Live
  • Testing: 7 tests · Physical Watch QA
  • Inputs: Gestures · Crown · Tap

REFLECTION

Porting reveals the core design.

The shared interaction grammar was the core idea; screen layout, controls, and feedback had to change with the hardware.