Real matchmaking over free PeerJS signaling (public cloud). A ranked match starts ONLY when real players connect - never bots, never fake counts. If nobody is searching, it keeps waiting honestly.
Custom rooms use direct P2P: both players enter the same room code. If no opponent is in the room, 1v1 runs as honest practice until they join.
Single-player training against a clearly labeled simulated bot. No ranking, no real opponents.