Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: anse en Junio 20, 2014, 09:53:24 PM

Título: música BG en menú de pausa (no solucionado)
Publicado por: anse en Junio 20, 2014, 09:53:24 PM
Muy buenas. Estoy haciendo un juego el cual llevo ya bastante avanzado, pero me gustaría hacerle un menú de pausa. Por lógica, he creado un objeto "pause" al cual le he añadido un evento de presionar la tecla P, el cual dice que hará un "save game" y cambiará de room a la room de pause. al entrar aquí, se escuchará una música gracias a un objeto "reanudar" el cual tiene un evento create para poner esa música y un evento de presionar la tecla P para hacer un "load game" y cortar el sonido (me daba problemas de que seguía escuchándose tras volver a la room del juego). El problema viene cuando al volver a la room del juego, no se escucha la música del juego, pero me interesaría que se escuchara por donde lo pausé, ya que tiene una intro adecuada a la propia introducción de la fase del juego causada por un evento de colisión (para que suene la música acorde con la introducción a la pantalla). Lo que quiero conseguir es que, se guarde el tiempo por donde iba la música al pulsar la P y que se vaya a la pantalla de pause. Cuando vuelva, se quite la música del menú pause y siga la música del juego por donde se había quedado.

¿Alguna sugerencia?
Título: Re:música BG en menú de pausa
Publicado por: MRafX en Junio 20, 2014, 10:51:48 PM
Pues el Game maker 8 no tiene para pausar audio (me parece que tampoco el 8.1), la unica forma seria que cortaras la musica como dos archivos, para que asi no suene de nuevo la parte del intro al re ingresar al juego, respecto al por que no suena cuando vuelves a entrar al room, es por que el sistema de "save" y "load" de game maker no guarda los sonidos activos ni tampoco particulas entre otras cosas,
ahora que si apenas estas iniciando tu proyecto, podrias importarlo al Game maker Studio, eh escuchado que ese si tiene sistema de pausado, aun que la verdad no lo se ya que mi game maker es el 8 xD
Suerte!
Título: Re:música BG en menú de pausa
Publicado por: anse en Junio 21, 2014, 04:18:26 PM
Y aunque no sea mediante eventos y funciones, ¿no hay ningún código script para ello? Llevo el juego ya bastante avanzado

Gracias por tu respuesta
Título: Re:música BG en menú de pausa
Publicado por: Clamud en Junio 21, 2014, 05:08:42 PM
Hola

Podrías usar una extensión/dll que pueda pausar la música.
Busca en http://www.gmtoolbox.com/ (http://www.gmtoolbox.com/)
De esa lista leí las características de "SAudio" y parece que tiene lo que necesitas, aunque hay otros plugins que tienen características similares.

Otra forma, que se me ocurre, es que podrías hacer que el volumen de la música principal sea cero, y que la música de pausa se reproduzca como efecto de sonido. Pero el método tiene varios inconvenientes, porque la música principal no continuará en la misma posición, y no funcionará si ambas pistas son midi.
Título: Re:música BG en menú de pausa
Publicado por: anse en Junio 21, 2014, 05:34:30 PM
He visto esa extensión, pero su uso es para cargar sonidos de forma externa sin tener que cargarlos desde el programa, para no tener que importarlos por si tarda mucho en cargar el sonido. ¿No existe una función en código que pause el sonido y vuelva a retomarlo al volver a la room?

Gracias a ti también por tu respuesta ;)
Título: Re:música BG en menú de pausa (no solucionado)
Publicado por: MRafX en Junio 21, 2014, 09:38:47 PM
Dentro del game maker 8 no hay forma, la dll ciertamente te carga los archivos externamente, no son complicadas de usar, si real mente quieres hacer pausa, necesitarias usar una
Título: Re:música BG en menú de pausa (no solucionado)
Publicado por: anse en Junio 21, 2014, 10:04:20 PM
Pero ¿puedo cargar un sonido externo y pausar dicho sonido para luego reanudarlo?
Título: Re:música BG en menú de pausa (no solucionado)
Publicado por: penumbra en Junio 21, 2014, 10:08:56 PM
No. El método de cargar el sonido (localmente o externamente) no hace diferencia. GM8 no tiene ninguna función para reanudar el sonido en un punto "intermedio". Esas función sí está disponible nativamente en GM:Stidio, aunque creo recordar que sí hay al menos una dll para GM8 que da la opción de reanudar en un punto, pero no recuerdo su nombre, sólo que llegué a verla en el foro de YoYo. Así sin DLL, con las funciones proipias de GM8, no se puede reanudar.
Título: Re:música BG en menú de pausa (no solucionado)
Publicado por: anse en Junio 21, 2014, 10:34:09 PM
Acabo de mirar por san google algun dll para game maker 8 con más opciones en el sonido, no he encontrado el que me comentas, penumbra :/

Gracias por tu respuesta de todas formas, a ver como me las apaño para simular
Título: Re:música BG en menú de pausa (no solucionado)
Publicado por: penumbra en Junio 21, 2014, 10:39:24 PM
Mmm pues resulta que es la mismísima SAudio. Yo no loa he probado, pero por lo que dice el post, no sólo es para cargar archivos externamente, sino que ahí dice que puede pausar y reanudar e incluso es capaz de devolver la longitud del tema y la posición.

Eso dice, yo no la he usado, pero dejo el enlace al post
http://gmc.yoyogames.com/?showtopic=153450 (http://gmc.yoyogames.com/?showtopic=153450)

Features:

- Init DLL
- Open sound (uses an id so you could have literally 700+ sounds open)
- Play sound
- Play looped
- Pause sound
- Resume sound
- Stop sound
- Stop all sounds
- Sound position
- Sound length
- Sound seek to position
- Sound mode (playing, paused, ect)
- Channels (wav-only compatible)
- Bytes per second (again only compatible with wavs)
- Can play (checks if the sound is fully compatible)
- Load id for recording (creates an id for use in record functions)
- Record (physical recording)
- Save record (saves the recorded file)
- Close sound (frees the memory)
- Close all

Se ve bastante buena para hacer una juego de dj o remix, si es que funciona bien, claro.
Título: Re:música BG en menú de pausa (no solucionado)
Publicado por: anse en Junio 22, 2014, 12:03:39 AM
Acabo de probarlo, pero parece que algo estoy haciendo mal. Me han dado, entre muchos otros, estos 2 scripts que son los que me interesan:

Pausar
// Pauses a file
// Arg 0 = The id of the file.

return external_call(global.Pause,argument0);

aqui he sustituir "argument0" por la id del sonido y me ha quedado tal que asi
// Pauses a file
// Arg 0 = The id of the file.

return external_call(global.Pause,sound_fase1cortado);


Reanudar
// Resumes a paused file
// Arg 0 = The id of the file.

return external_call(global.Resume,argument0);

igual que en el otro, sustituyo:

// Resumes a paused file
// Arg 0 = The id of the file.

return external_call(global.Resume,sound_fase1cortado);


en ambos me salta el mismo error:

ERROR in
action number 2
of Key Press Event for P-key Key
for object ob_pausa:

Illegal argument count calling script "saud_Pause".
Script requires 0 arguments, 5 have been supplied.

___________________________________________
ERROR in
action number 2
of Mouse Event for Left Button
for object obj_continuar:

Illegal argument count calling script "saud_Resume".
Script requires 0 arguments, 5 have been supplied.

esto a que es debido?
Título: Re:música BG en menú de pausa (no solucionado)
Publicado por: anse en Junio 23, 2014, 06:44:10 PM
Siento el doble post, pero necesito una respuesta. ¿Alguien sabe el por qué de esos errores?

Gracias por adelantado
Título: Re:música BG en menú de pausa (no solucionado)
Publicado por: penumbra en Junio 23, 2014, 09:19:21 PM
No sé qué fuente estás consultando o qué ejemplo estés usando, pero me parece que los scripts que pusiste anteriormente no son los adecuados para trabajar con audio directamente. No sé mucho del tema, pero creo que esas son las llamadas externas que usa GM para acceder a las funciones de la DLL, y tú no deberías tocar ni modificar nada de eso o SAudio puede que te quede sin funcionar

Los errores avisan que estás introduciendo un número mayor que el necesario de argumentos. ¿De dónde descargaste la dll? A mi el enlace en el foro de YoYo no me funciona.
Título: Re:música BG en menú de pausa (no solucionado)
Publicado por: anse en Junio 24, 2014, 01:53:40 AM
En ese mismo post, en la última pagina un usuario ha puesto un enlace arreglado. Lo que hice, busqué en internet, fue poner el DLL en el mismo lugar que donde tengo mi proyecto guardado e importar una serie de scripts, en formato gml, que trae el mismo .rar que descargué. En esos scripts al principio pone esa aclaración, en el argument0 debe estar la ID del archivo. No se si lo estoy haciendo mal, pero incluso dejándolo sin tocar sale el mismo error :/

Siento todas las molestias que estoy causando
Título: Re:música BG en menú de pausa (no solucionado)
Publicado por: Guacusio en Junio 24, 2014, 03:50:49 AM
Como te dijo Penumbra, los scripts de Saudio no los debes modificar, lo que debes hacer es hacer una llamada a esos scripts entregándoles los argumentos apropiados. Yo usaba esa dll para incorporar sonidos mp3 a mis proyectos pero cuando cambié a windows 7 x64 la dll dejó de funcionar. Espero que no sea tu caso, yo me puse a buscar una alternativa compatible con Windows 7 x64 y luego de mucho buscar encontré SXMS-3.dll.

Para usar saudio haz esto:

1. Importar los scripts que vienen con el ejemplo editable de GM (lo cual entiendo que ya hiciste).
2. Copiar el archivo saudio.dll a la misma carpeta donde está el editable del juego
3. Inicializar la dll:

saud_Init();

4. Cargar el archivo de música (donde Musica.mp3 es el nombre del archivo que contiene el sonido, o la ruta hasta él; cámbialo según corresponda):

path="Musica.mp3";
saud_Load(path,"sonido1");
if saud_CanPlay("sonido1")!="true"
    show_message("Sonido incompatible");


El string "sonido1" es simplemente un identificador que usa la dll para ese sonido cargado y que se usa al llamar a los scripts.

5. Reproducir el archivo:

saud_Loop("sonido1");

Luego, si quieres pausar el sonido, haces una llamada al script saud_Pause:

saud_Pause("sonido1");

Si quieres que continúe sonando:

saud_Resume("sonido1");

Recuerda cerrar el sonido cuando ya no lo necesites:

saud_Close("sonido1");

O cierra todos si el juego termina:

saud_CloseAll();
Título: Re:música BG en menú de pausa (no solucionado)
Publicado por: anse en Junio 24, 2014, 04:49:35 PM
¡Muchísimas gracias por tu respuesta! ya voy entendiendo más o menos como va esto, pero me aparece el mensaje de sonido incompatible. El script de "saud_CanPlay", al ponerlo en true me determina que el sonido no puede ser cargado? De ser así y que el sonido no sea compatible, ¿Qué formatos son compatibles? he probado tanto con .wav como .mp3 y ambos me dice lo mismo. Tampoco se a ciencia cierta si lo estoy haciendo bien, he creado un objeto "Llamada" para ponerle un evento create y ejecutar el script "saud_Init();" y en el mismo evento create:
path="Musica.mp3";
saud_Load(path,"sonido1");
if saud_CanPlay("sonido1")!="true"
    show_message("Sonido incompatible");

he copiado y pegado el archivo de sonido, tanto el mp3 como el wav a la misma carpeta del editable y he probado cambiando el nombre de "Musica.mp3" por el nombre del archivo, una prueba con el mp3 y otra con el wav.

El resto, al tratarse de una musica producida por un evento colisión, en dicho evento he llamado al script "saud_Play("sonido1")" ya que lo que me interesa es que se reproduzca una sola vez sin repetición. Al pulsar la tecla P, he llamado al script "saud_Pause("sonido1")" y al pulsar el boton "continuar" en el menu de pausa, llamo al script "saud_Resume("sonido1") y al darle al boton de salir al menu principal, "saud_Close("sonido1")". ¿Está todo correcto?
Título: Re:música BG en menú de pausa (no solucionado)
Publicado por: Guacusio en Junio 25, 2014, 07:05:59 AM
Saudio es compatible con mp3 y wav, puedes ver las características en http://gmc.yoyogames.com/?showtopic=153450 (http://gmc.yoyogames.com/?showtopic=153450)

¿Tienes GM 8.0 u 8.1?

De acuerdo a lo que dices que hiciste, debería funcionar. Intenta ver si este ejemplo que te adjunto corre en tu GM.
Título: Re:música BG en menú de pausa (no solucionado)
Publicado por: anse en Junio 26, 2014, 12:23:28 AM
Con ese ejemplo, ejecutado en game maker 8.1, funciona de maravilla, claro que tengo que cargar de forma manual la musica. He observado que funciona unicamente para el mp3, para el wav me detecta incompatibilidad. He probado trasteando este código para hacer una especie de fusión con el otro a la hora de cargar el sonido, pero al cambiar el código, me detecta un el error. Coloco aquí los 3 códigos con el nombre adecuado para el nombre de mi archivo de música, para un análisis más cómodo y directo del problema:

El código que mencionaste al principio (usado en mi juego):
path="Scott Pilgrim vs The World- The Game OST - Scott's Theme.mp3";
saud_Load(path,"sonido1");
if saud_CanPlay("sonido1")!="true"
    show_message("Sonido incompatible");


El código de tu ejemplo (usado en tu propio .gmk):
path=get_open_filename("Supported Files|*.aif;*.aifc;*.aiff;*.asf;*.asx;*.au;*.avi;*.cda;*.m1v;*.m3u;*.mid;*.mp2;*.mp2v;*.mp3;*.mpa;*.mpe;*.mpeg;*.mpg;*.mpv2;*.rmi;*.snd;*.wav;*.wax;*.wm;*.wma;*.wmv;*.wmx;*.wpl;*.wvx","");
if path!="" {
saud_Close("sound");
saud_Load(path,"sound");
if saud_CanPlay("sound")!="true" {
show_message("The sound you have loaded is incompatible.");}
}


El código modificado para que cargue el archivo automáticamente sin tener que buscarlo (usado en tu .gmk):
path=("Scott Pilgrim vs The World- The Game OST - Scott's Theme.mp3");
if path!="" {
saud_Close("sound");
saud_Load(path,"sound");
if saud_CanPlay("sound")!="true" {
show_message("The sound you have loaded is incompatible.");}
}


Hago una aclaración que me parece curiosa. Importando el archivo de música a GM el que me funciona correctamente es el .wav, el mp3 no se me oye, sin embargo, al cargarlo desde SAudio, usando el segundo código y buscándolo manualmente, me funciona correctamente el .mp3, pero el .wav me lo detecta incompatible.
Título: Re:música BG en menú de pausa (no solucionado)
Publicado por: Guacusio en Junio 26, 2014, 04:27:01 AM
A mí tampoco me reconoce los archivos .wav. Te sugiero entonces que uses Saudio solamente para reproducir .mp3 y para los .wav uses el motor de GM.

¿Qué error te detecta? Si no funciona tu código, prueba con esto (hay algunas cosas redundantes en el tuyo):

path="Scott Pilgrim vs The World- The Game OST - Scott's Theme.mp3";
saud_Load(path,"sound");
if saud_CanPlay("sound")!="true" {
show_message("The sound you have loaded is incompatible.");}


Título: Re:música BG en menú de pausa (no solucionado)
Publicado por: anse en Junio 26, 2014, 11:30:51 PM
sigue sin funcionar, he puesto el código que acabas de escribir y me dice que no es compatible. El error es el mismo creado con el código, me aparece el show message. He probado también colocando la ruta completa hasta el archivo y tampoco, si ves que sería más fácil enviarte mi proyecto, dímelo y si quieres te lo envio por MP si es posible, pero probablemente sea más lioso ya que he tenido que recurrir a muchas chapuzas y hay mucha cantidad de objetos y sprites.

Muchas gracias por tomarte la molestia de ayudarme ^^
Título: Re:música BG en menú de pausa (no solucionado)
Publicado por: anse en Junio 27, 2014, 04:37:57 PM
Gaucusio, te he enviado un mensaje privado, pero no me aparece en mensajes enviados. Avísame si te ha llegado correctamente o no. Cuando el problema se haya solucionado, pondremos aquí la solución por si alguien más está interesado en saberla ;)