Hola, antes que nada, me presento porque este es mi primer post. Me gusta esta comunidad, me ayudó a solucionar unos cuantos problemas en el pasado con temas que van desde instalar .dll hasta crear scripts.
Ahora voy directo al tema, hace mucho vi un engine que se llamaba, si mal no recuerdo, "Day and night engine v2.0", y me gustó tanto que lo quise implementar a mi propio juego.
El problema es que usaba tiles, y después de un tiempo decidí que todos los tilesets formaran parte de una carpeta externa (guardados en .png, cada room con su fondo) y la forma que elegí de cargarlos fué con la función "sprite_add", lo cual funcionó muy bien hasta ahora.
El problema es que el juego muy de vez en cuando tiene bajones de fps (cambiando de room, porque me aseguré bastante bien de que no haya lag de ninguna forma mas allá de eso), y la función me da como error "-1", indicando que no se cargó correctamente.
Si sirve de algo, comparto el código que utilizo (bastante lineal, por cierto):
Evento "Create" y "Room start":
[spoiler]
x=0
y=0
//Story
if (room)= rStory1{
global.spritee1=sprite_add(working_directory+"/Backgrounds/InsideFront/01.png",1,false,false,0,0)}
//Tutorial
if (room)= tutorial1{
global.spritee1=sprite_add(working_directory+"/Backgrounds/World0/01.png",1,false,false,0,0)}
if (room)= tutorial2{
global.spritee1=sprite_add(working_directory+"/Backgrounds/World0/02.png",1,false,false,0,0)}
if (room)= tutorial3{
global.spritee1=sprite_add(working_directory+"/Backgrounds/World0/03.png",1,false,false,0,0)}
sprite_index=global.spritee1
[/spoiler]
Evento "Step":
[spoiler]
if global.enableEffects[0]=1 or global.enableEffects[1]=1 or global.enableEffects[2]=1{
if !instance_exists(dn_controller){
if fps!=0 {
image_blend=c_white
break}
}
if instance_exists(dn_controller){
if fps!=0 {
image_blend=draw_get_color()
break}
}
}
[/spoiler]
Busco la manera de poder hacer que, en caso de que la función sprite_add devuelva "-1", por lo menos, que lo cargue un momento después. Otra solución menos vistosa sería que el sistema se resetee al cambiar de room, así aunque sea se arregla hasta cierto nivel.
Una idea que se me ocurrió es pre-cargar a todos los fondos con un objeto general, pero todavía no lo implementé y tengo mis dudas.
PD: Acuérdense que estoy cargando fondos .png de 800*600. Esta es la razón por la que a veces no se carga y se queda en "global.spritee1=-1".
Desde ya, muchísimas gracias por leer y tomarse el tiempo de ayudarme, lo estimo mucho.
Ahora voy directo al tema, hace mucho vi un engine que se llamaba, si mal no recuerdo, "Day and night engine v2.0", y me gustó tanto que lo quise implementar a mi propio juego.
El problema es que usaba tiles, y después de un tiempo decidí que todos los tilesets formaran parte de una carpeta externa (guardados en .png, cada room con su fondo) y la forma que elegí de cargarlos fué con la función "sprite_add", lo cual funcionó muy bien hasta ahora.
El problema es que el juego muy de vez en cuando tiene bajones de fps (cambiando de room, porque me aseguré bastante bien de que no haya lag de ninguna forma mas allá de eso), y la función me da como error "-1", indicando que no se cargó correctamente.
Si sirve de algo, comparto el código que utilizo (bastante lineal, por cierto):
Evento "Create" y "Room start":
[spoiler]
x=0
y=0
//Story
if (room)= rStory1{
global.spritee1=sprite_add(working_directory+"/Backgrounds/InsideFront/01.png",1,false,false,0,0)}
//Tutorial
if (room)= tutorial1{
global.spritee1=sprite_add(working_directory+"/Backgrounds/World0/01.png",1,false,false,0,0)}
if (room)= tutorial2{
global.spritee1=sprite_add(working_directory+"/Backgrounds/World0/02.png",1,false,false,0,0)}
if (room)= tutorial3{
global.spritee1=sprite_add(working_directory+"/Backgrounds/World0/03.png",1,false,false,0,0)}
sprite_index=global.spritee1
[/spoiler]
Evento "Step":
[spoiler]
if global.enableEffects[0]=1 or global.enableEffects[1]=1 or global.enableEffects[2]=1{
if !instance_exists(dn_controller){
if fps!=0 {
image_blend=c_white
break}
}
if instance_exists(dn_controller){
if fps!=0 {
image_blend=draw_get_color()
break}
}
}
[/spoiler]
Busco la manera de poder hacer que, en caso de que la función sprite_add devuelva "-1", por lo menos, que lo cargue un momento después. Otra solución menos vistosa sería que el sistema se resetee al cambiar de room, así aunque sea se arregla hasta cierto nivel.
Una idea que se me ocurrió es pre-cargar a todos los fondos con un objeto general, pero todavía no lo implementé y tengo mis dudas.
PD: Acuérdense que estoy cargando fondos .png de 800*600. Esta es la razón por la que a veces no se carga y se queda en "global.spritee1=-1".
Desde ya, muchísimas gracias por leer y tomarse el tiempo de ayudarme, lo estimo mucho.