Balatro-Multiplayer / Balatro-Multiplayer/BalatroMultiplayer

Match accept / ready-check before the ban phase

Open
#493 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.