SPAC
Portada > Webzine > Sección objetiva > A. técnicos > Sonido en Inform 7

Sonido en Inform 7

NIVEL: INTERMEDIO

Viernes 21 de diciembre de 2007, por Sarganar


(intro con música de noticiero sensacionalista)

Hola! Seguimos en SPAC TV y el programa ¿Cómo diablos se hace esto? Y aquí tenemos mensajes de los televidentes –o mejor aun: los cablevidentes-, como por ejemplo este que es de grendelkhan y nos dice:

“Hola. Yo también estoy intentando programar en I7, la verdad es que es muy divertido, porque es un gran reto y el paradigma de programación es súper novedoso, pero a veces es tremendamente lioso. ¡Vaya, me ha salido un pareado sin haberlo planeado! Depresiv, ¡ya no tengo ansiedad!” Ja, ja, pos no sé que decirte tío, que esto no es tanto lío!

Los dejo en compañía de Sarganar, la producción no pudo traer a Emily, pero, peor es nada...

(la cámara enfoca a un flacucho)

Hola, mi nombre es Sarganar y en el día de hoy vamos a ver cómo usar sonidos en Inform 7.

Palabras previas

Como sabéis, Inform 7 (I7) aun no salió del estado beta, y en cada nueva release se agregan mejoras y características interesantes. El sonido es una de ellas. Si bien la máquina virtual subyacente Glulx soporta muchas funciones relacionadas con audio (reproducir, detener, ajustar volumen, varios canales, avisar cuando termina, etc), I7 por ahora sólo ha introducido una de ellas: reproducir sonido. Quedan en el tintero la gama completa de posibilidades y existen rumores de que Ross Raszewski, creador de GWindows y Gsound, está trabajando en ello. Quizás para fin de año tengamos noticias. Como siempre digo, esto no quita que quien lo necesite antes, se ponga a ello y luego lo agregue como extensión. Pero eso es otro tema.

Reuniendo lo necesario

Vamos a crear un pequeño proyecto I7 que use sonidos. Para ello necesitamos.

- Inform 7 instalado, con las librerías infsp: Inform 7, Y las librerías INFSP 7(son los módulos en español). Podrás obtenerlos desde la web de infsp. En el pack los documentos explican cómo ‘instalarlos’.

- Archivos de sonidos:

    • “inicio.ogg”, lo que se toca apenas comienza el juego. Que sea algo breve, como esos jingles de comedia (en TV) luego de los comerciales,
    • “cajita.ogg”, el sonido típico de una cajita musical,
    • “puerta.ogg”, el chirrido de una puerta,
    • “finale.ogg”, la suave fanfarria que denota una continuación de nuestra aventura.

Deben ser .ogg (OGG Vorbis). Como conversores puedes usar Audacity o Free Mp3 Wma Converter. No incluyo links a los tracks aquí para obligarte a lidiar con la obtención y edición de sonido. Vamos, estas habilidades las vas a necesitar luego para tu aventuras. El tamaño de los tracks (y por consiguiente del juego) dependerá de la duración, frecuencia y bits de sampleo, y si son estereo o mono. Puedes buscar sonidos desde la página de recursos sonoros del wikicaad.

- Un intérprete glulx, para poder probar luego la versión final del juego. Te recomiendo el Aventurate.
- El capitulo 21 Figures, Sounds and Files del help de I7. Tenlo siempre a mano.

El juego-ejemplo

Muy bien. Estamos en la sala de espera del reconocido inspector Pardo James Bubock. Sobre una mesita vemos una cajita musical. El inspector nos citó allí a las 13 horas pero….eso fue hace una hora.

Trabajando en el proyecto

Ya en I7, iniciamos un nuevo proyecto (File>New Project). I7 nos preguntará el nombre del proyecto (Ej: Sonidos Ejemplo) y el lugar en el disco donde queramos crearlo. (Ej: D:\Mis_documentos\Inform\Projects). Con ésta información I7 genera una carpeta llamada “Sonidos Ejemplo.inform” y mete allí toda su data de uso interno (pero los tracks de audio no van aquí, como veremos más adelante, recuerda esto). Al día siguiente, cuando queramos nuevamente abrir nuestro proyecto “Sonidos Ejemplo”, hacemos File>>Open Project, buscamos la carpeta “Sonidos Ejemplo.inform” y le damos a Abrir.

Bárbaro, un papel en blanco listo para trabajar!

Como nuestro juego manejará sonidos, debemos avisarle a I7 que compile para la máquina virtual Glulx (que puede manejar multimedia). Esto es muy importante. Lo haremos en la pestaña Settings>>Glulx. También nos cercioraremos de que esté activada la opción “Create a Blorb archive for Release”, para empaquetar todo (juego y sonidos) en un solo archivo de extensión gblorb al publicar: será la versión final distribuible entre amigos y potenciales novias (o al revés).

Antes de ponernos a programar, una cosa más: dónde colocar los recursos (archivos de sonidos). Estos van en una carpeta especial que debemos crear a mano, llamada “nuestro_proyecto Materials”, y dentro de ella en una subcarpeta “Sounds”. Creamos dicha carpeta en el mismo directorio raíz que nuestro proyecto inform.

Por ejemplo: Cómo queda la estructura de carpetas

Es en esta carpeta Materials donde I7 buscará sus recursos de sonido y gráficos que utilicemos, así que es importante que la ubiquemos en el lugar correcto. ¿Comprendido? Si no hay problemas, luego de compilar podremos ver el listado de recursos multimedia en la pestaña Index>Contents. De todas formas, si pusimos los tracks en cualquier lado, I7 nos dirá dónde los quiso buscar en el informe de error al compilar.

Perfecto, a programar entonces! (música de carrera de automóviles)

No explicaré cada línea de código aquí, solo lo relativo a sonido y un par de detalles más.

Nuestra aventura tendrá 6 objetos:
- Una habitación, la sala de espera
- Una mesita
- Una cajita musical
- Un botón en su interior
- Un decorado genérico
- Una puerta misteriosa

Cuando el jugador abra la cajita, sonara la musiquita. Cuando pulse el botón, se escuchará un sonido de portón. Cuando abra la puerta, el juego peta. No mentira. El juego termina.

Comenzamos desde el principio (las primeras línea de código):


"Sonidos Ejemplo" by Sarganar

Include Spanish Localization by Sarganar.

Esto incluirá en la compilación a la extensión Spanish Localization. Fundamental para que toda aventura hable español.


Sound of cajita musical is the file "cajita.ogg".
Sound of puerta is the file "puerta.ogg".
Sound of inicio is the file "inicio.ogg".
Sound of final is the file "finale.ogg".

Aquí le indicamos a I7 cómo llamaremos a las pistas dentro del código (en vez de usar sus nombres de archivo). así, en un momento dado, podremos reproducirlas con: play the sound of final.

Esa orden se llama phrase. No se usan sueltas en el código, sino bajo determinadas condiciones, por ejemplo:

  When play ends, play the sound of final.

Cuando el juego finalice, toca el sonido del final.

  Report an actor opening the cajita: play the sound of cajita musical.

Luego de abrir la cajita, toca el sonido de la cajita.


  Instead of pushing boton:
      play the sound of puerta.

En vez de ejecutar las acciones por defecto para ‘pushing’ (pulsar) sobre el botón, tocar el sonido de la puerta (sin duda una entrada secreta).

Con eso, ya tienes para jugar un rato largo.

Copio aquí el código completo (que tú copiarás en la pestaña Source). Como siempre, compilas el juego con F5 (botón Go!) y puedes probarlo en la pestaña Game de la derecha (deberías escuchar los sonidos también). Para obtener tu copia distribuible, le das al botón Release (Ctrl+F5).

Hasta otra!


"Sonidos Ejemplo" by Sarganar

The story headline is "Un breve historia con ruiditos".

Include Spanish Localization by Sarganar.
Use Auto Pronouns and no scoring.

Sound of cajita musical is the file "cajita.ogg".
Sound of puerta is the file "puerta.ogg".
Sound of inicio is the file "inicio.ogg".
Sound of final is the file "finale.ogg".

When play begins, play the sound of inicio.       
When play ends, play the sound of final.       

Sala de espera is a room."Una austera sala de espera. Paredes blancas, piso blanco,
       una mesita blanca en el centro y sobre ella una pequeña cajita (adivina el color).
       No quiero ponerme nervioso pero....el inspector nos citó alli a las 13 horas...
       y eso fue hace una hora."
   The printed name is "Sala de espera de Pardo James Bubock y asociados".

A decorado is here. It is a backdrop.
   Understand "pared", "paredes", "techo", "piso" and "muebles" as decorado.
   Instead doing something when the noun is a decorado: say "Esto no es importante
       para la aventura.".

A mesita blanca is here. The description is "Una mesita blanca."
   It is female and scenery.
   Understand "mesa" as mesita.

A cajita musical is on the mesita. The description is "Una cajita (musical?)
    blanca. En su tapa se leen las iniciales PJB."
   It is female, container, openable, closed.
   Report an actor opening the cajita: play the sound of cajita musical.

A boton gris is inside the cajita. The description is "Es un botón de color gris.
    No tiene un mensaje que diga 'Púlsame!' pero es muy tentador."
   It is fixed in place.
   Instead of pushing boton:
      play the sound of puerta;
      move puerta to location;
      say "Vaya, acaba de dibujarse una puerta en la pared de enfrente!
             [line break]La cajita ya no suena."

A puerta is a thing.The description is "Parece una puerta, solo que no tiene
    picaporte ni cerradura."
   It is scenery.
   Instead of opening the puerta:
         end the game saying "¿Qué secretos descubrirá nuestro amigo? ¿Preguntas
            tales como con quién lo engaña su mujer, o porqué demonios no ponen sillas
            en esta sala de espera? No se pierda el siguiente capítulo de esta emocionante
            historia....".
   Instead of entering the puerta, try opening the puerta.

(terminando el programa) Vaya, la señal de ajuste tiene más rating que nosotros. Sarganar, ¿porqué no te dedicas a otra cosa?


Seguir la vida del sitio  RSS 2.0: Artículos, Comentarios | Mapa del sitio | SPIP
CC Some rights reserved El contenido está disponible bajo los términos de Atribuir - Compartir bajo la misma licencia 3.0 ó 2.5 de Creative Commons.