Balatro-Multiplayer / Balatro-Multiplayer/BalatroMultiplayer
Match accept / ready-check before the ban phase
- Dominant language
- Lua
- Stars
- 335
- Forks
- 106
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 1
Description
**Status: needs triage** (feature / epic — client + server)
## Summary
When matchmaking finds a match, the client auto-joins the lobby immediately (`match_found` → auto-join in the matchmaking dispatch, BalatroMultiplayerAPI `api/matchmaking/dispatch.lua`) and drops straight into the ban phase. There is no confirmation step, so a player who queued and walked away is silently committed, and neither player can decline.
## Proposal
On match found, present both players an accept prompt with a countdown instead of auto-joining. Both accept → proceed to the ban phase. One declines, or the timer expires → the match is cancelled. Server-authoritative (the server owns matchmaking and would hold the pending-accept state).
## Open questions
- **Timer length.** Baseline ~30s. Idea: scale the accept window with time spent in queue (a 30-minute queue earns a longer window than a 30-second one).
- **What happens to the player(s) who accepted** when the other declines/times out — auto-requeue (ideally at the front) vs back to menu. Leaning auto-requeue.
- **Penalty for declining/timing out** — TBD. Accept happens *before* bans, so no matchup is visible to dodge; the only thing being caught is AFK/timeout. Possibly a light escalating cooldown on repeated timeouts only.
- Either player can also cancel out of this state.
Leaving *after* accepting is tracked separately: Balatro-Multiplayer/BalatroMultiplayerAPI-Server#38
Contributor guide
Research direction
Start with the matchmaking dispatch in api/matchmaking/dispatch.lua and review how match_found currently auto-joins the lobby. Then inspect BalatroMultiplayerAPI-Server#38 for related post-acceptance behavior. The work is done when the server-authoritative accept state, countdown, cancellation, and requeue or menu outcomes are defined and implemented for both client and server.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- lua
- Domain
- game-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100