Impact Wave
M
Case Study · Billboard Activation · Sweden

McDONALD'S

PICK & PLAY
McDonald's SwedenBillboard PongReal-Time MultiplayerQR ControllerNext.js · Firebase
2Screens

Giant LED billboard + player phones — live-synced Pong at 60fps.

60fpsPaddle Sync

Firebase RTDB delivering paddle position updates at 16ms intervals.

60sLobby Timer

McDBot AI activates if a second player doesn't join in time.

3Prizes

Fries, McFlurry, or Big Mac — selected before the match begins.

01
The Brief

PONG.
ON A
BILLBOARD.

McDonald's Sweden ran a real-world campaign where passers-by could play Pong against each other on a massive outdoor LED billboard, controlled entirely from their phones. No app download. Scan the QR on the billboard, pick a prize, and play.

"The brief was deceptively simple: a giant screen, two phones, and a game of Pong. The engineering challenge was making a decades-old arcade game feel instantaneous at billboard scale."

The re-engineered version required a dual-transport architecture — separating high-frequency paddle position data from low-frequency session state to achieve the latency profile needed for a playable experience over mobile data connections in unpredictable outdoor environments.

THE BUILD

Production Next.js app · dual Firebase transport

A Next.js web app with two routes — /display for the billboard and /controller for phones. Game logic runs client-side on the display; player inputs stream from phones via Firebase RTDB.

Next.js · React · TypeScript
Firebase RTDB — paddle transport (16ms)
Firestore — sessions, state, results
Firebase Anonymous Auth
McDBot — adaptive AI opponent
requestAnimationFrame game loop
DOOH_In_Situ

In-Field
Activation Geometry.

Real-time synchronization across 50 meters. The phone behaves as a high-fidelity input node, streaming position data to the broadcast server at 60Hz.

McDonald's Pick & Play Billboard
ACTIVE_BROADCAST_NODE_SE_STHLM
Mobile Player Controller
Live_Sync_Active

ONE GAME.
TWO
SCREENS.

The billboard is a spectacle — enormous, public, unmissable. The phone is the controller — intimate, personal, in the player's hand. Each screen has a completely different job, and each required a completely different design approach.

📺 Billboard Display · /display

THE BILLBOARD

The display screen renders the full Pong court with the Golden Arches as a semi-transparent net. A massive, clean red canvas — readability from 50m.

Golden Arches M as court net
Fry-shaped photo paddles
QR code in lobby state
McDBot AI fallback
📱 Phone Controller · /controller

THE CONTROLLER

A pure red screen. Prize selector, initials entry, and a drag-to-control paddle zone. The phone's entire screen is a single vertical drag controller.

Prize selection before join
Pointer capture API
Game mirror reflection
Result screen with claim
Dual-Transport Schema
Firebase RTDB // high-frequency
liveControls/{matchId}/
p1 { y: 0.42, ts: 1234 }
p2 { y: 0.67, ts: 1234 }
Firestore // low-frequency
playerSessions/{uid}
name, prize, seat, connected

TWO PIPES.
ONE REASON.

A single Firebase transport couldn't serve both needs. Firestore is perfect for session data but too slow for a playable paddle. RTDB can sustain 60fps writes at under 50ms latency.

TransportPayloadRate
RTDBPaddle Y (float)16ms
FirestoreGame StateOn Join
WIN
YOUR
MEAL.
🍟FRIESMost popular pick
🍦McCFLURRYFan favourite
🍔BIG MACThe classic

WANT THIS
FOR YOUR
BILLBOARD?

The architecture is replicable for any two-screen real-time activation. Scales to any outdoor environment.

Client McDonald's Sweden
Year 2024 · Stockholm
Format Outdoor LED Billboard
Stack Next.js · Firebase RTDB
© Impact Wave MarketingM