gamwus. desarrollo diriguido por pruebas y videojuegos
DESCRIPTION
Esta presentación muestra las ideas clave para el desarrollo de videojuegos mediante desarrollo dirigido por pruebas (o TDD):TRANSCRIPT
¿Quién soy yo?
3
• Acercar el desarrollo de videojuegos a las prácticas de Ingeniería del Software
• Justificar que se puede aplicar TDD para el desarrollo de videojuegos
• Ver los principales problemas y soluciones para aplicar TDD en el desarrollo de videojuegos.
Objetivos
Objetivos
4
1. Mi experiencia.
2. ¿Qué es TDD?.
3. ¿Quién usa TDD para desarrollar videojuegos?.
4. Aspectos claves en videojuegos.
5. Probar el código que no se ve.
6. Conclusiones.
TDD y Videojuegos
Índice
5
Mi experiencia
Faltan enemigos
Demasiado rápido
Constante equivocada
Mala lógica
Variable no declarada
Mi Experiencia
• Sin pruebas
• No veía fácilmente el diseño
• Fallaba por sorpresa sin saber por qué
• Cambiaba por cambiar.
• Apechugar con las malas decisiones.
• No avanzaba.
• Presionado por fecha límite.
• Me sentía mal.
• Un cuadro típico de necesito TDD.
Mi experiencia
Mi experiencia
9
¿Qué es TDD?
¿Qué es TDD?
¿Qué es TDD?
1. You are not allowed to write any production code unless it is to make a failing unit test pass.
2. You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures.
3. You are not allowed to write any more production code than is sufficient to pass the one failing unit test.
¿Qué es TDD?
13
¿Qué es TDD?
¿Esto se aplica a videojuegos?
Resolviendo niveles automáticamente
http://www.youtube.com/watch?v=DlkMs4ZHHr8
15
¿Quién usa TDD?
¿Usan TDD para desarrollar juegos?
Onikami
¿Usan TDD para desarrollar juegos?
• Solo es útil ara determinados algoritmos.
• Dedicamos mucho más tiempo a tareas que son escribir código.
• Probamos los juegos a mano.
• Provoca grandes retrasos.
• No lo usamos porque nunca lo hemos usado.
• Umbral de entrada muy alto.
• No merece la pena.
¿TDD sirve?
• TDD incrementa el tiempo y los recursos.• TDD es difícil en determinados contextos
(como interfaces gráficas).• TDD es difícil de aprender y aplicar
correctamente.• Las diferencias entre personas influyen
mucho en los resultados.• TDD suele evitar errores de código.• TDD no suele evitar errores de aceptación.• TDD suele generar código menos
acoplado.• Resultados no concluyentes cobre la
mejora de diseño con TDD
¿Todos?... No
20
Aspectos claves en videojuegos
Puntos clave
• UX es el rey, el código no.
• Falta de SRD.
• Destapar.
• Probar lo visible.
• Aleatoriedad.
• Problema con las herramientas.
Puntos clave
• Movimiento
• Colisiones
• Inteligencia artificial
• Respuestas a inputs externos.
• Eventos de tiempo
• Carga de assets
• Pintar la pantalla
• Reproducir los gráficos
• Probar el juego como el usuario
final.
• Programación multihilo.
• Rendimiento.
Es mas difícil aplicar TDD a:Podemos aplicar TDD a
23
Separación de conceptos
La S de Solid
A CLASS SHOULD HAVE ONLY ONE REASON TO
CHANGE.
Single Responsibility
Single Responsibility
27
Independencia de los gráficos
TDD y Videojuegos
Filosofía TDD
TDD y videojuegos
Probar los actores
Gema:Tiene posición X, YEstá visible por defectoPuede volverse invisible
Haz visible lo invisible
Usa lo visual a tu favor
Hazlo fácil de ver / cambiar.
• Pero la UX es importante• Vas a tener que jugar con
tu juego muchoooo.• Procura que sea divertido.• Agiliza los cambios.
33
Mas ejemplos
Lógica del juego
Combinación:• 4 Valores• En un rango de [1-4]• Valor correcto =
intenta el siguiente.• Valor incorrecto =
vuelve a empezar
Lógica del juego
Combinación:• 4 Valores• En un rango de [1-4]• Valor correcto =
intenta el siguiente.• Valor incorrecto =
vuelve a empezar
Si destapamos el código
36
¿Y eso cómo queda en la realidad?
37
Test Coverage Metric
38
Y en el futuro…..
39
Conclusiones
Conclusiones
Conclusiones
• Falsa sensación de velocidad.
• Falsa sensación de seguridad.
• No tener claro qué probar
• Set-up complejo.
• Módulos “Dios”
¿Por qué pierdo la fe?
Mal diseño
Conclusiones
Todo por hacer
Enlaces
Fin