Game Design — Pour Decisions(Simulação de Areia × Roguelike Deckbuilder)
Leia primeiro docs/design/00_concepts.md e docs/research/02_competitor_patterns.md. Esta skill contém apenas as regras executáveis; os detalhes matemáticos e de simulação estão em references/:
references/scoring-math.md: fórmulas chips × mult, sobreposição aditiva/multiplicativa, modelos de curva alvo, números reais do Balatroreferences/balance-sim.md: arquitetura da simulação de equilíbrio Monte Carlo, níveis de bot, métricas, detecção de estratégias dominantes, formato de relatórioreferences/content-archetypes.md: rascunho de arquétipos de sinergia, cotas de raridade, exemplos de catalisadores
0. Cinco Princípios Supremos (Prioridade em Caso de Conflito)
- A simulação deve ser completamente determinística: mesma semente, mesma posição de despejo → mesmo resultado, pixel a pixel consistente. Sem determinismo, não há habilidade, nem simulação de equilíbrio, replay ou pré-visualização.
- Cada reação deve ser "visível e contável": a posição da reação mostra um número, o tipo tem cor e som fixos; o jogador deve ser capaz de dizer por que perdeu (Roguebook: jogadores que não entendem como perderam abandonam o jogo).
- Profundidade vem de combinações, não da quantidade de regras: poucas regras superficiais (engine química de BotW: elementos mudam materiais, elementos mudam elementos, materiais não mudam materiais), profundidade vem da interação de 100-200 objetos.
- Cada objeto tem um propósito único, não é apenas forte (Slay the Spire GDC 2019): efeitos tão fortes que distorcem a estratégia e são fáceis de obter devem ser limitados; combos fortes mas difíceis de obter e que exigem busca ativa podem existir — em jogos single-player, permite-se que o jogador ocasionalmente "quebre" o jogo.
- Dados direcionam, playtest define a sensação: simulações automáticas capturam problemas numéricos, playtests humanos julgam se é divertido (Noita: indicadores técnicos são fáceis de verificar, "é divertido?" só se descobre com playtest).
1. Ciclo Central e Estrutura de Rodada
Rodada (Round): Comprar mão (vials) → Escolher 1 frasco + Escolher posição/ângulo de despejo → Simular até estabilizar (settle) ou atingir limite de ticks
→ Pontuar reações do despejo atual → Acumular na pontuação da rodada → Usar todas as tentativas de despejo → Comparar com pontuação alvo
Entre rodadas: Loja (vial / catalyst / upgrade / modificação do béquer) → Próxima rodada
Uma run: 8 "experimentos" (Ante) × 3 rodadas (Pequeno/Grande/Boss) = 24 rodadas
- Pontuação baseada em settle, não em velocidade de reação em tempo real — evita o ponto fraco de equipes de IA (sensação) e torna os resultados previsíveis.
- Limite de settle: limite de ticks de simulação (ex: 600 ticks), no máximo 4-6 segundos na tela, pode acelerar ×2/×4; depois, forçar a conclusão.
- O estado do béquer é mantido entre despejos (dentro da mesma rodada); limpar ou não ao final da rodada é uma chave de design: manter = profundidade de planejamento de longo prazo, limpar = legibilidade. O protótipo começa limpando, depois testa a versão que mantém.
- Rodada de Boss = uma regra alterada (ex: "a água congela", "a gravidade inverte uma vez"), correspondente ao Boss Blind do Balatro; deve ser anunciada antes do início da rodada.
2. Design de Pontuação (chips × mult)
Fórmula (ordem de exibição = ordem de cálculo, o jogador pode acompanhar):
Pontuação do despejo atual = (Σ chips de reação + chips de bônus) × (mult base + Σ +mult) × Π(×mult)
- chips: pontuação base de cada reação (depende do tipo e quantidade de reação, use escala logarítmica ou por faixas para evitar "quanto mais despejar, melhor").
- +mult: vem de "mudanças" — número de tipos de reação diferentes ocorridos, profundidade da cadeia (reação desencadeando reação).
- ×mult: só vem de catalisadores raros ou condições especiais. ×mult é a moeda mais forte, distribua com moderação.
- Animação de conclusão sequencial: as reações mostram chips uma a uma → mult acumula → ×mult multiplica um por um (estilo Balatro tally), números grandes em câmera lenta com vibração.
Regras:
- Aditivo vs Multiplicativo: n objetos +mult crescem linearmente; k objetos ×1,5 crescem como 1,5^k. No início, foco em aditivo; depois, transição para multiplicativo — é um arco natural de build — deixe comuns darem aditivo e raros darem multiplicativo.
- O valor marginal de aditivos diminui (+4 mult em base 20 é +20%, em base 100 é apenas +4%), isso torna "quando migrar para multiplicativo" uma decisão do jogador. Bom, mantenha.
- Pontuação > 1e6 use abreviação de milhares, > 1e11 use notação científica; internamente use
double, Endless use espaço logarítmico ou BigNumber. - Fórmula detalhada, exemplos numéricos:
references/scoring-math.md.
3. Curva de Pontuação Alvo
- Balatro white stake (ante 1–8): 300 / 800 / 2.000 / 5.000 / 11.000 / 20.000 / 35.000 / 50.000; Pequeno/Grande/Boss = ×1 / ×1,5 / ×2. A taxa de crescimento por ante diminui gradualmente de ×2,7 para ×1,4 — porque o poder do jogador cresce rápido no início e desacelera no final.
- Abordagem para este jogo: não defina a curva no achismo. Use o bot "competente" (greedy) da simulação de equilíbrio para rodar 1.000+ runs, pegue a mediana de pontuação de cada ante M(a), alvo T(a) = M(a) × k(a), onde k vai de 0,5 (folgado) no início para 0,9 (apertado) no final.
- Meta: no white stake, bot competente tem 30-50% de vitória, bot forte 80-95%, bot aleatório < 5%. A primeira vitória humana ocorre entre a 3ª e 8ª run.
- Endless: após ante 9, crescimento superexponencial (Balatro ~ x^(x²)), para que o build eventualmente quebre, dando pontos de comparação "até qual rodada eu cheguei".
4. Design de Materiais (vial) e Catalisadores (catalyst)
- Materiais são "cartas": cada frasco = um material + quantidade (pixels) + possíveis modificadores (temperatura, pureza, encantamento).
- Catalisadores são "coringas/relíquias": passivos, permanentes, que alteram regras químicas ou de pontuação. Slots limitados (ex: 5) forçam o jogador a fazer escolhas.
- Classificação de papéis dos objetos (cada novo objeto deve ter um papel principal):
- Enabler (Ativador): permite que um arquétipo funcione ("óleo produz chamas extras em fogo")
- Payoff (Recompensa): dá pontos quando o arquétipo é ativado ("cada reação de queima +3 mult")
- Bridge (Ponte): conecta dois arquétipos ("vapor também conta como reação de queima") — evita builds de uma única linha
- Economy (Economia): dinheiro, descontos, slots extras na loja
- Scaling (Escalável): fica mais forte com o uso ("ao final de cada rodada, se houver ≥3 tipos de reação, este catalisador ganha +1 mult permanente")
- Utility/Consistency (Utilidade/Consistência): manipulação de mão, redraw, pré-visualização, limpeza de béquer
- build-defining vs filler: slots raros são principalmente para build-defining (alteram regras, fazem o jogador "mudar de direção"); comuns são filler (números, consistência), mas cada filler ainda deve ter um "quando escolhê-lo" claro.
- Raridade (ponto de partida, ajustado depois pela simulação): Common 70% / Uncommon 25% / Rare 5% (pesos do Balatro); Legendary não aparece na loja, só em eventos especiais.
- Buff o enabler, não o motor já completo (Luck be a Landlord 1.1): arquétipos fracos precisam primeiro de "peças de entrada" para que o jogador invista cedo; e forneça "portas de escape" — objetos que permitem mudar de direção quando o arquétipo falha.
- Não force buffs no início, isso causa visão de túnel (tunnel vision).
- Tabela de arquétipos e cotas de raridade:
references/content-archetypes.md.
5. Economia da Loja e Reroll
Valores iniciais (base do Balatro, ajustados depois pela simulação):
- Renda por rodada: fixa de $3–5 por passar de fase + tentativas de despejo restantes × $1 + juros ($1 a cada $5 retidos, limite de $5, não verificado se é o valor exato do Balatro). Juros criam tensão "guardar vs gastar", mantenha.
- Faixa de preço: Common $2–5, Uncommon $5–8, Rare $8–10; preço de venda = preço de compra ÷ 2 arredondado para baixo, mínimo $1.
- Reroll: preço inicial $5, +$1 a cada reroll, reseta ao entrar em uma nova loja. (Regra do Balatro)
- Slots da loja: 2 objetos + 1-2 pacotes de "material" (escolha 1 de 3) + 1 upgrade (tipo voucher, $10, altera regra permanentemente).
- Verificação de saúde econômica (saída da simulação):
- O bot competente compra em média 1-2 itens por loja; 3 lojas consecutivas sem comprar nada = economia muito apertada.
- A contribuição de objetos econômicos para a taxa de vitória não deve ser maior que a de objetos de recompensa — senão "farmar dinheiro primeiro" se torna a única solução.
- Distribuição de número de rerolls: mediana de 1-2; se a melhor estratégia do bot for rerollar ≥5 vezes por loja, significa que reroll é muito barato ou os slots são muito ruins.
6. Duração da Run e Ritmo (Meta: 30-60 minutos)
- Orçamento: 24 rodadas × (3-4 tentativas de despejo × 15-25 segundos + loja 30-60 segundos) ≈ 35-50 minutos. Após medição, ajuste o número de tentativas de despejo, não a velocidade de settle.
- A cada 3 rodadas (um ante), deve haver algo "novo": regra de Boss, desbloqueio de nova raridade na loja, aparecimento de novo material.
- As primeiras 3 rodadas devem ser concluídas em até 6 minutos: a janela para um novato decidir se o jogo é divertido é muito curta (Peglin Demo teve mediana de 67 minutos de jogo como referência geral para Demo).
- Falhe cedo: runs perdidas devem terminar no ante 2-4, não no ante 7, para evitar "jogar 40 minutos para descobrir que o build não funciona".
7. Níveis de Dificuldade (Stakes / Ascension)
- 8-10 níveis, acumulativos, cada nível adiciona apenas uma regra (Slay the Spire Ascension 20, Balatro 8 Stakes são acumulativos).
- Candidatos para este jogo (do mais fácil ao mais difícil): alvo ×1,2 → despejos restantes não dão dinheiro → loja com um slot a menos → béquer começa com pixels contaminados → quantidade de material -10% → chance de catalisador raro reduzida à metade → duas regras de Boss → curva de crescimento do alvo muda para nível Purple.
- Níveis de dificuldade também são ferramentas de dados: as taxas de vitória em diferentes níveis fornecem informações de equilíbrio mais granulares (Slay the Spire GDC).
- Desbloqueio de cada nível: vencer uma vez no nível anterior; exibido no menu, dando ao jogador um objetivo de longo prazo.
8. Meta-progressão (Não Pay-to-Win)
- Progressão permanente é principalmente desbloqueio lateral: novos materiais, novos catalisadores, novos formatos de béquer, novos baralhos iniciais, enciclopédia. Sem bônus numéricos permanentes (ex: "todos os fogos +5%").
- A ordem de desbloqueio é projetada como tutorial: comece com apenas 2-3 arquétipos abertos, depois de algumas runs, desbloqueie arquétipos mais complexos (Roguebook: atrasa mecanismos complexos com a progressão).
- Cada run (mesmo se perdida) deve desbloquear ou avançar algo (Ball x Pit "respeita o tempo do jogador": quase toda run tem um novo blueprint).
- Ofereça uma opção "desbloquear tudo" para jogadores veteranos/streamers (Balatro também adicionou), com a consequência de que esse save não conta conquistas.
- Qualquer DLC pago só pode ser conteúdo (novos pacotes de material), não poder.
9. Faça a Simulação Caótica Parecer Habilidade
- Determinismo: timestep fixo, inteiros ou ponto fixo, ordem de atualização fixa (de baixo para cima; direção de varredura esquerda-direita usando paridade do tick, não RNG), todo aleatório vindo de PRNG derivado da semente da run. Execute a mesma entrada duas vezes e compare o hash, inclua em testes de CI.
- Pré-visualização: antes de despejar, mostre a trajetória do ponto de impacto e ícones de "quais materiais serão tocados"; como é determinístico, pode simular os N ticks iniciais em uma cópia em segundo plano para "ícones de reação previstos". A pré-visualização completa da pontuação é reservada para catalisadores/itens ("tubo de ensaio") como recurso, não forneça de graça.
- Vocabulário de reações fixo e pequeno: cada reação tem uma cor + ícone + tom de som; reações do mesmo tipo se agrupam em um número pop-up ("Queima ×37 → +185"), não pule números por pixel.
- Linhas de causalidade: reações em cadeia usam linhas finas ou flashes para conectar "quem desencadeou quem", a profundidade da cadeia é exibida em números grandes (×2, ×3…), isso também é um ponto alto para edição de vídeos.
- Controle de variância: diferenças na posição de despejo devem ter impacto significativo na pontuação, mas resultados para a mesma posição devem ser estáveis. Meça a "diferença de habilidade" = pontuação do bot na melhor posição ÷ pontuação do bot em posição aleatória, alvo ≥ 2; < 1,3 significa que posicionamento não importa.
- Simule apenas o que o jogador verá: Noita descobriu que efeitos sutis como crescimento de musgo e derretimento lento não são notados; invista recursos em reações que mudam a pontuação ou a tela.
- Quando a simulação atrapalha a jogabilidade, a jogabilidade tem prioridade (Noita): pode trapacear (ex: reações só contam nos X ticks após o despejo, limite de número de partículas).
10. FTUE / Tutorial (Jogos Sistêmicos)
- A primeira run usa semente fixa e mão fixa: 1º despejo = areia (aprender a despejar), 2º despejo = água (aprender reação: areia+água → lama), 3º despejo = fogo encontra óleo (aprender cadeia e mult). Cada despejo ensina uma coisa.
- Ensine com o béquer, não com texto: menos texto também reduz custos de tradução para 10+ idiomas e o ônus de exposição de texto por IA.
- "Enciclopédia de reações" (codex): a primeira ocorrência de cada reação é automaticamente registrada e brevemente destacada; o jogador descobrir por conta própria = diversão (Roguebook: descobrir sinergias é a diversão central).
- Cada tooltip de vial/catalisador tem uma linha de ícones indicando "reage com X", sem texto.
- Catalisadores e loja só abrem a partir da 2ª rodada; Boss abre no final do ante 1.
- A primeira run pode ser vencida, mas a progressão não depende de vencer a primeira run.
11. Métodos e Métricas de Playtest
- Método: teste cego (sem explicação) → primeiros 15 minutos think-aloud → depois observação silenciosa → ao final, 3 perguntas: "Como você perdeu?" "Melhor momento?" "O que você não entendeu?" Gravar em vídeo.
- Para playtests do HSU: cada vez, valide apenas 1-2 hipóteses, escritas previamente em
docs/design/playtests/YYYY-MM-DD.md. - Métricas obrigatórias (telemetria salva em JSON local, ativada na versão de playtest):
- Tempo para primeira reação, tempo para entender ×mult (ver se busca ativamente multiplicador)
- Distribuição de ante de morte por run, duração da run, tempo por rodada
- Proporção de quem inicia uma segunda run voluntariamente (a métrica mais importante)
- Taxa de acerto na resposta "Por que perdeu?" (indicador de legibilidade, alvo ≥ 70%)
- Número de vezes que um objeto foi visto no tooltip vs comprado (não entende vs não quer)
- Formato de eventos:
run_start / pour{vial,x,angle,reactions[],score} / shop{offered[],bought[],rerolls} / run_end{ante,cause,build[]}. - Cuidado com viés de "super playtester": dados dos mais experientes não representam jogadores comuns (Slay the Spire GDC).
12. Simulação de Equilíbrio (Resumo; detalhes em references/balance-sim.md)
- A simulação de equilíbrio roda em
sim/(Python ou C# headless com a mesma tabela de regras), dados de regras (materiais, reações, catalisadores) usam o mesmo JSON/CSV, compartilhado entre Unity e sim, evitando divergência. - Níveis de Bot: Random / Greedy (a cada passo, escolhe a ação com maior pontuação esperada) / Lookahead (MCTS ou beam search para escolher despejo + compra).
- Cada mudança de valor: execute pelo menos 1.000 runs × cada bot; relatório salvo em
docs/design/balance/YYYY-MM-DD_<topic>.md. - Alertas de estratégia dominante:
- Um único objeto tem "taxa de vitória quando pego − taxa de vitória base" > +10 pontos percentuais
- Um único arquétipo responde por > 40% das vitórias (alvo: top 5 arquétipos entre 10-30%)
- Um objeto tem taxa de aquisição < 3% no bot greedy → carta morta
- Bot forte tem taxa de vitória > 98% no white stake → geralmente muito fácil
- Estratégias estranhas encontradas pela simulação = sinal, primeiro verifique se é bug (pesquisa Google: comportamentos estranhos de agentes frequentemente revelam erros reais de ajuste de parâmetros).
- Ao corrigir, primeiro ajuste números (custo, raridade, valor do bônus), depois as condições, e por último refaça (LocalThunk: a maioria das correções são numéricas).
13. Lista de Verificação para Novos Vials / Catalisadores
Antes de submeter qualquer novo objeto, marque cada item, escreva na tabela de dados do objeto como observação:
- É possível descrever em uma frase seu propósito e "quando escolhê-lo"
- Marcou o papel principal (Enabler/Payoff/Bridge/Economy/Scaling/Utility) e o arquétipo a que pertence
- Efeito pode ser expresso em ≤ 15 palavras em inglês ou 1 linha de ícones; não requer nova palavra-chave, ou a nova palavra-chave será compartilhada por ≥ 3 objetos
- O efeito é "visível": ao ser ativado, há feedback visual na tela (pop-up de texto/flash/som)
- Determinístico: não introduz aleatoriedade não seed; não depende de frame rate
- Nível de pontuação correto: comum não dá ×mult; quem dá ×mult é raro+ ou tem condição difícil de obter
- Simulou com os 3 objetos mais fortes atuais e não houve explosão de pontuação > 10× (ou a explosão foi intencional e difícil de obter)
- Não torna nenhum objeto existente inútil (cannibalize) — verifique a mudança na taxa de aquisição de outros objetos do mesmo arquétipo
- Caso o arquétipo não se concretize, o objeto ainda serve como filler ou pode ser vendido
- Preço e raridade consistentes com outros objetos do mesmo papel
- Texto já está na tabela de localização (key), com comprimento que, mesmo após expansão de +35% em alemão/russo, ainda cabe
- Performance: no pior caso de quantidade de pixels, ainda mantém o FPS alvo
- Executou simulação de 1.000 runs: taxa de aquisição 5-40%, diferença de taxa de vitória dentro de ±10pp (a menos que seja um rare build-defining intencional)
Fontes
- Slay the Spire balanceamento guiado por dados (GDC 2019): https://www.gdcvault.com/play/1025731 ・ https://glasp.co/youtube/7rqfbvnO_H0 ・ https://podwise.ai/episodes/1459444
- Entrevista de design do Balatro: https://rogueliker.com/balatro-interview/ ・ https://toucharcade.com/2024/03/18/balatro-interview-mobile-port-localthunk-dlc-plans-updates-new-jokers-demo-feedback/
- Números do Balatro (blinds, loja): https://balatrowiki.org/w/Blinds_and_Antes ・ https://balatrowiki.org/w/Shop
- Notas de equilíbrio do Luck be a Landlord 1.1: https://blog.trampolinetales.com/the-big-buffs-update-preview/
- Ball x Pit "respeita o tempo do jogador": https://automaton-media.com/articles/newsjp/ball-pit-20251217-375231/
- Dados do Peglin: https://howtomarketagame.com/2022/05/04/how-peglin-made-1049413-in-1-week/
- Design de construção do Roguebook: https://www.gamedeveloper.com/design/tackling-deckbuilding-design-in-abrakam-s-roguebook
- Design e tecnologia de areia do Noita: https://www.gamedeveloper.com/game-platforms/road-to-the-igf-nolla-games-i-noita-i- ・ https://80.lv/articles/noita-a-game-based-on-falling-sand-simulation/
- Engine química do BotW (GDC 2017): https://www.thumbsticks.com/gdc-17-breath-of-the-wild-science-lies
- Teste automático de equilíbrio com agentes de IA (Google): https://ar5iv.arxiv.org/html/1811.06962