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 sobre testes determinísticos de jogos
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.
Leitura complementar
Viu alguma informação desatualizada? Informar uma correção