# Controle as variáveis ​​que tornam um teste de jogo repetível

> Controle valores aleatórios, tempo e condições iniciais para que os testes do jogo produzam resultados comparáveis ​​e as falhas sejam mais fáceis de diagnosticar.

- URL: https://oneshotgems.ai/pt-BR/topics/deterministic-game-tests
- Categoria: Para desenvolvedores de jogos
- Tipo: Guia
- Atualizado: 5 de outubro de 2026

Um teste que falha apenas quando um inimigo aparece ao lado do jogador é difícil de usar como sinal. Teste determinístico significa controlar fontes importantes de variação para que a mesma configuração produza o mesmo caminho através das regras. O objetivo não é remover a aleatoriedade do jogo real; é tornar as condições iniciais de um teste previsíveis o suficiente para revelar se um código ou prompt alterou o comportamento.

## Identifique entradas não controladas

Liste tudo o que pode variar entre as execuções: posições inimigas aleatórias, tempo decorrido, tempo de quadro de animação, pontuação mais alta salva, dimensões da janela de visualização e sequência de entradas do usuário. Decida quais variáveis ​​são importantes para o comportamento em teste. Para uma verificação de colisão, use uma localização inimiga fixa e um início de jogador conhecido. Para uma verificação do padrão de desova, controle a sequência aleatória, mas teste várias sementes selecionadas para que uma configuração não esconda um padrão ruim.

## Controle o tempo sem congelar o comportamento do jogador

Para uma regra de cronômetro, forneça um horário de início explícito e verifique o que acontece em um limite significativo, como três segundos restantes e exatamente zero. Para movimento baseado em quadros, compare a mesma duração decorrida em vez do mesmo número de quadros renderizados. O MDN observa que a frequência de retorno de chamada requestAnimationFrame geralmente segue a taxa de atualização da tela e os retornos de chamada são pausados ​​na maioria dos navegadores para guias ocultas; o código de animação deve, portanto, usar seu carimbo de data/hora ou outra fonte de tempo ao calcular o progresso.

## Perguntas

**O teste determinístico significa a remoção da jogabilidade aleatória?** Não. Significa controlar a aleatoriedade em testes selecionados para comparar comportamentos. Você ainda pode executar testes exploratórios separados em sementes variadas para inspecionar o alcance do jogo.

**Por que um teste pode passar localmente e falhar na execução de um navegador?** Temporização, janela de visualização, estado salvo ou sequência aleatória diferentes podem alterar a configuração. Registre essas condições e controle aquelas relevantes para o comportamento que está sendo verificado.

## Siga sua curiosidade

- [Um loop de teste de regressão para jogos pequenos](https://oneshotgems.ai/pt-BR/topics/game-regression-testing): Proteja um loop de jogo funcional após as revisões com uma pequena lista de verificação de regressão focada em mecânica, pontuação, reinicialização e casos extremos próximos.
- [Teste os limites de um jogo de navegador](https://oneshotgems.ai/pt-BR/topics/testing-game-boundaries): Encontre falhas extremas testando limites de movimento, tempo, bordas da tela, contadores de pontuação e entradas repetidas em um pequeno jogo de navegador.
- [Gere níveis aleatórios reproduzíveis](https://oneshotgems.ai/pt-BR/topics/seeded-random-level-generation): Use uma semente armazenada para recriar layouts procedurais de jogos, separar a geração da validação e manter um nível com falha fácil de reproduzir.

## Leitura complementar

- [MDN: temporização do requestAnimationFrame](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame)

---
Página canônica: https://oneshotgems.ai/pt-BR/topics/deterministic-game-tests
