Ban-pick: weighted tuple pool policy per gamemode (Botlatro generation parity)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
Línea de trabajo
Empieza por localizar el punto de entrada BP.start del motor de ban-pick, su pool predeterminado actual y la integración de build_pool/decorate_tile. Usa src/utils/TupleBans.ts como referencia de comportamiento para la generación de tuplas ponderadas y las restricciones. La tarea estará terminada cuando las políticas de los consumers funcionen por mod y gamemode, con una configuración distribuible por el servidor y valores predeterminados del cliente tal como se describe.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
The ban-pick engine's default pool is a uniform random sample of every installed deck Back — including modded decks — with no exclusions, no weights, and no stake dimension. Botlatro (the Discord matchmaking bot) already runs real pool policy for its tuple-ban queues; this issue is about giving consumer mods the same power in-game, per mod and per gamemode.
Reference: what Botlatro's generation enforces (src/utils/TupleBans.ts)
- Allowed stakes: a fixed subset (White/Green/Black/Purple/Gold — 5 of 8).
- Allowed decks:
deckstable minus per-queuebanned_decksminus match-step bans. - Weighted roulette-wheel selection via per-queue
deck_mults/stake_mults. - Occurrence caps in the generated list (9 tuples): max 4 of any stake (
< (tupleCount-1)/2), max 3 of any deck (< (tupleCount-3)/2), no duplicate (deck, stake) pairs. - White-stake guarantee: if the final slot is reached with zero whites, it is forced white — every list contains at least one.
- All of it is data-driven (DB tables) so moderators tune weights/bans live, without a deploy.
Proposal
- A reusable weighted-tuple pool helper in the API (opt-in, e.g.
MPAPI.BanPick.build_weighted_pool(policy)), implementing the constraints above and returning{ key, stake }items. The engine already supports everything downstream of it: pool items may be{ key, stake, ... }tables, andconfig.decorate_tile(card, item)renders stake stickers — no engine changes needed. - Policy comes from the consumer, per gamemode — each mod passes its own policy into
BP.startviabuild_pool, exactly likeschedule/decorate_tiletoday. PvP and Speedrun configure independently. - Policy data should be server-deliverable (gamemode config in the match/lobby payload, keyed by
modId + gameMode) so allowed lists/weights can be tuned like the bot's DB-backed mults — without shipping mod updates. Client-side defaults as fallback.
Notes
- Sampling differs today: the in-game default samples decks without replacement (each deck once); tuple pools intentionally allow one deck at multiple stakes. Both remain valid choices per gamemode — the helper covers the tuple case, the current default stays for plain drafts.
- Related: the low-rated-player pool veto (see linked issue) depends on this — its mercy rule ("force white stakes into the reroll") only has meaning against a weighted tuple pool.
- Lenguaje dominante
- Lua
- Estrellas
- 7
- Forks
- 3
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Balatro-Multiplayer/BalatroMultiplayerAPI
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 62/100
Todos los issues de Balatro-Multiplayer/BalatroMultiplayerAPI
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
openSUSE/python-rpm-macros#219 ·
-
bug mini.bracketed
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
accessibility bug typst
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
quarto-dev/quarto-cli#14947 · 2 comentarios ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
HenrikBengtsson/CBI-software#134 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
secondlife/slua#96 ·