Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Ban-pick: weighted tuple pool policy per gamemode (Botlatro generation parity)

Abierto
#13 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
lua
Área
api

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: decks table minus per-queue banned_decks minus 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

  1. 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, and config.decorate_tile(card, item) renders stake stickers — no engine changes needed.
  2. Policy comes from the consumer, per gamemode — each mod passes its own policy into BP.start via build_pool, exactly like schedule/decorate_tile today. PvP and Speedrun configure independently.
  3. 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

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Balatro-Multiplayer/BalatroMultiplayerAPI

Todos los issues de Balatro-Multiplayer/BalatroMultiplayerAPI

Issues similares

Más issues de Lua

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.