Videojuegos en Javascript con TDD y Jasmine

41
TDD y Videojuegos en Javascript (básico) [email protected] / @IWT2_Javier

description

Transparencias de la charla de desarrollo de videojuegos en Javascript

Transcript of Videojuegos en Javascript con TDD y Jasmine

Page 1: Videojuegos en Javascript con TDD y Jasmine

TDD y Videojuegos en Javascript

(básico)

[email protected] / @IWT2_Javier

Page 2: Videojuegos en Javascript con TDD y Jasmine

2

• Contar mi experiencia haciendo juegos.

• Explicar cómo aplicar TDD a videojuegos.

Herramientas de Desarrollo

Objetivos

Page 3: Videojuegos en Javascript con TDD y Jasmine

¿Quién soy yo?

Page 4: Videojuegos en Javascript con TDD y Jasmine

4

1. Introducción.

2. TDD y Videojuegos.

3. Probar interfaces públicas.

4. Probar el código que no se ve.

5. Conclusiones.

TDD y Videojuegos

Índice

Page 5: Videojuegos en Javascript con TDD y Jasmine

5

Introducción

Page 6: Videojuegos en Javascript con TDD y Jasmine

Introducción

Page 7: Videojuegos en Javascript con TDD y Jasmine

Introducción

– 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.

Page 8: Videojuegos en Javascript con TDD y Jasmine

8

Introducción

NO

Page 9: Videojuegos en Javascript con TDD y Jasmine

9

TDD y Videojuegos

Page 10: Videojuegos en Javascript con TDD y Jasmine

TDD y videojuegos

Test-Driven Development

Page 11: Videojuegos en Javascript con TDD y Jasmine

TDD y videojuegos

• Interacción del jugador• Actualización del mundo• Pintar• Cambiar de estado

(nuevo nivel / fin de juego, etc.)

Carga de assets

Se puede probar

Page 12: Videojuegos en Javascript con TDD y Jasmine

TDD y Videojuegos

Filosofía TDD

Page 13: Videojuegos en Javascript con TDD y Jasmine

TDD y videojuegos

Page 14: Videojuegos en Javascript con TDD y Jasmine

TDD y videojuegos

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.

Page 15: Videojuegos en Javascript con TDD y Jasmine

15

Probar los actores (diseño botton-up)

Page 16: Videojuegos en Javascript con TDD y Jasmine

Probar los actores

Page 17: Videojuegos en Javascript con TDD y Jasmine

Probar los actores

Gema:Tiene posición X, YEstá visible por defectoPuede volverse invisible

Page 18: Videojuegos en Javascript con TDD y Jasmine

Probar los actores

Page 19: Videojuegos en Javascript con TDD y Jasmine

Probar los actores

Page 20: Videojuegos en Javascript con TDD y Jasmine

Probar los actores

Gema:La primera está en 0,0Tienen un ancho y alto de 50Hay un espacio entre ellas de 3

Page 21: Videojuegos en Javascript con TDD y Jasmine

21

Probar interfaces públicas

Page 22: Videojuegos en Javascript con TDD y Jasmine

Probar Interfaces Públicas

Page 23: Videojuegos en Javascript con TDD y Jasmine

Probar Interfaces Públicas

Contador:Conoce todas las gemas de un tipo.Se incrementa cuando cogemos una gema de dicho tipo.Conocemos ambos valores.

Page 24: Videojuegos en Javascript con TDD y Jasmine

Ahora Todo Junto

Page 25: Videojuegos en Javascript con TDD y Jasmine

Ahora Todo Junto

Juego:Crear las gemas.Ponerlas en posiciones de origen.Crear el marcador.Crear cavas, stage, etc.

Page 26: Videojuegos en Javascript con TDD y Jasmine

26

Probar el código que no se ve

( y hacer que se vea )

Page 27: Videojuegos en Javascript con TDD y Jasmine

Haz visible lo invisible

Page 28: Videojuegos en Javascript con TDD y Jasmine

Movimiento

• Colocamos las gemas.• Actualizamos el mundo.• Comprobamos sus

coordenadas

• Necesitamos el juego creado.

• Posición relativa de una gema

• Duplicamos lógica de juego e la prueba (la lógica que calcula el desplazamiento)

Page 29: Videojuegos en Javascript con TDD y Jasmine

Carga de Assets

Asíncrono (te aviso cuando termine)

Page 30: Videojuegos en Javascript con TDD y Jasmine

Lógica del juego

Combinación:• 4 Valores• En un rango de [1-4]• Valor correcto =

intenta el siguiente.• Valor incorrecto =

vuelve a empezar

Page 31: Videojuegos en Javascript con TDD y Jasmine

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

Page 32: Videojuegos en Javascript con TDD y Jasmine

Prueba de la IA

Historia de un fracaso

¡¡¡Se puede tener éxito!!!

Page 33: Videojuegos en Javascript con TDD y Jasmine

33

Conclusiones

Page 34: Videojuegos en Javascript con TDD y Jasmine

Conclusiones

• Hemos visto un primer paso… pero aún queda mucho.

• Es difícil probar automáticamente que se pinta lo que se tiene que pintar (gráficoscorrompidos, ficheros equivocados, spreatsheets con coordenadas erróneas, etc.)

• Distintas resoluciones.

• Código multihilo.

Page 35: Videojuegos en Javascript con TDD y Jasmine

Conclusiones

Page 36: Videojuegos en Javascript con TDD y Jasmine

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

Tiene solución…..

Page 37: Videojuegos en Javascript con TDD y Jasmine

Conclusiones

Todo por hacer

Page 38: Videojuegos en Javascript con TDD y Jasmine
Page 39: Videojuegos en Javascript con TDD y Jasmine

¿Cómo podemos clasificar las herramientas?

Nivel de detalle

Plataforma

Lenguaje de programación

Tipos de juegos

Page 40: Videojuegos en Javascript con TDD y Jasmine

Unity 3D

Ves lo que haces

Page 41: Videojuegos en Javascript con TDD y Jasmine

Javascript + HTML5