Octubre 03, 2017, 06:45:09 AM Ultima modificación: Octubre 05, 2017, 04:58:05 PM por quiero aprender
Estoy creando un juego que he estado optimizando y en computadora va bien, la barra de show debug me indica (18)(20) y por lo que he leído, en una computadora esta bien pero a la hora de jugarlo en un celular aumenta hasta (34)(25).

La verdad no se porque el cambio ya que acomodo bien los paquetes de textura.

Si he notado que tengo una surface que consume ese proceso pero en android al principio esta en (18)(20) pero cuando el jugador dispara aumenta constantemente hasta llegar a (34)(20).

Todo esto hace que mi juego baje mucho los fps y no sea jugable. Esto no pasaba antes, en mi celular llegaba de (17)(15) a (18)(20) y llegaba mínimo a 55 fps ahora mínimo llega a 24 en momentos de acción.

¿Cómo puedo solucionar esto?
Gracias por sus respuesta.

Hola!

Generalmente lo que afecta a que un juego pierda su performance es que posee muchos codigo basura en las partes mas sensibles como los steps events y los draw event, entre otros.

Tambien otros eventos afectadores pueden ser un alarm siempre en 1 fps (alarm[0]=1;)

O incluso la ejecucion de uno o mas ciclos for, while, do until, en los eventos anteriormente mencionados.

El codigo que puede estar afectando pueden ser variables con calculos que en ves de calcularlos a cada frame se pueden calcular desde un create event o custom event o un alarm o un script para hacerlo mas event dependiente y no frame dependiente, cambiando muchos de esos calculos a event dependiente impactaria notaria y positivamente en el performance del juego (los fps tio!), claro esta que requiere mas trabajo puesto que muchos bugs y glitches te llegaran, pero vale la pena, pues que si.

Y porque un ejemplo vale la pena, aqui te muestro un juego con unos FPS malisimos a pesar de ser un simple juego de dos dimensiones (2D) 

https://forum.yoyogames.com/index.php?threads/dead-ground-action-roguelike-tower-defense.34770/

Battlefield Galactic (Nombre piloto) Alpha 1.7.5.0
Juego Genero: Multiplayer Online Battle Arena!
Is more than 9000 APM!!

Cita de: klys en Octubre 03, 2017, 08:06:13 AM
Hola!

Generalmente lo que afecta a que un juego pierda su performance es que posee muchos codigo basura en las partes mas sensibles como los steps events y los draw event, entre otros.

Tambien otros eventos afectadores pueden ser un alarm siempre en 1 fps (alarm[0]=1;)

O incluso la ejecucion de uno o mas ciclos for, while, do until, en los eventos anteriormente mencionados.

El codigo que puede estar afectando pueden ser variables con calculos que en ves de calcularlos a cada frame se pueden calcular desde un create event o custom event o un alarm o un script para hacerlo mas event dependiente y no frame dependiente, cambiando muchos de esos calculos a event dependiente impactaria notaria y positivamente en el performance del juego (los fps tio!), claro esta que requiere mas trabajo puesto que muchos bugs y glitches te llegaran, pero vale la pena, pues que si.

Y porque un ejemplo vale la pena, aqui te muestro un juego con unos FPS malisimos a pesar de ser un simple juego de dos dimensiones (2D) 

https://forum.yoyogames.com/index.php?threads/dead-ground-action-roguelike-tower-defense.34770/

La verdad si utilizo muchos muchos eventos step la cosa es que no se que otro evento pueda hacer lo mismo, también sustituí el evento step por alarm[0] = 1, pero de igual forma afecta igual.

Voy a limpiar mi código ver que tal aunque si existiera otra forma de sustituir eventos steps estaría genial saberlo.

Gracias por tú respuesta.

Creo que ya he solucionado el problema de las texturas  :).(En parte).

Lo que diga tal vez no sea correcto ya que no tengo experiencia en esto pero solo digo lo que acabo de experimentar.

En global game setings configure en android la mayor resolución que pude, por que?

Pues porque al hacer eso no aumentas el tamaño de los sprites sino lo único que haces en acomodar más sprites en una página de texturas de mayor tamaño y de esta forma reduces el numero de páginas de las texturas y de esta forma game maker solo tiene que abrir pocas páginas de texturas.

No digo que a la hora de hacer tu juego uses sprites de mayor tamaño ya que a esto no me refiero. Por lo que puedo definir esto es:

El tamaño de los paquetes solo es para acomodar en una hoja más grande los sprites pero el tamaño del los sprites individuales es lo que puede afectar el peso y rendimiento del juego.

Como dije, puede que este mal lo que digo pero he hecho lo que dije y me va de maravilla y luego aplique el menor tamaño de textura que se podía y lo corrí y lo que me indica en la barra de debug es (35)(40) y en la resolución más alta del paquete de texturas es (17)(24).

 

Aquí se explica lo que debes hacer para mejorar el rendimiento
https://help.yoyogames.com/hc/en-us/articles/216754778-Optimizing-Your-Games

Los números que muestras siguen siendo muy grandes organiza mejor los sprites dentro de las páginas de textura para que siempre se use la menor cantidad de páginas. También reduce al mínimo los cambios de color de dibujo, y el uso de shaders y blend modes.

Cita de: Clamud en Octubre 04, 2017, 07:16:39 PM
Aquí se explica lo que debes hacer para mejorar el rendimiento
https://help.yoyogames.com/hc/en-us/articles/216754778-Optimizing-Your-Games

Los números que muestras siguen siendo muy grandes organiza mejor los sprites dentro de las páginas de textura para que siempre se use la menor cantidad de páginas. También reduce al mínimo los cambios de color de dibujo, y el uso de shaders y blend modes.
Gracias, he esto implementando y optimizando y queda en (7)(5)  más o menos. Creo que con esto sería suficiente para que corra bien en celulares.  :)