Octubre 07, 2017, 10:46:01 AM Ultima modificación: Octubre 07, 2017, 03:30:41 PM por Marth
Veran, estoy teniendo problemas con uno de mis juegos, pues a veces al avanzar a otra room, subitamente se cuelga.
Entre misión y misión se debe ir a una base y de ahi al posterior nivel.
Me suele pasar una vez supero el segundo nivel.
Tambien me ocurre si tras hacer el primer nivel guardo partida, cargo y intento ir al suguiente nivel.
Ademas, el room que hace de base es persistente.

Edito: Probe otro juego en el que tambien se va a un Hangar entre misión y misión y en cambio en ese juego funciono. Como en aquel juego ningun room era persistente, probe a desactivar la persistencia en mi primer juego, pero el error aparecio igualmente.

Ejecuta el juego en modo depuración, haz un profile y activa la gráfica de uso de memoria y procesador.

#2 Octubre 07, 2017, 03:46:59 PM Ultima modificación: Octubre 07, 2017, 03:54:31 PM por Marth
Cita de: Clamud en Octubre 07, 2017, 03:23:14 PM
Ejecuta el juego en modo depuración, haz un profile y activa la gráfica de uso de memoria y procesador.

He obtenido esto haciendo lo que sugerias.

#3 Octubre 07, 2017, 04:45:44 PM Ultima modificación: Octubre 08, 2017, 01:54:43 AM por Marth
Añado otra cosa, he probado a retirar algunos objetos del room y ahora si va bien. Puede ser que el problema sea que se hayan corrompido algunos objetos o sprites.
Edito: Parece ser que el problema era una matriz que se desborda al ampliarla, que casualmente ocurre en el momento en el que se da el retorno a la base.

El profile muestra que el problema no está en la carga del procesador; el valor de RoomSpeedSync es grande, eso quiere decir que al programa le sobra tiempo para descansar.
Lo más seguro es que el problema esté en el uso de memoria. ¿Cómo se amplía la matriz que mencionas?

Activa la gráfica para poder ver en qué momento aumenta el uso de memoria. En una sección del debugger da clic derecho y selecciona Set Type -> Graph.

El juego ya no tiene problema. Era aquel vector que al ampliarlo se desbordaba. Lo he solucionado creando una variable de indice que se incrementa con cada ampliación (antes usaba una función que calculaba la longitud).
Dare el tema por solucionado.