Pruebas de Juego
Prueba un juego como lo haría un ingeniero de QA, usando Claude Code o una sesión de chat con los archivos del proyecto.
Flujo de Trabajo
- Lee las reglas: abre
RULES.mdsi existe (de la habilidad game-rules-core). Si no, infiere las reglas del código y escríbelas primero. Las reglas no comprobables son errores en la especificación. - Mapa el código: encuentra el bucle del juego, la máquina de estados, el manejo de entrada, colisiones, generación y código de puntuación.
- Revisión estática: busca los errores comunes en
references/checklist.md. - Escribe pruebas: prueba unitaria de lógica pura (matemáticas de colisiones, puntuación, transiciones de estado) y agrega una prueba de simulación determinista cuando sea posible (semilla fija, dt fijo, entrada secuenciada).
- Ejecuta y observa: ejecuta las pruebas y, si hay una herramienta de navegador disponible, juega el juego y captura los errores de consola.
- Reporta: escribe
BUG_REPORT.mdusando el formato a continuación.
Categorías de Prueba (cubrir todas)
- Bucle principal: inicio, pausa, reanudación, reinicio, fin del juego, victoria. Cada transición de estado funciona y restablece las cosas correctas.
- Entrada: teclas simultáneas, tecla sostenida durante la pausa, toques rápidos, pérdida de foco (blur), táctil y gamepad si es compatible.
- Colisiones/física: túnel a alta velocidad, enganche en esquinas, pararse en bordes, plataformas móviles, caerse del mundo.
- Reglas: cada línea de
RULES.mdtiene al menos una prueba: disparador, condición, efecto, caso extremo. - Puntuación/progreso: incrementa correctamente, sin doble conteo, se reinicia al reiniciar, la persistencia (localStorage) sobrevive a la recarga y maneja datos corruptos.
- Generación: límites respetados, siempre superable, sin entidades después del reinicio, sin crecimiento de memoria con el tiempo.
- Independencia de la frecuencia de cuadros: ejecutar a 30, 60 y 144 FPS simulados; los resultados del juego deben coincidir.
- Rendimiento: tiempo de cuadro, crecimiento del conteo de entidades, fugas de memoria, llamadas de dibujo (3D).
- Robustez: redimensionar ventana, cambio de pestaña, reinicio rápido, viewport móvil.
- Determinismo: la misma semilla más las mismas entradas da el mismo resultado.
Formato del informe de errores
Para cada error:
- ID / Título
- Severidad: Crítico (bloqueo, bloqueo suave, pérdida de progreso) / Mayor (regla rota) / Menor (visual, sensación) / Pulido
- Pasos para reproducir (numerados, exactos)
- Esperado vs Real
- Evidencia: archivo y línea, error de consola o nombre de prueba fallida
- Sugerencia de solución (una o dos líneas)
Finaliza el informe con una tabla resumen (conteos por severidad) y una lista de lo que NO se probó.
Reglas estrictas
- Nunca afirmes un error sin evidencia (una prueba fallida, un log o una ruta de código que puedas señalar).
- Nunca afirmes que algo funciona si no lo ejecutaste; di "revisado, no ejecutado".
- Prefiere pruebas deterministas sobre "lo jugué y se sintió bien".
- No modifiques el código del juego a menos que se te pida; primero reporta, arregla por solicitud.