GamwUS. Desarrollo Diriguido por Pruebas y Videojuegos

Preview:

DESCRIPTION

Esta presentación muestra las ideas clave para el desarrollo de videojuegos mediante desarrollo dirigido por pruebas (o TDD):

Citation preview

Desarrollo dirigido por Pruebas para

Videojuegos

Javier Gutiérrezjavierj@us.es / @IWT2_Javier

¿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

Recommended