Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: desplo en Marzo 27, 2016, 09:21:01 PM

Título: ¿Realizar un menu de carga?
Publicado por: desplo en Marzo 27, 2016, 09:21:01 PM
Estoy utilizando varios sprites y objetos en mi juego pero para evitar que el juego de ralentice quiero hacer un menú que cargue todo al principio o en cada misión

Título: Re:¿Realizar un menu de carga?
Publicado por: anael en Marzo 27, 2016, 09:33:33 PM
creas un objeto por ejemplo obj_carga lo cual llevara en el evento create

t=0;
depth=-100;

y en el evento draw

var xx=view_xview[0],yy=view_yview[0],xx2=view_wview,yy2=view_hview;

if t<100{
t+=2
draw_set_color(c_black);
draw_rectangle(xx,yy,xx+xx2,yy2,0)
draw_set_color(c_white);
draw_text(xx+(xx2/2),yy+(yy2/2),"CARGANDO...")
}else{instance_destroy()}

y solo queda por ponerlo en la room ;)
Título: Re:¿Realizar un menu de carga?
Publicado por: bygdle en Marzo 27, 2016, 09:48:29 PM
En realidad, un menú de carga que muestre la carga tal y como se lleva es imposible. GM no permite obtener estos valores ni administrarlos a tí mismo.
Lo único que puedes hacer es una pseudobarra de carga, que ande ahí pero en realidad no mostrará el progreso real D:
Título: Re:¿Realizar un menu de carga?
Publicado por: desplo en Marzo 27, 2016, 10:34:28 PM
Cita de: NiuWeb en Marzo 27, 2016, 09:48:29 PM
En realidad, un menú de carga que muestre la carga tal y como se lleva es imposible. GM no permite obtener estos valores ni administrarlos a tí mismo.
Lo único que puedes hacer es una pseudobarra de carga, que ande ahí pero en realidad no mostrará el progreso real D:

La verdad no me importaria que muestre una barra en donde vaya mostrando el valor real de la carga de todos los objetos. Simplemente que diga "Cargando..." pero que realmente se esten cargando los elementos
Título: Re:¿Realizar un menu de carga?
Publicado por: desplo en Marzo 27, 2016, 10:36:16 PM
Cita de: anael en Marzo 27, 2016, 09:33:33 PM
creas un objeto por ejemplo obj_carga lo cual llevara en el evento create

t=0;
depth=-100;

y en el evento draw

var xx=view_xview[0],yy=view_yview[0],xx2=view_wview,yy2=view_hview;

if t<100{
t+=2
draw_set_color(c_black);
draw_rectangle(xx,yy,xx+xx2,yy2,0)
draw_set_color(c_white);
draw_text(xx+(xx2/2),yy+(yy2/2),"CARGANDO...")
}else{instance_destroy()

y solo queda por ponerlo en la room ;)


Gracias, me funciono de mucho. Pero la verdad yo lo que necesito es crear una pausa en lo que los objetos verdaderamente esten cargando

Gracias por la ayuda  :D
Título: Re:¿Realizar un menu de carga?
Publicado por: bygdle en Marzo 27, 2016, 10:38:10 PM
Esto también es imposible, GM se encarga él solo de gestionar la carga de objetos. Es decir que cargan cuando las salas inican, no puedes hacer que cargen antes. Es imposible.
Título: Re:¿Realizar un menu de carga?
Publicado por: correojon en Marzo 27, 2016, 10:56:50 PM
Puedes hacerlo en cierto modo si cargas los recursos desde archivos fuera del juego. Para simular el progreso de carga, puedes dividir la carga en varios steps de manera que los recursos se vayan cargando en diferentes pasos. Por ejemplo puedes hacer algo así (esto iría en un evento draw):
switch (carga){

case 0://Preparar carga
draw_text(x, y, "Cargando recursos");//Puedes dibujar una barra de carga o lo que quieras
carga = 1;
break;

case 1://Cargar sprites
draw_text(x, y, "Cargando sprites");//Aquí podrías dibujar la barra más llena

spritePresonaje1 = sprite_add(...);
spritePersonaje2 = sprite_add(...);
...
carga  = 2;
break;

case 2://Cargar fondos
draw_text(x, y, "Cargando fondos");
fondo1 = background_add(...);
fondo2 = background_add(...);
...
carga = 3;
break;

//Repetir para sonidos, música, archivos de texto, etc...

case n://FIN, ir al nivel 1
room_goto(nivel1);
break;

}


No tienes control sobre la carga de cada recurso, pero de esta forma puedes simular una barra de carga. En un caso extremo, si en cada paso de carga cargas sólo un recurso (1 sprite, 1 fondo...) puedes hacer que los pasos sean más pequeños y hacer una carga más suave que vaya llenando la barra poco a poco, aunque el trabajo para hacer esto puede ser tremendo y no lo recomiendo, la verdad. Idealmente podrías calcular el tamaño total de tus recursos y aumentar la barra en función del tamaño de los recursos cargados.

Como he dicho creo que es mucho trabajo para algo que no merece la pena, es mejor emplear el tiempo en organizar mejor tus recursos y minimizar los tiempos de carga.
Título: Re:¿Realizar un menu de carga?
Publicado por: somnus en Marzo 28, 2016, 07:06:23 AM
Cita de: correojon en Marzo 27, 2016, 10:56:50 PM
Puedes hacerlo en cierto modo si cargas los recursos desde archivos fuera del juego. Para simular el progreso de carga, puedes dividir la carga en varios steps de manera que los recursos se vayan cargando en diferentes pasos. Por ejemplo puedes hacer algo así (esto iría en un evento draw):
switch (carga){

case 0://Preparar carga
draw_text(x, y, "Cargando recursos");//Puedes dibujar una barra de carga o lo que quieras
carga = 1;
break;

case 1://Cargar sprites
draw_text(x, y, "Cargando sprites");//Aquí podrías dibujar la barra más llena

spritePresonaje1 = sprite_add(...);
spritePersonaje2 = sprite_add(...);
...
carga  = 2;
break;

case 2://Cargar fondos
draw_text(x, y, "Cargando fondos");
fondo1 = background_add(...);
fondo2 = background_add(...);
...
carga = 3;
break;

//Repetir para sonidos, música, archivos de texto, etc...

case n://FIN, ir al nivel 1
room_goto(nivel1);
break;

}


No tienes control sobre la carga de cada recurso, pero de esta forma puedes simular una barra de carga. En un caso extremo, si en cada paso de carga cargas sólo un recurso (1 sprite, 1 fondo...) puedes hacer que los pasos sean más pequeños y hacer una carga más suave que vaya llenando la barra poco a poco, aunque el trabajo para hacer esto puede ser tremendo y no lo recomiendo, la verdad. Idealmente podrías calcular el tamaño total de tus recursos y aumentar la barra en función del tamaño de los recursos cargados.

Como he dicho creo que es mucho trabajo para algo que no merece la pena, es mejor emplear el tiempo en organizar mejor tus recursos y minimizar los tiempos de carga.



tambien habia pensando en una solucion como esta, pero me parece poco viable, aunque haciendo esto no deberia repercutir en el performance del juego, voy a estudiar mas este tema porque para proyectos grandes seria bueno contar con algo asi...