Volcán virtual

Volcán virtual en Javascript

Este volcán es solamente un ejemplo de uso del Motor o_o. Al principio quería mover un buen grupo de partículas, a la vez por la pantalla. Después, por capricho, les puse gravedad y como se salían por debajo, puse un sitio de donde podían salir nuevas partículas. Al final como se parecía a un volcán, me lancé a mejorar un poco el aspecto estético y el sonido. Este es el resultado:

Pulsa ‘e’ para provocar una explosión, o también puedes hacerlo tocando la pantalla o haciendo click. Ir al volcán.

La intención era poner a prueba algunas de las características que tiene el Motor o_o que no había probado hasta ahora: uso de la cámara (para el terremoto) y el sonido (terremoto y explosiones). El sonido no funcionará si estás viendo esta página en un móvil o tablet, porque o_o carga los archivos de sonido de forma dinámica. Y los browsers para dispositivos móviles, suelen tener la reproducción de sonido cargado dinámicamente, desactivado.

De este ejemplo, podría destacar el problema de rendimiento relacionado con la creación y destrucción de objetos. Al principio lo hice poniendo las partículas (llamadas “fuegos” en el código) dentro de un array de objetos al que voy agregando nuevos y quitando los que se salen por debajo, pero después de un rato funcionando, las iteraciones se volvían cada vez más y más lentas. Le eché la culpa a la gestión de memoria, todos esos news y las esperas al recolector de basura.

La solución del problema fue crear un array de un número fijo de objetos al principio y dejarlo así, sin añadir ni quitar nada. Esos objetos empiezan desactivados y a medida que van haciendo falta se activan. El rendimiento mejora bastante, y sobre todo, se mantiene constante en el tiempo. El único inconveniente es que hay un número máximo de objetos permitidos, que aunque puede ser lo grande que queramos, no podremos cambiarlo durante la ejecución. Pero para este caso va bien.