miércoles, 30 de noviembre de 2016

Llega Phaser CE (Community Edition)

Si solo hace unos días hablábamos de que Phaser 3.0, ahora Richard Davey anuncia Phaser CE, una versión comunitaria de la rama 2.x.

Mientras el desarrollo principal se sigue centrando en Phaser 3.0 y la última versión oficial de Phaser sigue siendo la 2.6.2, se creará en GitHub una rama separada, derivada de la inconclusa Phaser 2.7. Esta versión dispone de otro nombre en npm (phaser-ce en vez de phaser). Y se ha anunciado que prácticamente todas las pull-request hechas en la rama de Phaser CE serán aceptadas.



Así pues, la rama 2.x seguirá viva en Phaser CE, cuyo progreso dependerá únicamente de la gente que se anime a colaborar. Un modelo innovador que veremos si consigue mejorar de forma significativamente la rama 2.x.


viernes, 25 de noviembre de 2016

Se acelera el desarrollo de Phaser 3.0

En diciembre de 2014, Richard Davey comenzó el desarrollo de Phaser 3.0, también conocido como Lazer. Sus objetivos eran rediseñar Phaser para adaptarlo a las novedades que introducía ES6 (la nueva versión de JavaScript). Y de esa manera conseguir aprovechar al máximo la potencia de los navegadores manteniendo a Phaser como una librería moderna.



Durante este tiempo, Phaser 3.0 se ha ido desarrollando de forma paralela a la rama Phaser 2.x. Phaser 3.0 introduce varios cambios, que detallaremos en profundidad en otro artículo, siendo uno de los más controvertidos la eliminación de PIXI como librería de renderizado. En su lugar, Phaser traerá consigo un nuevo y mejorado motor de renderizado, que a diferencia de PIXI, será únicamente desarrollado por y para Phaser.

Hace dos semanas, Richard Davey lanzó una encuesta. En ella preguntaba que les gustaría más. Centrarse definitivamente en Phaser 3.0 o lanzar Phaser 2.7, que entre otras cosas solucionaba problemas encontrados en la versión actual, Phaser 2.6.2.

En vista a los resultados de la encuesta, Richard va a centrarse en Phaser 3.0 (74% de los votos). Sin embargo, como un cuarto de los desarrolladores querían lanzar Phaser 2.7, se ha lanzado esta de forma extraoficial y su uso solo se ha recomendado para aquellos que tuvieran problemas graves con sus juegos en Phaser 2.6.

Así pues, cada vez falta más para Phaser 3.0, una versión que sin duda promete.

jueves, 17 de noviembre de 2016

Introducción a Phaser por Juan David Nicholls

Juan David Nicholls ha preparado esta fantástica presentación con ejemplos reales para conocer un poquito más sobre Phaser.

domingo, 13 de noviembre de 2016

Sonidos y música

El aspecto sonoro de un juego es vital y sin embargo muchas veces es menospreciado. Una mala ejecución en este apartado puede arruinar un juego sobresaliente.

En un juego además hay que diferenciar entre música y efectos de sonido. Phaser no los distingue, pero tú deberías tenerlo en cuenta cuando diseñes tus juegos. Los efectos de sonidos son cortos y tienen que reproducirse nada más realizarse la acción que los desencadena. La música por otro lado es de larga duración y puede no estar sincronizada con la acción del juego.

Formatos soportados

Phaser no impone ningún formato de audio. Los formatos que pueden y no pueden usarse vienen dados por el navegador donde se ejecute el juego. A día de hoy (13 de noviembre de 2016) el soporte de los distintos navegadores a los distintos formatos de audio es el que sigue:




 Cargando los archivos

Los archivos de audio se cargan de manera similar a los sprites.

function preload(){
    game.load.audio("MiSonido","audios/MiSonido.mp3");
}

Después podremos acceder al objeto de tipo Phaser.Sound de forma fácil.


var sonido = game.add.audio("MiSonido");

Los archivos MP3 son comprimidos y su decodificación no es instantánea. Para ello puede usarse la función setDecodedCallback.

game.sound.setDecodedCallback([ sonido ], function(){
   // Es seguro usar los sonidos
}, this);

Reproducir el audio, cambiar el volumen

Ahora para reproducir el audio podemos usar cuatro funciones muy sencillas: play, pause, resume y stop.


sonido.play();
sonido.pause();
sonido.resume();
sonido.stop();

Si queremos cambiar el volumen de ese audio modificamos la propiedad volume.


sonido.volume = 0.5 // Un valor entre 0 y 1

Es posible realizar transiciones (fades) usando fadeTo. Especificamos el volumen que tendrá al finalizar la transición y el tiempo que vamos a dar para que se realice el cambio. Una vez especificado, se modificará el volumen de forma gradual en el tiempo especificado llegando al volumen que indicamos.


sonido.fadeTo(1000,0.8); // Subir el volumen progresivamente durante 1 segundo (1000 milisegundos hasta 0.8)