Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Mega G en Febrero 05, 2015, 02:05:31 AM

Título: Tarda demasiado en cargar en Android
Publicado por: Mega G en Febrero 05, 2015, 02:05:31 AM
Hola a todos, necesito vuestra ayuda  ???

Tengo un problema bastante importante: Mi juego en GMStudio tarda demasiado en cargar en Android (en mi Samsung Galaxy S4 tarda 2 minutos).
Lo he exportado SIN YoYo Compiler porque con YoYo Compiler el juego tarda más de 15 minutos.

El juego contiene 840 Sprites, 77 Backgrounds, 1300 Rooms, casi 4000 Objects y 140 Sounds.
Al ser un juego retro los gráficos son de baja resolución por lo que la carpeta de Sprites ocupa apenas 1.5 MB y Backgrounds ocupa 0.2 MB. No creo que ese sea el problema.

Antes la APK me ocupaba unos 100 MB pero remplacé todos los sonidos por uno muy pequeño que dura 1 segundo y ahora el juego pesa 20MB. Pero sigue tardando exactamente lo mismo en cargar (lo he cronometrado).

He leído por Internet que cargando los Sprites y Backgrounds externamente cargaba más rápido pero las aplicaciones para Android se descargan en 1 sólo archivo APK en Google Play por lo que no podré llevarlo a cabo. También he leído que cambiando los parámetros de los Grupos de Texturas conseguías mejor rendimiento pero no he acabado de entender cómo configurarlo correctamente y no sé si eso afecta a la carga inicial o durante el juego.

Sospecho que el exceso de Rooms tiene parte de culpa pues la carpeta ocupa 90MB.

¡Muchas gracias por adelantado!
¡Saludos!

PD: Quiero añadir que en PC el juego tarda 10-20 segundos en cargar.
Título: Re:Tarda demasiado en cargar en Android
Publicado por: desplo en Febrero 05, 2015, 02:49:50 AM
¿Que version de Game Maker tienes?, ¿En que resolucion tienes los rooms?.

Que pese 1mb o 100mb no va a cambiar el rendimiento del juego.

Bajale la ''texture pages'' al menos a menos de 1024x1024.
Título: Re:Tarda demasiado en cargar en Android
Publicado por: Mega G en Febrero 05, 2015, 02:56:30 AM
Cita de: desplo en Febrero 05, 2015, 02:49:50 AM
¿Que version de Game Maker tienes?, ¿En que resolucion tienes los rooms?.

Que pese 1mb o 100mb no va a cambiar el rendimiento del juego.

Bajale la ''texture pages'' al menos a menos de 1024x1024.

Game Maker Studio 1.4, la más reciente. Las rooms tienen muchos tamaños distintos pero las views son todas de 240x160.
El problema no es del rendimiento del juego. Mi problema está en lo que tarda en cargar el juego, es decir en abrirse.

De todas formas ahora bajaré la "texture pages" para ver si mejora.

Saludos y gracias por ayudar.

EDIT: He cambiado a 512x512 y sigue igual. Tarda exactamente 2 minutos en cargar. (Además ahora que uso páginas de texturas más pequeñas hay un background que hacía de tileset que superaba ese tamaño y ahora se ve mal).
Título: Re:Tarda demasiado en cargar en Android
Publicado por: penumbra en Febrero 05, 2015, 06:49:15 AM
No creo que la optimización que puedas hacer en cuanto a páginas de textura tenga relación con el problema (pero si meequivoco, hacérmelo notar). El efecto de un juego con páginas de textura optimizadas es que el proceso de dibujo en pantalla se hace sin contratiempos, pero el problema que mencionas no tiene nada que ver con el dibujo ni con las páginas de textura, ni siquiera me parece que sea un problema de rendimiento (me imagino que el juego, una vez cargado, corre sin lag, a menos que sea un dispositivo con características muy bajas, pienso yo).

Más bien lo veo como un problema propio del motor de Game Maker. Creo que todos o casi todos los juegos comerciales de las grandes compañías no cargan el total de recursos al inicio, sino que es una carga inteligente en donde se va cargando a medida que el propio juego lo requiere. Desconozco cómo carga recursos GM, pero me inclino a pensar que carga todo al principio. No lo puedo asegurar y a lo mejor me equivoco, pero si es como pienso, me parece una barbaridad. Ojalá alguien con más experiencia pueda aclarar esto.

Usar recursos externos es posible en Android, para eso están los Included Files, además del APK, se pueden usar los archivos de extensión con lo que se pueden crear juegos (para android) incluso de varios GIGABYTES.

La única solución que se me ocurre (ojalá haya otras) es precisamente recurrir a archivos externos, y que al comienzo de cada room, o con cada cierto progreso, se vayan cargando los recursos de los rooms más inmediatos. Sin embargo, veo dos inconvenientes:

a) El método se debería implementar a la par que el juego se va creando, o en sus primeras etapas. Tratar de implementar el sistema en un juego casi completo y con tantas rooms quizás sea problemático.

b) A mi modo de ver, no es una solución recomendable: por un lado, la solución implica cargar externamente archivos, pero por otro lado, la misma gente de YoYo advierte que cargar sprites (o cualquier recurso gráfico) de manera externa NO ES RECOMENDABLE (sobre todo en dispositivos móviles) pues afecta el rendimiento gráfico. Entonces tenemos que lo que parece la única solución, no se debe usar. (ojalá alguien dé una solución mejor)

Otra cosa que se me ocurre es que los rooms se creen "al vuelo", es decir, al comienzo del juego sólo hay un room inicial (o los mínimos que se necesiten para comenzar a jugar) y después sería cuestión de ir construyendo dentro del mismo juego los rooms a medida que se vayan necesitando,  mediante las funciones como room_add, room_instance_add, room_set_background, etc. De igual manera, para juegos pequeños puede funcionar, pero veo difícil aplicar este principio con juegos grandes como el tuyo.

En resumen, las opciones que se me ocurren ahora no son muy buenas, si alguien pudiera dar mejores alternativas, creo que más de uno le estaríamos agradecidos (o si tu mismo encuentras una solucion, Mega G, no dudes en compartirla)
Título: Re:Tarda demasiado en cargar en Android
Publicado por: Mega G en Febrero 05, 2015, 12:55:17 PM
Cita de: penumbra en Febrero 05, 2015, 06:49:15 AM
No creo que la optimización que puedas hacer en cuanto a páginas de textura tenga relación con el problema (pero si meequivoco, hacérmelo notar). El efecto de un juego con páginas de textura optimizadas es que el proceso de dibujo en pantalla se hace sin contratiempos, pero el problema que mencionas no tiene nada que ver con el dibujo ni con las páginas de textura, ni siquiera me parece que sea un problema de rendimiento (me imagino que el juego, una vez cargado, corre sin lag, a menos que sea un dispositivo con características muy bajas, pienso yo).

Más bien lo veo como un problema propio del motor de Game Maker. Creo que todos o casi todos los juegos comerciales de las grandes compañías no cargan el total de recursos al inicio, sino que es una carga inteligente en donde se va cargando a medida que el propio juego lo requiere. Desconozco cómo carga recursos GM, pero me inclino a pensar que carga todo al principio. No lo puedo asegurar y a lo mejor me equivoco, pero si es como pienso, me parece una barbaridad. Ojalá alguien con más experiencia pueda aclarar esto.

Usar recursos externos es posible en Android, para eso están los Included Files, además del APK, se pueden usar los archivos de extensión con lo que se pueden crear juegos (para android) incluso de varios GIGABYTES.

La única solución que se me ocurre (ojalá haya otras) es precisamente recurrir a archivos externos, y que al comienzo de cada room, o con cada cierto progreso, se vayan cargando los recursos de los rooms más inmediatos. Sin embargo, veo dos inconvenientes:

a) El método se debería implementar a la par que el juego se va creando, o en sus primeras etapas. Tratar de implementar el sistema en un juego casi completo y con tantas rooms quizás sea problemático.

b) A mi modo de ver, no es una solución recomendable: por un lado, la solución implica cargar externamente archivos, pero por otro lado, la misma gente de YoYo advierte que cargar sprites (o cualquier recurso gráfico) de manera externa NO ES RECOMENDABLE (sobre todo en dispositivos móviles) pues afecta el rendimiento gráfico. Entonces tenemos que lo que parece la única solución, no se debe usar. (ojalá alguien dé una solución mejor)

Otra cosa que se me ocurre es que los rooms se creen "al vuelo", es decir, al comienzo del juego sólo hay un room inicial (o los mínimos que se necesiten para comenzar a jugar) y después sería cuestión de ir construyendo dentro del mismo juego los rooms a medida que se vayan necesitando,  mediante las funciones como room_add, room_instance_add, room_set_background, etc. De igual manera, para juegos pequeños puede funcionar, pero veo difícil aplicar este principio con juegos grandes como el tuyo.

En resumen, las opciones que se me ocurren ahora no son muy buenas, si alguien pudiera dar mejores alternativas, creo que más de uno le estaríamos agradecidos (o si tu mismo encuentras una solucion, Mega G, no dudes en compartirla)


Gracias por la ayuda, en efecto el juego una vez cargado funciona perfecto. Estoy casi seguro que Game Maker carga todo al principio y por eso tengo este problema :(

La solución que propones de que las rooms se creen al vuelo me parece muy buena idea aunque complicada de llevar a cabo porque tendré que revisar todos los códigos que hacen cambiar de room para hacer que antes cree esa room.

Sin embargo me parece más fácil de programar una nueva idea que se me acaba de ocurrir derivada de la tuya: En vez de tener pocas rooms y crear las demás mediante código creo que voy a dejarlas todas pero las vaciaré completamente y mediante código las volveré a llenar cada vez que entres en una de ellas.

He visto que los archivos de las rooms que crea Game Maker Studio son muy fáciles de leer, no están encriptados. Aquí es donde crea la instancia del objeto del jugador:

<instance objName="obj_player" x="0" y="0" name="inst_E2DBA0F0" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>

Así que podría incluso aprovechar los archivos de las rooms que Game Maker genera, o crear un programa que los simplifique para mi juego.

Iré haciendo pruebas y ya comentaré los resultados aquí.

Muchas gracias por todo Penumbra :)
¡un saludo!
Título: Re:Tarda demasiado en cargar en Android
Publicado por: eams1986 en Febrero 08, 2015, 05:13:37 PM
Hola Mega G primeramente un saludo ,yo tuve ese problema ya tiempo game maker estaba mas lento que una tortortuga desconozco el pontencial de su maquina
Mi maquina aun con 32 gb ram de memoria veia que game maker era una tortuga entonces entonces dije que pasa con esto es un desastre entonces tuve que limpiar la maquina e instalar de nuevo el game maker con todo y JDK,SDK +java y ahora veo un motor bueno no me tarda mas de 10 segundo en correr un juego en android .
Cuando quiereas puedes utilizar mi maquina para que pruebe a ver si es eso usa team viewer y usted mismo se encarga de borrar todos sus archivos de mi PC y listo .
A ver si eso el problema  ;D
Título: Re:Tarda demasiado en cargar en Android
Publicado por: Mega G en Febrero 08, 2015, 06:49:13 PM
Cita de: eams1986 en Febrero 08, 2015, 05:13:37 PM
Hola Mega G primeramente un saludo ,yo tuve ese problema ya tiempo game maker estaba mas lento que una tortortuga desconozco el pontencial de su maquina
Mi maquina aun con 32 gb ram de memoria veia que game maker era una tortuga entonces entonces dije que pasa con esto es un desastre entonces tuve que limpiar la maquina e instalar de nuevo el game maker con todo y JDK,SDK +java y ahora veo un motor bueno no me tarda mas de 10 segundo en correr un juego en android .
Cuando quiereas puedes utilizar mi maquina para que pruebe a ver si es eso usa team viewer y usted mismo se encarga de borrar todos sus archivos de mi PC y listo .
A ver si eso el problema  ;D

Hola eams1986, creo que mi APK tarda 2 minutos en cargar porque tiene demasiadas rooms (1300). El problema es que los juegos de Game Maker cargan todos los recursos al inicio. Sería mejor si cargaran a medida que el juego los necesita y no todos de golpe.

Por eso estoy borrando todas las rooms a ver si así se soluciona. Crearé un sistema para que se vayan añadiendo únicamente en el momento en que vayas a entrar en ellas.
En cuanto lo pruebe, si no se soluciona de mi manera entonces tendré en cuenta tu ofrecimiento.

Muchas gracias.
¡Saludos!
Título: Re:Tarda demasiado en cargar en Android
Publicado por: jose_vasquez1994 en Febrero 11, 2015, 07:20:46 AM
Hola recientemente desarrollé un juego para android https://play.google.com/store/apps/details?id=com.Breakfastteam.DreamPanda&hl=es
Era para mi novia  pero lo mejore es mi primer juego y larga historia la cosa es que las rooms son enormes porque quería una resolución full hd y las vistas igual por lo tanto las texturas también tenían un buen tamaño y densidad de píxeles la cosa es que en mi tablet que es el único dispositivo que cronomete en los celulares era mas tardado cargaba en un minuto 15 segundos en levantar  :o entonces lo que hice fue primero administrar las paginas de texturas y el tamaño de estas luego de un día ordenando el juego levanto en mi tablet en aproximadamente 3-5 segundos pero bueno mi tablet es quad core y tiene 2gb de RAM hay otro problema aun mas detestable si no administras los paquetes de texturas ni los tamaños es la aplicación se cerrara en dispositivos de 512 o 256 de RAM debido a que las paginas se cargan de acuerdo al conjunto de texturas que necesitas de lo contrario cargara todo al inicio y saturara el dispositivo y es muy fácil administrar las paginas de texturas solo son conjuntos si gm necesita una textura de ese conjunto carga la pagina de lo contrario no ahora lo difícil es organizarlo bien y aun mas si no lo habías pensado desde el principio pero solo es cuestión de tiempo y ten mucho cuidado que no carge paginas de por gusto entre mejor lo ordenes mas eficiente será así y recuerda limpiar la room con el codigo draw_texture_flush();  en el evento start de la primera instancia que se crea de cada habitación para saber cual es la primera instancia en la ventana de la room hY un icono de lista ahí esta en orde de creación las instancias si no usas ese código sera de por gusto la administración de las paginas de texturas ojala te ayude y felicidades se ve que has trabajado duro e intenta usar el yyc obtendrás un resultado mucho mejor
Título: Re:Tarda demasiado en cargar en Android
Publicado por: Wadk en Febrero 11, 2015, 08:46:14 AM
Cita de: Mega G en Febrero 08, 2015, 06:49:13 PM
Cita de: eams1986 en Febrero 08, 2015, 05:13:37 PM
Hola Mega G primeramente un saludo ,yo tuve ese problema ya tiempo game maker estaba mas lento que una tortortuga desconozco el pontencial de su maquina
Mi maquina aun con 32 gb ram de memoria veia que game maker era una tortuga entonces entonces dije que pasa con esto es un desastre entonces tuve que limpiar la maquina e instalar de nuevo el game maker con todo y JDK,SDK +java y ahora veo un motor bueno no me tarda mas de 10 segundo en correr un juego en android .
Cuando quiereas puedes utilizar mi maquina para que pruebe a ver si es eso usa team viewer y usted mismo se encarga de borrar todos sus archivos de mi PC y listo .
A ver si eso el problema  ;D

Hola eams1986, creo que mi APK tarda 2 minutos en cargar porque tiene demasiadas rooms (1300). El problema es que los juegos de Game Maker cargan todos los recursos al inicio. Sería mejor si cargaran a medida que el juego los necesita y no todos de golpe.

Por eso estoy borrando todas las rooms a ver si así se soluciona. Crearé un sistema para que se vayan añadiendo únicamente en el momento en que vayas a entrar en ellas.
En cuanto lo pruebe, si no se soluciona de mi manera entonces tendré en cuenta tu ofrecimiento.

Muchas gracias.
¡Saludos!
Hombre, estoy al borde de mi asiento. ¿Funcionó o no?
Título: Re:Tarda demasiado en cargar en Android
Publicado por: Mega G en Febrero 11, 2015, 07:20:06 PM
Finalmente he borrado casi todas las rooms. De 1300 han quedado 30. Pero sigue tardando exactamente lo mismo, 2 minutos en cargar  :(
Así que parece que la cantidad de rooms no ralentiza la carga al principio. Por una parte me alegro porque así no tendré que hacer ningún cambio en este aspecto pero por otra sigo con la duda de qué falta.

jose_vasquez1994, me interesa tu solución porque veo que tuviste el mismo problema que estoy teniendo. ¿Al administrar las paginas de texturas haciendo diferentes grupos tu juego cargó más rápido al inicio? Tiene lógica lo que dices de que se satura el juego si tiene que cargarlas todas al inicio, que es lo que me debe estar pasando.
Seguiré tu consejo, muchísimas gracias por tu aporte.

Al haberme pasado a GMStudio recientemente estas nuevas funciones no las conocía y por eso me pasan estas cosas.

A ver si por fin lo soluciono de una vez. Como siempre, si consigo una mejora la comentaré aquí.

¡Saludos y gracias a todos los que habéis comentado!
Título: Re:Tarda demasiado en cargar en Android
Publicado por: penumbra en Febrero 11, 2015, 08:29:37 PM
Interesante, parece entonces que GMS crea todas las páginas de textura del juego al comienzo, y parece que se trata de un proceso relativamente exigente(dependiendo del número de gráficos y su tamaño). De ser así, para los que andamos con la idea de hacer juegos medianos o grandes, sería casi obligatorio ponerse a ordenar grupos de texturas.

Bueno, al igual que Wadk, esperaré los resultados de las pruebas, Mega G. Ojalá sean buenos resultados.
Título: Re:Tarda demasiado en cargar en Android
Publicado por: matiascarpello en Febrero 11, 2015, 10:18:05 PM
Estas utilizando el texture group para optimizar el juego? Es decir, pareciera que hay muchas páginas de texturas.

Yo tengo varios dispositivos con android, ¿Lo tenes publicado al juego en Google play para que lo pruebe en mis dispositivos? Así te digo cuanto tarda en cada uno de ellos.
Título: Re:Tarda demasiado en cargar en Android
Publicado por: Mega G en Febrero 11, 2015, 10:28:01 PM
Cita de: matiascarpello en Febrero 11, 2015, 10:18:05 PM
Estas utilizando el texture group para optimizar el juego? Es decir, pareciera que hay muchas páginas de texturas.

Yo tengo varios dispositivos con android, ¿Lo tenes publicado al juego en Google play para que lo pruebe en mis dispositivos? Así te digo cuanto tarda en cada uno de ellos.

Hasta el momento tenía sólo un grupo que era el "Default".

Qué suerte que tengas tantos dispositivos, cuando consiga arreglar el problema y reducir el tiempo de carga si te parece bien podría enviarte el juego para que me dijeras cuánto te tarda. De momento no está en Google Play precisamente porque si el juego tarda tanto en cargar nadie lo querría jugar.

¡Gracias y un saludo!
Título: Re:Tarda demasiado en cargar en Android
Publicado por: matiascarpello en Febrero 11, 2015, 10:49:40 PM
Cita de: Mega G en Febrero 11, 2015, 10:28:01 PM
Cita de: matiascarpello en Febrero 11, 2015, 10:18:05 PM
Estas utilizando el texture group para optimizar el juego? Es decir, pareciera que hay muchas páginas de texturas.

Yo tengo varios dispositivos con android, ¿Lo tenes publicado al juego en Google play para que lo pruebe en mis dispositivos? Así te digo cuanto tarda en cada uno de ellos.

Hasta el momento tenía sólo un grupo que era el "Default".

Qué suerte que tengas tantos dispositivos, cuando consiga arreglar el problema y reducir el tiempo de carga si te parece bien podría enviarte el juego para que me dijeras cuánto te tarda. De momento no está en Google Play precisamente porque si el juego tarda tanto en cargar nadie lo querría jugar.

¡Gracias y un saludo!

Tengo 4 dispositivos. Un celular Game baja, un celular gama media, uno de Gama alta y una tablet. El secreto cuando programes para Android es siempre ponerte como meta optimizar tu juego para los celulares de gama baja o gama media.

Como ya te dijeron anteriormente, gamemaker en cada room por defecto carga todas las páginas de texturas. Cuando se tienen pocas páginas de texturas no es necesario utilizar el manager texture group, pero cuando tienes muchas páginas es necesario hacerlo.

Aunque me parece que tu problema es por los sonidos. En Gamemaker 1.4 se añadió la características de audio group, que justamente, es cumple la misma función que el texture group. Los sonidos son los que más cargan a la hora de compaginar el juego así que yo te diría que optimices tus sonidos en grupos ya que según tu comentaste que tienes 140 sonidos lo cual es mucho.

Supongo que si la gente de yoyogame añadió la opción de audio group es porque los sonidos por defectos también cargan todos a la vez. Estaría bueno que alguien confirme como es con el tema de los sonidos si cargan todos a la vez por defecto como las texturas.
Título: Re:Tarda demasiado en cargar en Android
Publicado por: Mega G en Febrero 11, 2015, 11:21:09 PM
Cita de: matiascarpello en Febrero 11, 2015, 10:49:40 PM
Cita de: Mega G en Febrero 11, 2015, 10:28:01 PM
Cita de: matiascarpello en Febrero 11, 2015, 10:18:05 PM
Estas utilizando el texture group para optimizar el juego? Es decir, pareciera que hay muchas páginas de texturas.

Yo tengo varios dispositivos con android, ¿Lo tenes publicado al juego en Google play para que lo pruebe en mis dispositivos? Así te digo cuanto tarda en cada uno de ellos.

Hasta el momento tenía sólo un grupo que era el "Default".

Qué suerte que tengas tantos dispositivos, cuando consiga arreglar el problema y reducir el tiempo de carga si te parece bien podría enviarte el juego para que me dijeras cuánto te tarda. De momento no está en Google Play precisamente porque si el juego tarda tanto en cargar nadie lo querría jugar.

¡Gracias y un saludo!

Tengo 4 dispositivos. Un celular Game baja, un celular gama media, uno de Gama alta y una tablet. El secreto cuando programes para Android es siempre ponerte como meta optimizar tu juego para los celulares de gama baja o gama media.

Como ya te dijeron anteriormente, gamemaker en cada room por defecto carga todas las páginas de texturas. Cuando se tienen pocas páginas de texturas no es necesario utilizar el manager texture group, pero cuando tienes muchas páginas es necesario hacerlo.

Aunque me parece que tu problema es por los sonidos. En Gamemaker 1.4 se añadió la características de audio group, que justamente, es cumple la misma función que el texture group. Los sonidos son los que más cargan a la hora de compaginar el juego así que yo te diría que optimices tus sonidos en grupos ya que según tu comentaste que tienes 140 sonidos lo cual es mucho.

Supongo que si la gente de yoyogame añadió la opción de audio group es porque los sonidos por defectos también cargan todos a la vez. Estaría bueno que alguien confirme como es con el tema de los sonidos si cargan todos a la vez por defecto como las texturas.

Vale perfecto, ahora mismo estoy creando diferentes grupos de texturas. Y suerte que has dicho lo del audio porque parece importante también y no estaba al corriente, así que también lo voy a hacer.
Como he dicho antes vengo de versiones antiguas de Game Maker (la 7 concretamente) y algunos de los cambios me pillan por sorpresa.

Se agradece mucho toda la ayuda que estoy recibiendo por parte de todos.
Título: Re:Tarda demasiado en cargar en Android
Publicado por: Mega G en Febrero 12, 2015, 02:04:24 AM
Después de asignar un grupo de textura a cada sprite (juntando los de cada tipo en plan: los de combates, los de mazmorras, los de gente de las ciudades y demás) y hacer grupos también para el sonido, no ha ocurrido absolutamente nada :(

Tengo algunas opciones aún pero no sé si van a funcionar.
Podría ser que hubiera demasiados objetos (4000, pero son necesarios para el juego) o podría ser que los sprites, backgrounds y sonido ralentizaran la carga inicial y que el tema de los grupos de texturas no afectara.

Para hacer otra prueba puedo borrar todos los objetos y dejar los justos para que cuando el juego cargue se pueda ver algo.

La verdad es que esto es un poco desesperante, ojalá en futuras versiones se arregle. Creo que publicaré este problema también en los foros de YoYoGames porque allí los que llevan el programa a veces responden a las preguntas.

¡Saludos!
Título: Re:Tarda demasiado en cargar en Android
Publicado por: penumbra en Febrero 12, 2015, 02:18:00 AM
Cita de: Mega G en Febrero 12, 2015, 02:04:24 AM
Después de asignar un grupo de textura a cada sprite (juntando los de cada tipo en plan: los de combates, los de mazmorras, los de gente de las ciudades y demás) y hacer grupos también para el sonido, no ha ocurrido absolutamente nada :(
Se supone que los grupos de textura deberían organizarse por nivel o room. Es decir, que lo ideal es que en un room/escenario/nivel GMS consulte la menor cantidad de páginas de textura. Entre más páginas consulte (lo que se conoce como texture swaps), el desempeño del juego se podrá ver afectado. Dicho de otra manera, lo que se DEBE EVITAR es que los recursos gráficos de un mismo nivel estén muy "fragmentados" o "dispersos" entre muchas páginas distintas.

No sé si así es como organizaste las páginas de textura y de todas formas, no sé cuánto podrá afectar o no para eliminar el problema.

Cita de: Mega G en Febrero 12, 2015, 02:04:24 AM
Para hacer otra prueba puedo borrar todos los objetos y dejar los justos para que cuando el juego cargue se pueda ver algo.
Creo que sería bueno que midieras el uso de CPU y de RAM usado por el juego en
a) La versión con pocos objetos
b) Ir agregando objetos y/o rooms para ver si se dispara el consumo de RAM o el de CPU o el de ambos y saber si lo provocan los objetos, los fondos, u otra cosa.

Voy mas a que es cuestión de RAM que de CPU, pero es sólo una suposición. ¿Será que los 4000 objetos afectan a pesar que se corre una sola habitación a la vez?
Título: Re:Tarda demasiado en cargar en Android
Publicado por: Mega G en Febrero 12, 2015, 11:03:18 AM
¡Ya he encontrado el problema!

Para hacer una prueba he borrado muchísimos objetos (de 4000 han quedado 800) y al abrir el juego ha cargado en 5 segundos.

Entonces después de tantos experimentos parece que puedo tener tantas rooms como quiera y el número de sprites, backgrounds y sonido no era excesivo en mi caso. Creo que con esto puedo confirmar que las páginas de texturas sólo afectan al rendimiento del juego una vez haya cargado y no durante la carga inicial.


Penumbra: Me pareció haber organizado bien los grupos de texturas, pero como ves al final ese no ha sido ese el problema.

Aquí tienes el uso de CPU y de RAM en los 2 casos que me has pedido:

Versión con 800 objetos: CPU entre 0 y 2 %. RAM 60 MB.
Versión con 4000 objetos: CPU entre 0 y 3%. RAM 105 MB.

Tampoco aumenta demasiado la RAM pero parece que es suficiente para que le cueste más cargar.


Ahora habrá que ver si hay alguna manera de poder tener todos los objetos sin que vuelva a tardar 2 minutos en cargar en mi teléfono. En PC tardaba 10 segundos, y abriendo la APK con un emulador de android para PC tardaba un poco más pero no demasiado. Pero no tengo un teléfono demasiado antiguo, es un Samsung Galaxy S4 con 2GB de RAM y procesador Qualcomm Snapdragon 600 Quad-Core 1,9 GHz.


¡Saludos!
Título: Re:Tarda demasiado en cargar en Android
Publicado por: penumbra en Febrero 12, 2015, 09:36:18 PM
Gracias por compartir los resultados, Mega G.

¿Puedo preguntar en qué consisten los 4000 objetos? ¿Son todos enemigos, items y NPCs? Al final, la máxima makera de usar los menos posibles objetos parece cierta, aunque cuando se habla de eso, siempre se trata de la ejecución del juego, y en este caso, el problema es en la carga, antes de que se comience a jugar.

105MB es una cantidad bastante corta y manejable a mi entender, no tengo idea de qué haga que cargar 60 mB se tarde 5 segundos y 105 MB se tarde más de dos minutos (aunque tampoco sé cuánta RAM libre tiene tu dispositivo, pero supongo que debería tener más de 100MB).
Título: Re:Tarda demasiado en cargar en Android
Publicado por: Mega G en Febrero 12, 2015, 10:13:55 PM
Cita de: penumbra en Febrero 12, 2015, 09:36:18 PM
Gracias por compartir los resultados, Mega G.

¿Puedo preguntar en qué consisten los 4000 objetos? ¿Son todos enemigos, items y NPCs? Al final, la máxima makera de usar los menos posibles objetos parece cierta, aunque cuando se habla de eso, siempre se trata de la ejecución del juego, y en este caso, el problema es en la carga, antes de que se comience a jugar.

105MB es una cantidad bastante corta y manejable a mi entender, no tengo idea de qué haga que cargar 60 mB se tarde 5 segundos y 105 MB se tarde más de dos minutos (aunque tampoco sé cuánta RAM libre tiene tu dispositivo, pero supongo que debería tener más de 100MB).

De nada :)

Por lo general intento reaprovechar los objetos pero seguro que aún se podría comprimir más.
Los objetos son:


A mí también me parece muy raro que los 45 MB de RAM de diferencia hagan que tarde más en cargar.
Intentaré reducir el número de objetos poco a poco.

¡Saludos!
Título: Re:Tarda demasiado en cargar en Android
Publicado por: arcangelcaos en Febrero 13, 2015, 10:40:54 PM
No son por los 45mb, es por la cantidad. Mira te pongo un ejemplo.
Un folio, si tiene una palabra lo lees es un momento, pero si esta escrito entero tarda mucho, sigue siendo un folio, pero tardas mucho en leerlo todo, verdad.
Pues aquí es casi igual, llega a tardar mas tiempo en leer cada objeto que lo que ocupa.
Otro ejemplo, no se si te abras dado cuenta cuando pasas fotos o alguno juego descomprimido a un usb o algo. Si es un archivo de 1gb, va rapidísimo, pero si son 10.000 archivos, que entre todos ocupan 1gb, tarda el doble.
Título: Re:Tarda demasiado en cargar en Android
Publicado por: Mega G en Febrero 13, 2015, 10:46:15 PM
Cita de: arcangelcaos en Febrero 13, 2015, 10:40:54 PM
No son por los 45mb, es por la cantidad. Mira te pongo un ejemplo.
Un folio, si tiene una palabra lo lees es un momento, pero si esta escrito entero tarda mucho, sigue siendo un folio, pero tardas mucho en leerlo todo, verdad.
Pues aquí es casi igual, llega a tardar mas tiempo en leer cada objeto que lo que ocupa.
Otro ejemplo, no se si te abras dado cuenta cuando pasas fotos o alguno juego descomprimido a un usb o algo. Si es un archivo de 1gb, va rapidísimo, pero si son 10.000 archivos, que entre todos ocupan 1gb, tarda el doble.

Tienes razón, los ejemplos que me has dado han sido bastante claros. Gracias por el aporte.

Intentaré optimizar el juego para reducir la cantidad de objetos pero también me ayudaría alguna futura actualización de Game Maker Studio que acelerara la carga inicial.

¡Saludos!
Título: Re:Tarda demasiado en cargar en Android
Publicado por: arcangelcaos en Febrero 13, 2015, 10:50:24 PM
Leyendo un poco lo que dice y tal. Reduce objetos que sean iguales, pero como dices, que según la room hacen una cosa, puedes hacer script con las cosas a hacer. Y en función de la room, llame a un script y otro.

if room = ????
scr room1

if room = 1111
scrroom2.

Con eso podrias reducir mucho los objetos, creo yo.
Título: Re:Tarda demasiado en cargar en Android
Publicado por: Mega G en Febrero 13, 2015, 10:58:22 PM
Cita de: arcangelcaos en Febrero 13, 2015, 10:50:24 PM
Leyendo un poco lo que dice y tal. Reduce objetos que sean iguales, pero como dices, que según la room hacen una cosa, puedes hacer script con las cosas a hacer. Y en función de la room, llame a un script y otro.

if room = ????
scr room1

if room = 1111
scrroom2.

Con eso podrias reducir mucho los objetos, creo yo.

Sí, algo similar he estado haciendo pero a pequeña escala. Por ejemplo si en una ciudad hay 10 casas, hay una sola puerta para todas y la pongo 10 veces en la room. Entonces el objeto de la puerta contiene el siguiente código:

if x=128 and y=240 { room_goto(casa1); }
if x=256 and y=176 { room_goto(casa2); }
//Y así con cada una de las 10 puertas


Tendré que hacer cosas así pero en mayor cantidad.

¡Saludos y gracias por la ayuda!