martes, 18 de mayo de 2010

Desarrollo de un juego 2D con XNA IX - Audio

Estimadísimos:

Nuevamente y como siempre, bienvenidos a este, su blog XNAExplorer, donde intentamos, de a poco y paulatinamente ir desentrañando las características de este excelente framework de desarrollo que es XNA.

Me disculpo por mi ausencia de casi un mes, obligaciones laborales, académicas y domésticas me han hecho difícil sentarme con calma a escribir en este blog que llevo con tanto cariño.

En el capítulo de hoy escribiré sobre algo que hicimos en la oficina casi jugando con algunos de mis colegas. Habíamos estado conversando respecto a hacer un juego con sonidos onotamopéyicos ordinarios hechos con la boca "tchiúm"(disparo), "pujjjjhh"(explosión), "tu pa tu pa tupa tutu tupa"(Banda sonora), la verdad, lo hicimos, con la grabadora de sonidos de Windows, el microfono incorporado al notebook y hartas ganas de tontear un rato, despues de todo, es un juego, no es un sistema de facturas de una tienda retail, puede ser divertido.

De antemano, agradezco la asesoría a don Marcelo Acosta, Eduardo Ríos y Finnian Fernandez, por enriquecer con su manantial de tonteras el torrente de ideas que tengo.


El agregar audio a un proyecto XNA resulta bastante simple gracias a las herramientas y clases que provee.

Primero debemos, en la carpeta content, la misma donde guardamos los png o si lo desean en otra carpeta dentro de content que haga referencia a los sonidos, agregar los archivos de audio que hemos capturado con nuestra grabadora de sonidos o cualquier otro medio que ustedes hubiesen utilizado.

Luego usaremos una clase llamada SoundEffect que servirá, tal como da a entender su nombre, para nuestros efectos de sonido.

Declararemos, por ejemplo, el efecto de sonido del disparo de esta forma.

Luego, en el LoadContent agregaremos esta línea

Disparo= Content.Load("Disparo");

Si se dan cuenta, usamos el mismo método Content.Load que utilizamos con las texturas. Al referir entre <> la clase SoundEffect le estamos indicando al método Content.Load que lo que estamos cargando es un efecto de sonido y no una imagen.

Cno esto, tenemos ya disponible el sonido dentro de nuestra variable ahora podemos reproducir el sonido asociado, para esto usamos el método Play de la clase SoundEffect.

En cuanto al sonido de fondo, usaremos 2 clases MediaPlayer y Song.

En el LoadContent pondremos:

MediaPlayer.IsRepeating=true; //Cone sto indicamos que el audio se repetirá constantemente

Luego  cargaremos nuestro audio de fondo con la siguiente línea:

MediaPlayer.Play(Content.Load("backgroundMusic"));

backgroundMusic es el nombre del archivo wav que he dejado como audio de fondo. Como pueden ver, otra vez usamos el nunca bien ponderado método Content.Load pero en esta ocasión con la clase Song

He agregado las siguiente variables globales

bool HaDisparado=false;
bool HaExplotado=true;

en el método FireCannonball setearé, cuando se dispare, la variable HaDisparado en true, de este modo, en l método Draw evalúo y hago lo siguiente

  if (HaDisparado)
            {
                Disparo.Play();
                HaDisparado = false;
            }

De este modo, cuando se dispara, se ejecuta el sonido de disparo y luego nuevamente se entra al estado de no disparo.

Eso por hoy, como verán no es muy dificil y es bastante divertido.

Saludos a mis colegas, amigos, la gente de GameDev, Microsoft y simples entusiastas de mente inquieta y creatividad infinita que ha estado interesada en este humilde blog.

AH! y un especial saludo a José Carrasco que se ha sumado como diseñador en mi proyecto de título basado en este grandioso framework.

Manuel Gatica

Links:

Una patética muestra de como usar la grabadora de sonidos de windows:
http://www.youtube.com/watch?v=O0RC7djYZ7o

El juego ejecutándose con el sonido de disparo incorporado:

http://www.youtube.com/watch?v=u001fXuaxcw

1 comentario:

  1. Hola que tal amigo! He tenido la oportunidad de visitar tu blog despues de descuidar el mio un ratito por falta de tiempo. http://desarrollaxna.blogspot.com/. Y he visto tus comentarios referentes a mi blog. Si Dios quiere voy a introducir nuevos tutoriales incluyendo Videos para q se comprendan mejor los temas. He visto tu interes sobre el tema de XNA y lo que tienes pensado.La verdad tiene rato q ando en busca de programadores con un interes en comun creo q tu tambien lo tienes al igual q yo.
    Te dejo mi correo para q me puedas contactas y porq no je. Realizar unos cuantos proyectos por hobby. Algunos otros intereses de mi parte son: Blender, C++ con OpenGL. Gusto saludarte!!! y Mi correo es lincoln_xalapa@gmail.com

    ResponderEliminar

-__-