No game server reachable, so this lobby is simulated. To play for real: run npm start on the host and open the served URL (behind a proxy? see DEPLOY.md — WebSocket upgrades required).
🏆 LEADERBOARDrated matches only · sign in to compete
#
player
rating
W–L
matches
ⓘ HOW TO PLAYhost it yourself: npm start
🌐 Battle someone
Register below right and click a name in the PLAYERS tab to challenge them.
You can challenge players rated within ±30% of your own rating (fair-play band).
Or play instantly as a guest: press PLAY VS.
Live battles appear in the BATTLES tab — click one to spectate.
⚔ Arena rules
Clears become garbage on your opponent's field — instantly.
Double 1 · Triple 2 · Quad 4 · T-Spins 2/4/6 · B2B +1 · combos to +5 · Perfect Clear 10.
Incoming garbage shows a 0.6s warning before it lands — your clears in that window
cancel it (countering). Garbage holes move with every attack. Top out — you're done.
🌀 Techniques
T-Spin — rotate a T into a slot its corners point into: Mini 1 · Single 2 · Double 4 · Triple 6
(Mini counts only without a wall kick). Back-to-Back — chained Quads/T-Spins earn +1 each.
Combos — consecutive clears on back-to-back pieces add up to +5.
Perfect Clear — empty field after a clear: 10 lines.
Hold (C/Shift) banks a piece — once per piece. Hard drop locks instantly;
on the ground you have 0.5s and up to 15 move/rotate resets before lock.
💬 Lobby & chat
Right-click a name to address them, middle-click for a private
"only to" message. The dot before each nickname shows live status:
free · away ·
in battle. Sort the roster by rating / name / status.
Click your own row to toggle away (⊘) — away players can't be challenged.
/w name msg
private message
/to name msg
address publicly
/ignore name
hide their messages
/unignore name
undo · /ignores — list
/away
toggle away · /help — all commands
👁 Spectating
Watch any live battle: open the BATTLES tab, or click a #-marked
(playing) name in the roster. Both boards stream live. Players see the
spectator count — and your nickname — in their HUD while you watch.
🏆 Ratings
Start at 100. Winner gains 5 × (loser ÷ winner), loser drops
4 × (loser ÷ winner) — beat stronger players to climb faster.
Quitting mid-match forfeits. Classic arena formula. Idle accounts (14+ days
without a match) drift 2 points/day back toward 100.
⌨ Controls
← →
move
↓
soft drop
SPACE
hard drop
↑ / X
rotate CW
Z
rotate CCW
C / SHIFT
hold
M
mute
P
pause (solo)
❓ FAQ
Why can't I invite someone? They're outside your ±30% band, away (⊘),
or already battling. How do I re-watch my match? After the result, press
REWATCH — or SHARE to export a video (with sound and combo popups).
Are the lobby bots real players? They're house bots — they chat, accept
challenges, and always rematch. Lost rating without playing? Inactivity decay,
2/day after 14 idle days. My own server?npm start — see README.