Step 1- Community Makerspaces
2. The-Think Workshop
Para realizar todas las pruebas de este trabajo se a utilizado el Log de Android1. La mayoría
de Logs se han ido retirando una vez se han completado las pruebas de dicha fase, pero aun así sigue existiendo, en el paquete com.bluetreereality.openglapi.util la clase LogConfigque maneja la activación de los logs de shaders, fps y texturas. Los cuales se muestran útiles para los futuros desarrolladores, sobre todo el de FPS.
Se han creado 5 entornos, los cuales sirven como ejemplos para futuros desarrolladores. En ellos no se produce nada específico y en algún caso se puede llegar a pensar que tienen un mal funcionamiento, sin embargo simplemente son campos de pruebas para realizar los cambios y ver su resultado, estos son:
Figura 46: Entorno de pruebas Braid Test.
• braidtest: Quizás sea el más cerrado de todos. En el se cargan unos sprites y se hacen
modificaciones sobre ellos al tocar la pantalla. Este entorno es el único que hace uso de la cámara, moviéndola y utilizando el zoom a la vez que escala los elementos de la HUD.
Figura 47: Entorno de pruebas de colisiones.
• collisiontest: Este es el entorno de pruebas para colisiones únicamente. En el hay objetos circulares y cuadrados que se amoldan a la perfección a los contornos representados por las colisiones y se puede ver de este modo como interactuan entre ellas.
Figura 48: Entorno de pruebas Fish Jump.
• fishjump: Este es un pequeño juego creado en el cual, un pez salta para alcanzar un pájaro. Esta a caballo entre los dos anteriores pero también incorpora físicas.
Figura 49 y 50: Entorno de pruebas de menú y de carga respectivamente.
• screenmanagement: Este paquete incluye un menú de selección y una pantalla de carga. Es un buen ejemplo de una posible implementación de estos dos elementos muy comunes en
videojuegos.
Figura 51: Entorno de pruebas de físicas.
Las pruebas de rendimiento de los sprites, se realizaron añadiendo objetos hasta que caían los FPSs. Estos objetos eran objetos animados que además utilizaban físicas. De esta forma, se
comprobaba tanto el rendimiento al dibujar como el rendimiento al actualizar los procesos del bucle de juego. Esta tabla muestra los resultados:
Nº de Objetos UPS FPS
50 60 45
60 58 36
70 58 29
80 55 9
Tabla 2: Velocidades de procesamiento con respecto al numero de objetos activos en pantalla.
Estos resultados son los mismos tanto si se usan texturas diferentes como si se utilizan objetos copiados. La única diferencia en ese caso, es que exista o no una parada intermedia al generar cada objeto durante el tiempo de juego en el caso de no ser una copia.
Este bajón en el rendimiento fue notable a simple vista. Es necesario resaltar que estas pruebas fueron realizadas con el emulador, cuyo rendimiento es mucho más bajo que el de los móviles. Sin embargo, se considera que para un videojuego 2D y teniendo en cuenta que los UPS no decaen prácticamente se consideran un rendimiento eficiente, ya que como se ha mencionado anteriormente el proceso del dibujo lo controlan entre OpenGL y Android, la Api se limita a interactuar con ellos.
Para realizar las pruebas con el bucle del juego se introdujeron paradas de una cantidad notable de milisegundos que impidiese llegar a los 60 frames por segundo. Estos bloqueos se situaron tanto en el update como en el draw, indistintamente según la prueba. Efectivamente se notaba un desfase en el juego.
Tras un estudio detallado utilizando el Log e intentando aminorar la cantidad de desfase producida. Se concluyó que el control que ejercía Android sobre la velocidad con la que pintaba la pantalla era suficiente para problemas de este calibre, en el caso de que fuera el dibujo el que tardase en procesar. En el caso de que sea el propio update del juego, por intensidad de calculo, el que tarde en finalizar sin cumplir con sus tiempos el programador tiene un problema grave y a no ser que sea un proceso pasajero deberá enmendarlo.
9. Conclusiones
Efectivamente la librería gráfica OpenGL, necesaria para hacer videojuegos para dispositivos móviles, no es sencilla de utilizar. Este proyecto ha conseguido hacer uso de ella eficiente para videojuegos 2D, pero solo se ha rasgado la superficie de su potencial y es que, adentrarse en los mundos tridimensionales aumenta las dificultades exponencialmente. Además, la librería ha conseguido enmascarar por completo este aspecto del desarrollo de videojuegos 2D para facilitar una API que permita continuar con el resto de trabajo sin preocuparse.
Tanto las físicas como las colisiones también han sido un logro. Es necesario reforzar la idea de que para terminar un videojuego aun queda mucho trabajo por hacer y será necesario limar esas pequeñas asperezas especificas que puedan surgir durante su desarrollo. Aun así, el trabajo ha sido satisfactorio.
Actualmente la API BTR se esta utilizando para desarrollar juegos 2D de forma eficiente. Uno de ellos se utiliza como ayuda visual a otro TFG: Desarrollo de un modulo de conexión entre
móviles Android para comunicación en tiempo real en videojuegos multijugador1, por Javier Abella