Author Topic: Sólo 18 FPS en iPad (SOLUCIONADO)  (Read 6786 times)

Offline Hark0

  • Prof. Inline
  • *****
  • Posts: 1020
  • Geek Developer
    • View Profile
    • LitioPixel - Desarrollo de videojuegos con GLBasic | Videogame development with GLBasic
Re: Sólo 18 FPS en iPad (SOLUCIONADO)
« Reply #15 on: 2012-Sep-21 »
Para aclarar MÁS las cosas:

No es lo mismo esto:

Code: GLBasic [Select]
posx=0
        posy=0
        FOR y=0 TO BING_ALTO-1
                FOR x=0 TO BING_ANCHO-1
                        [color=red]renderx=posicion_scrollx+posx
                        rendery=posicion_scrolly+posy[/color]
                        //recorte mapa
                        IF renderx>limitex_max AND renderx<limitex_min AND rendery>limitey_max AND rendery<limitey_min
                                IF BING_GRFX[x][y]>0 THEN DRAWANIM GRAFICOS_Bloque_Codigo,BING_GRFX[x][y],[color=red]renderx,rendery[/color]
                                IF BING_OBJETOS[x][y]>0 THEN DRAWANIM GRAFICOS_Objeto_Codigo,BING_OBJETOS[x][y],[color=red]renderx,rendery[/color]
                                IF BING_ENEMIGOS[x][y]>0 THEN DRAWANIM GRAFICOS_ENEMIGO_Codigo,BING_ENEMIGOS[x][y],[color=red]renderx,rendery[/color]
                        ENDIF
                        posx=posx+50
                NEXT
                posx=0
                posy=posy+50
        NEXT

Que ésto otro:

Code: GLBasic [Select]
posx=0
        posy=0
        FOR y=0 TO BING_ALTO-1
                FOR x=0 TO BING_ANCHO-1
                        //recorte mapa
                        IF renderx>limitex_max AND renderx<limitex_min AND rendery>limitey_max AND rendery<limitey_min
                                IF BING_GRFX[x][y]>0 THEN DRAWANIM GRAFICOS_Bloque_Codigo,BING_GRFX[x][y],[color=red]posicion_scrollx+posx,posicion_scrolly+posy[/color]
                                IF BING_OBJETOS[x][y]>0 THEN DRAWANIM GRAFICOS_Objeto_Codigo,BING_OBJETOS[x][y],[color=red]posicion_scrollx+posx,posicion_scrolly+posy[/color]
                                IF BING_ENEMIGOS[x][y]>0 THEN DRAWANIM GRAFICOS_ENEMIGO_Codigo,BING_ENEMIGOS[x][y],[color=red]posicion_scrollx+posx,posicion_scrolly+posy[/color]
                        ENDIF
                        posx=posx+50
                NEXT
                posx=0
                posy=posy+50
        NEXT

El primero ES el loop rápido....  =D

Repasa tus loops @Alex_R  ;)
« Last Edit: 2012-Sep-21 by Hark0 »
http://litiopixel.blogspot.com
litiopixel.blogspot.com - Desarrollo videojuegos Indie · Pixel-Art · Retroinformática · Electrónica Development Indie Videogames · Pixel-Art · Retrocomputing · Electronic

Offline hardyx

  • Community Developer
  • Dr. Type
  • ******
  • Posts: 491
    • View Profile
Re: Sólo 18 FPS en iPad (SOLUCIONADO)
« Reply #16 on: 2012-Sep-21 »
Menuda optimización que has hecho!!! Las ordenes de dibujo de geometrías linea, rectángulo, van más lentas que dibujar un sprite o imagen preparada, ya que la mayoría de librerías gráficas están optimizadas para eso. Además, cuando dibujas una línea o un círculo se hace un cálculo por debajo, que se llama algoritmo de Bressenham (no me llaméis friki :D) para pintar los pixels de la línea.

Aqui puedes ver el algoritmo de Bressenham
http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm
http://en.wikipedia.org/wiki/Bresenham%27s_circle_algorithm

Offline msx

  • Prof. Inline
  • *****
  • Posts: 773
    • View Profile
Re: Sólo 18 FPS en iPad (SOLUCIONADO)
« Reply #17 on: 2012-Sep-21 »
Enhorabuena hark0, seguro que todos saldremos beneficiados de tus investigaciones.


Offline Alex_R

  • Mr. Polyvector
  • ***
  • Posts: 238
    • View Profile
    • Axro Digital
Re: Sólo 18 FPS en iPad (SOLUCIONADO)
« Reply #18 on: 2012-Sep-21 »
Mi problema de bajada de fps estaba en un iPod Touch que es el que uso para hacer pruebas. Tengo limitado el juego a 30 fps y siempre está en todos los niveles ahí salvo el de las nubes que bajaba drásticamente. Le he bajado el número de nubes de 30 a 10 y ahora va bien en el iPod Touch. Además, le he puesto alphamode 1 y se nota más rápido que con -1.

Por cierto que he hecho una prueba con un iPhone 4s con 50 nubes (con el iPod le tengo puesto 10 a la vez) y no hay reducción de fps. En cualquier caso esto es para deciros que las transparencias sí influyen en la velocidad y más con alphamode interpolado y con blending (claro, según mi experiencia)

Offline Hark0

  • Prof. Inline
  • *****
  • Posts: 1020
  • Geek Developer
    • View Profile
    • LitioPixel - Desarrollo de videojuegos con GLBasic | Videogame development with GLBasic
Re: Sólo 18 FPS en iPad (SOLUCIONADO)
« Reply #19 on: 2012-Sep-21 »
Mi problema de bajada de fps estaba en un iPod Touch que es el que uso para hacer pruebas. Tengo limitado el juego a 30 fps y siempre está en todos los niveles ahí salvo el de las nubes que bajaba drásticamente. Le he bajado el número de nubes de 30 a 10 y ahora va bien en el iPod Touch. Además, le he puesto alphamode 1 y se nota más rápido que con -1.

Por cierto que he hecho una prueba con un iPhone 4s con 50 nubes (con el iPod le tengo puesto 10 a la vez) y no hay reducción de fps. En cualquier caso esto es para deciros que las transparencias sí influyen en la velocidad y más con alphamode interpolado y con blending (claro, según mi experiencia)

Hmmm quizás el tema de ALPHAMODE está en donde y cómo se use... en mi caso particular NO afecta ni un misero 0,1 ms.  :P
http://litiopixel.blogspot.com
litiopixel.blogspot.com - Desarrollo videojuegos Indie · Pixel-Art · Retroinformática · Electrónica Development Indie Videogames · Pixel-Art · Retrocomputing · Electronic

Offline mentalthink

  • Prof. Inline
  • *****
  • Posts: 3366
  • Integrated Brain
    • View Profile
Re: Sólo 18 FPS en iPad (SOLUCIONADO)
« Reply #20 on: 2012-Sep-21 »
Personalmente el tema de los Alphamode como dice Alex si te pasas en el array puede dar quebraderos de cabeza, una cosa
es meter el Alphamode dentro del for para recorrer las cosas, pero si todos tienen la misma transparecias pues supongo que es mejor dejarlo antes del For:

Me alegro Hark0 que lo hayas arreglado, interesante lo que comentas que los drawline bajan los FPS, cosa que desconocia...

Offline Hark0

  • Prof. Inline
  • *****
  • Posts: 1020
  • Geek Developer
    • View Profile
    • LitioPixel - Desarrollo de videojuegos con GLBasic | Videogame development with GLBasic
Re: Sólo 18 FPS en iPad (SOLUCIONADO)
« Reply #21 on: 2012-Sep-21 »
Personalmente el tema de los Alphamode como dice Alex si te pasas en el array puede dar quebraderos de cabeza, una cosa
es meter el Alphamode dentro del for para recorrer las cosas, pero si todos tienen la misma transparecias pues supongo que es mejor dejarlo antes del For:

Me alegro Hark0 que lo hayas arreglado, interesante lo que comentas que los drawline bajan los FPS, cosa que desconocia...

Como ya se ha comentado (frikimente  :D =D ;)) en el hilo, las rutinas gráficas suelen ser más lentas que volcar una surface imagen...

También, supongo yo, que se deberá a la tarjeta gráfica de la máquina en cuestión.... anteriormente programaba en un portátil HP DV4000 (tarjeta GM915, creo que este era el modelo). Pues bien, con esta tarjeta de vídeo NO podía usar funciones MEM2SPRITE ni silimares, ya que no soportaba estas historias (sorprendentemente corría todo tipo de apps/juegos sin problemas, léase el WOW).

En el equipo del despacho, con una tarjeta de vídeo Raedon HD6450, todo funciona de narices...

Pero lo bueno del asunto, es que el juego lo programo por las noches en casa, con un MacBook Pro, emulando con VMware... y NI UN PROBLEMA...

Lo recomendable sería, y como se ha comentado aquí, probarlo en diferentes máquinas y/o configuraciones.
http://litiopixel.blogspot.com
litiopixel.blogspot.com - Desarrollo videojuegos Indie · Pixel-Art · Retroinformática · Electrónica Development Indie Videogames · Pixel-Art · Retrocomputing · Electronic

Offline Hark0

  • Prof. Inline
  • *****
  • Posts: 1020
  • Geek Developer
    • View Profile
    • LitioPixel - Desarrollo de videojuegos con GLBasic | Videogame development with GLBasic
Re: Sólo 18 FPS en iPad (SOLUCIONADO)
« Reply #22 on: 2012-Sep-21 »
Pego aquí el código que utilizo para cálcular el tiempo de render por pantalla:

Code: GLBasic [Select]
...
... inicio de loop con for o lo que sea
...
Tiempo_Render=GETTIMERALL()
Tiempo_Render_FIN=0
....
.... loop render / cálculos de lo que sea
....
Tiempo_Render_FIN=GETTIMERALL()-Tiempo_Render
PRINT Tiempo_Render_FIN,0,0
SHOWSCREEN
....
.... fin del loop
....
 

No es nada complicado como se puede ver, pero si nos da información sobre el timming de nuestras rutinas. Además se puede meter de forma muy sencilla en cualquier LOOP para ver su tiempo de cálculo.

Espero que os sirva.  ;)
http://litiopixel.blogspot.com
litiopixel.blogspot.com - Desarrollo videojuegos Indie · Pixel-Art · Retroinformática · Electrónica Development Indie Videogames · Pixel-Art · Retrocomputing · Electronic