lunes, 16 de febrero de 2015

Unity3D Scripting: Tweens

Hay una utilidad muy práctica en Unity3D que son las librerías de Tweens, no necesariamente necesitaríamos una librería, nosotros mismos podríamos ser capaces de hacer nuestros propios tweens para nuestro juego, una utilidad que si bien puede servir para muchísimas cosas en nuestros videojuegos, quizás resaltaría como mayor utilidad, la interfaz de nuestro videojuego.


¿Que es un Tween?
Un tween es una animación en la que puedes cambiar la posición, rotación, escala y en la mayoría de los casos, cualquier valor de un objeto en el cual, podemos decirle en cuanto tiempo queremos que pase de un valor A a un valor B, por ejemplo si queremos mover en un segundo nuestro objeto de la posición 0 a la 10 en un segundo, pues nuestra librería de Tween haría el cálculo para saber cuanto tiene que moverse por cada frame facilitándonos a nosotros el tener que hacer un algoritmo para ello.

¡Suena interesante! ¡Yo lo quiero!
Si, es interesante pero por supuesto consume bastantes recursos del sistema, recursos que, en ciertos casos como en móviles son escasos y muy valiosos, pero a su vez lo podemos considerar bastante necesario.

¿Entonces que hago?
Pues lo ideal sería usarlo lo justo y necesario, y en ese hipotético caso, lo lógico sería usar la librería de tweens que séa mas rápida y a su vez que no sea muy difícil de usar así que vamos a ver en primer lugar las librerías mas famosas que hay de Tweens para Unity3D y por supuesto, unas pruebas de rendimiento que, si bién no son las que yo mismo he hecho, ciertamente no se alejan en absoluto de mis resultados.

¿Que librerías hay para escoger?
Hay muchas, muchísimas, incluso hay tutoriales de como hacer tus propias librerías de tweens, sean mas, o menos eficientes, aquí las mas famosas:
Todas estas son gratuitas, y en el caso de la primera, tiene versión de pago, así que sientete libre de probarlas y hacer tus propias comparativas y en caso de que tus resultados sean diferentes a los que voy a poner aquí, en los comentarios puedes mostrarlos que seguro que nos servirán a todos de utilidad.

¿Cual de ellas es mejor?
En algunos casos es difícil elegir una librería, podría depender de la cantidad de usos que debes darle simultaneos, en caso de que el uso sea mínimo, da igual cual uses a no ser que estés intentando apurar el rendimiento al máximo, en caso de que vaya a ser frecuente, lo mejor es buscar la mejor alternativa de todas como bien dije anteriormente así que veamos la comparativa.

Editando 64,000 variables de tipo float en bucle

DOTween HOTween LeanTween GoKit iTween
FPS promedio 124 FPS 25 FPS 102 FPS Congelado Congelado
Tiempo de inicio 76 MS 332 MS 34 MS Congelado Congelado

Editando 16,000 variables de tipo float en bucle

DOTween HOTween LeanTween GoKit iTween
FPS promedio 412 FPS 115 FPS 389 FPS 387 FPS Congelado
Tiempo de inicio 14 MS 74 MS 7 MS 47,432 MS Congelado

Editando 2,000 variables de tipo float en bucle
DOTween HOTween LeanTween GoKit iTween
FPS promedio 1091 FPS 888 FPS 1050 FPS 998 FPS 3 FPS
Tiempo de inicio 2 MS 11 MS 1 MS 6,258 MS 240 MS

Editando 4,000 Transforms movíendose en bucle

DOTween HOTween LeanTween GoKit iTween
FPS promedio 68 FPS 63 FPS 68 FPS 65 FPS 38 FPS
Tiempo de inicio 5 MS 30 MS 3 MS 130 MS 229 MS

Para quien no sepa interpretar estas comparaciones, cuanto mas alto sean los FPS (Frames por segundo) promedio, mejor, mas fluida funciona la máquina durante la ejecución y, a su vez, cuanto menor sea el tiempo de inicio, antes empezará a funcionar nuestra animación.

Hay muchas otras comparativas en internet, y algunas desde luego, se ven que son claramente creadas por los mismos que hicieron las librerías lo cual evidentemente, hace que no quieran dejar a su propia librería por detrás de las demás y hay que saber interpretar los datos y comprobar uno mismo si lo que nos dicen es cierto o no.

Si vemos esta comparativa, el ganador promedio por FPS sería DOTween, pero no obstante, el ganador por tiempo de inicio sería LeanTween, aquí no tenemos la librería de DFTween y por desgracia no he podido testearla ya que, si bien tiene una versión de gratuita que podéis descargar en el enlace puesto anteriormente, también cuenta con una versión de pago que es la que contiene toda su funcionalidad así que no puedo asegurar que sea mejor o peor que las demás ya que no dispongo de la misma.

Entre las dos posibles ganadoras anteriores, DOTween y LeanTween, yo tengo una clara elección por motivos externos a las librerías, finalmente me quedo con LeanTween.

¿Por qué LeanTween?
Fácil, si comparamos estas dos potentes librerías de tweens, LeanTween funciona con un solo script en C# el cual podemos editar y alterar en caso de necesidad y en caso de DOTween, son muchas librerías en DLL, los cuales ni podemos modificar, ni dejarán de ocupar un valioso espacio que en algunos juegos nos hará falta ahorrar hasta el ultimo bit, especialmente en dispositivos móviles, y ya que los FPS tan altos no son tan apreciables, con que el juego funcione a 60fps, es más que suficiente para tener toda la sensación de fluidez que necesitamos así que es motivo mas que suficiente para quedarme con LeanTween.

Como añadido diré que LeanTween tiene su propio sistema de eventos que son muy cómodos y me recuerdan a los de JavaScript de desarrollo web.

Por último decir que, si no te llevas muy bien con la programación, algunos de estos assets tienen a su vez, otros assets que tienen su función de editor en el inspector para poder configurarlos sin necesidad de programar, en el caso de LeanTween, como punto negativo, diré que es de pago pero, ya que es el que estoy usando por los motivos explicados previamente, pronto subiré tutoriales al respecto.

No hay comentarios:

Publicar un comentario