Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: serviciosadistancia en Septiembre 17, 2015, 11:53:11 PM

Título: Problema de memoria
Publicado por: serviciosadistancia en Septiembre 17, 2015, 11:53:11 PM
Hola amigos, estoy teniendo un problema que nunca antes había tenido, tengo un juego con físicas y varios objetos por room, para probar las rooms puse un boton que pasa a la siguiente room, la primera que juego siempre se ve bien, o mejor dicho las primeras, luego de la cuarta o quinta se ve todo lento, si cambio el orden de las rooms sucede lo mismo, las primeras que juego  (tengan más o menos objetos) se juegan bien y después todo se pone lento. Probé en modo debug y efectivamente la memoria consumida aumenta mucho cuando se traba todo, no sé que debo arreglar...
Título: Re:Problema de memoria
Publicado por: penumbra en Septiembre 18, 2015, 01:49:54 AM
Lo primero es revisar el número de instancias activas. Para eso se puede usar el debugger o las funciones como instance_count/instance_number. Lo más probable es que

a) Hay código ineficiente/funciones demandantes que se están ejecutando una y otra vez en STEP
b) Se están creando demasiadas instancias (por error o por un mal diseño/implementación).
c) se están creando (por error o por un mal diseño/implementación) demasiados recursos dinámicos , tales como superficies, estructuras de datos, inis, etc)
d) no se están liberando recursos cuando ya no se les necesita.

Una manera de encontrar al objeto u objetos culpables sería usar la función phy_active() para desactivar objetos con física "sospechosos". También comentar los lugares donde se use la función instance_create para ver si al detener la creación de instancias se detiene el aumento en el consumo de ram (si es que se crean muchas por error). Otra manera es mandar algun aviso cuando el número de instancias de un objeto excede un límite.
[gml]
if (instance_number(obj_X) > 50)
     draw_text(x, y, "demasiadas instancias del obj_X")
[/gml]
Aunque lo mismo (o similar) se puede hacer en el debugger.

YoYo recomienda usar POCAS instancias de objetos con física, ya que éstos (y las funciones basadas en física) demandan mayor número de cálculos que los objetos y funciones normales.