0 km/h
▲0%
0 m
🪙 0
🪿 0
C
S
🚲
CHECK POINT
🐌
TOO SLOW!
Pedal: alternate ← and →
Steer: A / D
🎁 Grab presents for a speed BOOST
Pull back · aim · let go
ROAD AHEAD — CALL IT
RANKED RUN

Daily Ride

RANKED RUN One per day. Crashes are fine; ending early is not. PRACTICE Unlimited. Nothing recorded but your best. ← Back
BOOST!
CRANK FIGHT!Same foot, same moment — alternate!
Match your partner’s beat with the opposite foot
▲
▼
Left Pedal
Right Pedal
▲
Left Pedal
Right Pedal
▼
▲
Left Pedal
Right Pedal
▼

Tap to Start

This browser can’t run Tandemonium

Try Chrome, Edge or Safari 16.4+, or update your phone’s software. On a desktop browser it should just work.


  
) boots like the desktop app: // "Press any button to start", dismissed by a remote key or a pad button. var isTV = !isDesktop && !!window.__tandemoniumTV; // Mirror config.js isMobile so the boot veil label agrees with the app. var isMobile = !isDesktop && !isTV && (/Android|iPhone|iPad|iPod|webOS|BlackBerry|IEMobile|Opera Mini/i.test(ua) || navigator.maxTouchPoints > 1); // Desktop (Electron) and mobile both show a "Loading…" veil instead of the // "Tap to Start" prompt: desktop dismisses on gamepad input (poll below), // mobile auto-dismisses once the Lobby loads (the tap-gate is obsolete — iOS // motion permission is requested from a real gesture at ride start). Desktop // *browsers* keep the click-to-start prompt (they need the click to dismiss). var textEl = document.getElementById('tap-to-start-text'); if (isDesktop || isTV || isMobile) { // #162: name the thing that is loading, and keep the progress bar visible. if (textEl) textEl.textContent = 'Loading Tandemonium…'; } else if (textEl && !navigator.maxTouchPoints) { // #263: a desktop browser has no touchscreen — "Tap to Start" is the wrong // word, and the click is only there to unlock audio. Say what to do. textEl.textContent = 'Click to start'; } if (isDesktop || isTV) { // Poll for gamepad input to dismiss the overlay var overlay = document.getElementById('tap-to-start'); // #428 · 16: once the game has booted, the veil is waiting on the player, // not on loading, so say so. A key press dismisses it too. var readyPoll = setInterval(function () { if (!overlay.isConnected) { clearInterval(readyPoll); return; } if (!window._game) return; clearInterval(readyPoll); if (textEl) textEl.textContent = 'Press any button to start'; window.addEventListener('keydown', function onKey() { window.removeEventListener('keydown', onKey); if (overlay.isConnected) overlay.click(); }); }, 150); function pollForButton() { var gamepads = navigator.getGamepads ? navigator.getGamepads() : []; for (var i = 0; i < gamepads.length; i++) { var gp = gamepads[i]; if (!gp) continue; // Check if any button is pressed for (var b = 0; b < gp.buttons.length; b++) { if (gp.buttons[b].pressed) { // Dismiss — the Lobby's _dismissTapOverlay will handle the rest overlay.click(); return; } } // Check if any stick is moved significantly for (var a = 0; a < gp.axes.length; a++) { if (Math.abs(gp.axes[a]) > 0.5) { overlay.click(); return; } } } requestAnimationFrame(pollForButton); } requestAnimationFrame(pollForButton); } })();
Tandemonium

Party Physics Game on a Tandem Bicycle

RIDE TOGETHER SOLO RIDE Don’t see your controller? Pair it 📱 Phone as controller

Where are you two?

PLAN THE RIDE
← Back
← Back

Choose your seat:

START A RIDE
Captain · Front seat
JOIN A RIDE
Stoker · Back seat
← Back

Local versus

VS

on a controller to join · switch team · wardrobe · leave your seat

Don’t see your controller? Pair it 📱 Use your phone as a controller CHOOSE LEVEL ← Back

Your room code:

----

Long-press URL or QR code to copy link

CHOOSE LEVEL

Scan to join

Scan with a phone, then choose: steer from it while the game stays on this screen, or play on the phone itself.

Join from another device with a code

Local multiplayer

Two controllers on this screen, one bike.

CHOOSE LEVEL
← Back

Enter room code:

TNDM -

Join a ride

Enter the code on the captain’s screen.

JOIN
← Back
Keyboard only!
Motion Steering
Stable Responsive

Users First (Games) v.fa95319 | 11-07-2026 15:06 (PR #647)

Tandemonium Actions Help 0 of 100 Profile Controls
Steering feel StableResponsiveRecalibrate
DONE

Close the game and go back to the desktop.

QUITCANCEL
P1 · Buzz a controller

Tandemonium

A party-physics game on a tandem bicycle. Ride solo or with a partner — pedal, steer, and navigate to your destination before time runs out!

Toggles
Leaderboard — View top scores for the current level
Profile — Sign in with Discord to save scores everywhere you play
ALL All — Turn motion steering and music on or off together
Joystick — Steer with gamepad left stick (appears when controller connected)
Controller Gyro — Lean controller to steer. Click a stick (L3 or R3) to recalibrate
Phone Motion — Tilt your phone to steer. Tap screen to recalibrate
Music — Toggle background music on/off
? Help — This help screen
Learn to Ride

Practice pedaling and steering with any input. The tutorial adapts to your active controller:

⌨️ Keyboard — Steer with A/D. Pedal with Left/Right arrows
🕹️ Joystick — Steer with left stick. Pedal with L1/R1 or L2/R2. Both together to brake
🎮 Controller Gyro — Lean to steer. Pedal with L1/R1 or L2/R2. Both together to brake. Click a stick (L3 or R3) to recalibrate
📲 Use your phone as a controller — Choose 📱 Phone as controller and scan the code: tilt to steer, tap the pedals to ride
📱 Phone Motion — Tilt to steer. Tap the left and right pedals to ride. Both together to brake. Tap center to recalibrate
Attributions

"Tandem bicycle" by Sameer.Rayeen — licensed under CC BY 4.0.

"Krampus Workshop" by Kevin MacLeod (incompetech.com) — licensed under CC BY 4.0.

Goose calls (goose-honk.mp3) by freesound_community via Pixabay — Pixabay Content License (attribution not required; credited with thanks).

Thanks to The Central Ohio GameDev Group — for inspiration, friendship, and fun.

Immersive audio design based on the taxonomy in “A Taxonomy for Immersive Audio Techniques in Video Game Sound Design” by Alex Sallade (sallade.5@osu.edu, Ph.D. dissertation, The Ohio State University, 2024).

SKIP TUTORIAL

START SKIP TUTORIAL

RESUME RESTART SETTINGS END RIDE
SAFETY AUTO SPEED ASSIST SAVE CLIP
Help
🎁
COLLECT
✅
← Stay on the road! →
Oops! Try again
Steering Feel
Stable Responsive
Let's RIDE!

PLAY AGAIN END RIDE TOGETHER
🎮

Settings

Graphics Quality
Some changes take effect on next restart
Gyro Steering
Controller gyro only — applies immediately
Show Riders
Canadian-goose riders + front camera — applies immediately
Show Solo
Solo rides show one goose (the captain) — applies immediately
Player 1's Goose
Your goose's body — other players pick theirs in the Wardrobe on the seat screen
Player 1's Outfit
What your goose wears — applies immediately
Player 1's Colours
Colour changes for the chosen outfit (saved per outfit) — applies immediately
FPS Display
Frame-rate readout, all modes — applies immediately
Crash Physics
Tumbling crashes, knocked pylons, goose strikes — next ride
Display Testing — overrides
Overrides on top of Graphics Quality, for testing a TV or slow screen. The page reloads to apply.
Render lines
Edge smoothing
Perf readout
Reset overrides