Pular para o conteúdo
Jogos Digitais
Nesta página
  1. Objetivos de aprendizagem
  2. Pré-requisitos
  3. Materiais
  4. Conceitos
  5. Exemplo 1: a Trilha do Mandacaru é justa?
  6. Exemplo 2: toda estrela é alcançável?
  7. Tutorial passo a passo
  8. Imagens
  9. Indicação da interface
  10. Código completo
  11. Explicação do código
  12. Resultado esperado
  13. Problemas comuns
  14. Exercício guiado
  15. Desafio individual
  16. Desafio avançado (opcional)
  17. Critérios de avaliação
  18. Checklist de conclusão
  19. Extensão

Módulo 2 · Aula 2.4 · Balanceamento e curva de dificuldade

Carga horáriaDificuldadeFerramentaCompetências
8 h/a⭐⭐⭐papel, dados, calculadora, ScratchC1, C3, C5

Objetivos de aprendizagem

  1. Medir se um jogo é justo coletando dados de partidas.
  2. Ler uma tabela de resultados de simulação e tirar conclusões.
  3. Calcular se um desafio é possível (alcance × tempo).
  4. Transformar números fixos do código em variáveis de ajuste.
  5. Desenhar uma curva de dificuldade.

Pré-requisitos

Aulas 2.1 e 2.3; Módulo 1 (variáveis e operadores).

Materiais

Tabuleiro da Trilha do Mandacaru, 2 dados, peões, calculadora, computador com o Caça-Estrelas.

Conceitos

  • Balancear: ajustar números e regras até o jogo ficar justo e com a dificuldade certa.
  • Justo (entre jogadores): cada um tem a mesma chance de ganhar no começo. Com 3 jogadores, 33,3% para cada.
  • Vantagem do primeiro jogador: em jogos de corrida por turnos, quem começa costuma jogar uma vez a mais.
  • Amostra: quantas partidas foram observadas. Com 10 partidas, a sorte engana muito. Com 100 mil (simulação no computador), o resultado é confiável.
  • Simulação: um programa que joga milhares de partidas sozinho seguindo as regras. Não substitui o teste com pessoas (não mede diversão), mas mede justiça e duração muito bem.
  • Variável de ajuste: número do jogo guardado em uma variável com nome claro (velocidade_estrela), em um só lugar, para mudar sem caçar números pelo código.
  • Curva de dificuldade: como a dificuldade sobe ao longo do jogo. Boa curva: começa fácil, sobe aos poucos, tem pequenos descansos.

Exemplo 1: a Trilha do Mandacaru é justa?

Resultados reais de scripts/simular_trilha.py (100 mil partidas por linha):

CenárioJogador 1Jogador 2Jogador 3Rodadas
A. 1 dado42,0%32,4%25,5%7,7
C. 2 dados, todos escolhem bem48,7%30,5%20,8%6,0
D. só o jogador 2 escolhe bem17,8%75,2%7,0%6,7
E. C + 3º começa na casa 148,1%30,7%21,3%6,0
F. C + começam nas casas 0, 2 e 435,0%31,1%33,9%5,7
G. C + completar a rodada33,5%33,4%33,1%6,1

O histórico completo, com as conclusões, está em ../projetos/trilha-do-mandacaru/README.md.

Exemplo 2: toda estrela é alcançável?

No Caça-Estrelas, a estrela cai 340 pixels (de y = 170 a y = -170). O gato anda 10 pixels por quadro, e o Scratch roda 30 quadros por segundo.

  • Quadros até a estrela cair = 340 ÷ velocidade da estrela.
  • Alcance do gato = 10 × quadros.
  • O palco tem 480 de largura; na pior situação, o gato precisa atravessar cerca de 440 pixels.
Velocidade da estrelaQuadros até cairSegundosAlcance do gatoEstrelas possíveis de pegar*
31133,81.133100%
5 (original)682,3680100%
8431,4425100%
10341,134099%
12280,928394%
15230,822786%
20170,617075%

*Calculado sorteando 200 mil posições de gato e estrela, com 50 pixels de margem para o encosto. É o máximo teórico, com reação perfeita; uma pessoa real pega menos, porque leva uns 0,2 a 0,3 segundo só para reagir.

Conclusão: a partir de velocidade 12, algumas estrelas ficam impossíveis mesmo para quem joga perfeitamente. Se o jogo acelera, o limite deve ficar em torno de 10, ou o gato precisa ficar mais rápido também.

Tutorial passo a passo

Parte A. Coletar dados à mão (2 h)

  1. Em grupos de 3, joguem a Trilha versão 1 (1 dado) 10 vezes, sempre na mesma ordem de jogadores. Anotem quem venceu e quantas rodadas durou cada partida.
  2. Somem a turma inteira no quadro (ex.: 8 grupos × 10 = 80 partidas). Calculem a porcentagem de vitórias de cada posição.
  3. Comparem com a linha A da tabela. Com mais partidas, o resultado da turma fica mais perto da simulação.

Parte B. Ler a simulação (1 h)

  1. Respondam em dupla, olhando a tabela do Exemplo 1:
    • O que aconteceu com a vantagem do primeiro jogador quando todos passaram a escolher bem (C)?
    • Por que E quase não mudou nada, se "dar uma casa a mais" parecia justo?
    • O que o cenário D mostra sobre decidir bem?
    • Por que G resolve o problema? (Dica: quantas vezes cada um jogou?)

Parte C. Variáveis de ajuste no Caça-Estrelas (3 h)

  1. Abra o seu Caça-Estrelas e salve como nova versão.
  2. Crie duas variáveis para todos os atores: velocidade_estrela e velocidade_gato. Desmarque as caixinhas para não aparecerem no palco.
  3. No Gato, logo depois de "mude [vidas] para (3)", acrescente "mude [velocidade_estrela] para (5)" e "mude [velocidade_gato] para (10)".
  4. No Gato, troque o 10 de "adicione (10) a x" pela bolinha velocidade_gato. No da esquerda, use "(0) - (velocidade_gato)".
  5. Na Estrela, troque "adicione (-5) a y" por "adicione ((0) - (velocidade_estrela)) a y".
  6. Teste as velocidades 5, 10 e 15 só mudando o valor no Gato. Para cada uma, jogue 2 partidas e anote os pontos.
  7. Compare com a tabela do Exemplo 2: a partir de que velocidade você começou a perder estrelas "impossíveis"?

Parte D. Curva de dificuldade (2 h)

  1. Faça a estrela acelerar: na Estrela, quando pega a estrela, acrescente "adicione (0.5) a [velocidade_estrela]".
  2. Proteja o limite que a tabela mostrou: depois disso, "se <(velocidade_estrela) > (10)> então mude [velocidade_estrela] para (10)".
  3. Desenhe no papel a curva: eixo x = pontos, eixo y = velocidade. Ela sobe de 5 a 10 e fica plana. Onde o jogo fica mais tenso?

Imagens

Tabelas acima (dados reais de simulação e cálculo). Tabuleiro: ../projetos/trilha-do-mandacaru/tabuleiro.png.

Indicação da interface

Variáveis: categoria Variáveis > Criar uma Variável. Operador "( ) - ( )": categoria Operadores.

Código completo

Alterações no Caça-Estrelas:

Ator Gato (começo do roteiro da bandeira):
quando ⚑ for clicado
vá para x: (0) y: (-130)
mude [pontos] para (0)
mude [vidas] para (3)
mude [velocidade_estrela] para (5)
mude [velocidade_gato] para (10)
repita até que <(vidas) < (1)>
    se <tecla [seta para direita] pressionada?> então
        adicione (velocidade_gato) a x
    fim
    se <tecla [seta para esquerda] pressionada?> então
        adicione ((0) - (velocidade_gato)) a x
    fim
fim
...

Ator Estrela (dentro do "sempre"):
adicione ((0) - (velocidade_estrela)) a y
se <tocando em [Gato]?> então
    adicione (1) a [pontos]
    adicione (0.5) a [velocidade_estrela]
    se <(velocidade_estrela) > (10)> então
        mude [velocidade_estrela] para (10)
    fim
    toque o som [Pop]
    vá para x: (número aleatório entre (-220) e (220)) y: (170)
fim
...

Explicação do código

  • Todos os números de equilíbrio ficam no começo do roteiro do Gato. Para balancear, mexe-se em um só lugar.
  • O gato inicia as variáveis porque, como vimos no Módulo 0, a estrela não deve confiar em quem roda primeiro. Na primeira volta, a estrela pode ler a velocidade da partida anterior por um instante; como a velocidade só muda o tamanho do passo, isso não quebra o jogo.
  • 0,5 por estrela: depois de 10 estrelas a velocidade chega a 10 e para de subir.

Resultado esperado

Tabela de vitórias da turma comparada com a simulação; respostas da leitura da tabela; Caça-Estrelas com variáveis de ajuste, aceleração e limite; curva desenhada.

Problemas comuns

SintomaCausaSolução
A estrela sobe em vez de cairusou "adicione (velocidade_estrela) a y" sem o "0 -"usar "(0) - (velocidade_estrela)"
A estrela não se mexe na primeira partidaa variável começou em 0"mude velocidade_estrela para 5" no Gato
A velocidade não volta ao normal na nova partidafalta "mude velocidade_estrela para 5" na bandeiraconferir o Gato
Resultados da turma muito diferentes da simulaçãopoucas partidasnormal: com 80 partidas a variação é grande

Exercício guiado

Com a tabela do Exemplo 2: se o gato andar 15 por quadro, qual o alcance com a estrela na velocidade 15? Resposta: 15 × (340 ÷ 15) = 340, igual ao da velocidade 10 com o gato a 10. Por quê? (Quando as duas velocidades sobem juntas, o alcance não muda.)

Desafio individual

Proponha outra forma de tornar a Trilha justa (diferente de G) e explique por que deve funcionar. Bônus: peça ao professor para incluir o seu cenário no simulador e veja o resultado.

Desafio avançado (opcional)

Abra scripts/simular_trilha.py com o professor, acrescente um cenário na lista CENARIOS e rode. Leia o código: onde ficam as regras de seca e açude?

Critérios de avaliação

  • Dados da turma coletados e comparados.
  • Respostas da leitura da tabela com justificativa.
  • Caça-Estrelas balanceável funcionando.

Checklist de conclusão

Extensão

Escolha um jogo de celular que você joga e descreva a curva de dificuldade dele: onde ele fica difícil de repente? Onde dá um "descanso"?