Identificar entradas no controladas
Enumera todo lo que puede variar entre partidas: posiciones aleatorias de enemigos, tiempo transcurrido, frecuencia de los fotogramas, puntuación máxima guardada, tamaño del área visible y orden de las entradas del jugador. Decide cuáles de esas variables afectan el comportamiento que estás probando. Para comprobar colisiones, fija la posición del enemigo y el punto de inicio del jugador. Para comprobar un patrón de aparición, controla la secuencia aleatoria y prueba varias semillas para que una sola configuración no oculte un patrón defectuoso.
Controla el tiempo sin congelar la conducta del jugador.
Para probar un temporizador, fija la hora de inicio y comprueba qué ocurre en límites significativos, como cuando quedan tres segundos y cuando llega exactamente a cero. Para el movimiento basado en fotogramas, compara el mismo tiempo transcurrido, no la misma cantidad de fotogramas renderizados. MDN indica que la frecuencia de las llamadas a requestAnimationFrame suele seguir la frecuencia de actualización de la pantalla y que la mayoría de los navegadores las pausa en pestañas ocultas. Por eso, el código de animación debe usar la marca de tiempo de la llamada u otra fuente temporal para calcular el progreso.
Preguntas sobre pruebas de juego deterministas
¿Las pruebas deterministas significan eliminar el juego aleatorio?
No. Significa controlar la aleatoriedad en pruebas seleccionadas para comparar comportamientos. Aún puedes realizar pruebas exploratorias separadas en diversas semillas para inspeccionar el alcance del juego.
¿Por qué una prueba puede pasar localmente y fallar en la ejecución de un navegador?
Diferentes tiempos, ventanas gráficas, estados guardados o secuencias aleatorias pueden alterar la configuración. Registra esas condiciones y controle las relevantes para el comportamiento que se está verificando.
Más información
¿Has visto algo desactualizado? Notificar una corrección