Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Rendimiento

Iniciado por Manu343726, 30 de Octubre de 2012, 08:04:44 PM

« anterior - próximo »

Manu343726

Me gustaría saber que nivel de rendimiento os ofrece dx_lib32. Yo no he llegado a desarrollar un juego serio con ella, así que me gustaría saber que capacidad ofrece en un ambiente "real". Así me ayudaríais a orientarme en la implementación, que partes debo trabajar más (optimizar, vamos) y cuales menos

Gracias

Hechelion

¿A que te refieres exactamente?

Con todo lo que has hecho, yo creo que ya deberías tener una idea sobre el consumo de recursos de la librería.

Manu343726

el problema es que nunca he terminado un juego serio, y me gustaria saber la capacidad de dx_lib32 en todo su conjunto, graficos, audio, etc. todo a la vez. en un entorno real

[EX3]

Yo las pruebas más grandes que hice fueron con la ultima versión de mi motor sobre dx_lib32 en Visual Basic 6.0 y jugando a resolucion de 800x600 y contando por detras todo el proceso de logica y colisiones (esto ultimo no muy optimizado) que calculaba el motor a parte del proceso de renderizado de los elementos, no llegaba a pasar de 40fps de media en modo ventana  y algun pico de 50fps se asomaba de vez en cuando en modo a pantalla completa, con una Intel GMA 950 tanto con un Intel Core 2 Duo, donde se ejecuto las ultimas veces, como en un Intel Atom, donde estuve programando la mayor parte del tiempo.

Todo esto pintando tanto sprites en pantalla (calcula unos 6 sprites por personaje + una media de 200 tiles en pantalla) como operaciones de primitivas (unas pocas lineas en modo de juego) y lo justo de texto.

Hechelion, que tiene un desarrollo de su juego más avanzado que lo que llegue a realizar yo con mis pruebas en mi motor, te puede comentar seguramente otras cifras más acorde a lo que buscas por desarrollo "serio".

Cita de: Manu343726 en 01 de Noviembre de 2012, 04:53:03 PM
el problema es que nunca he terminado un juego serio, y me gustaria saber la capacidad de dx_lib32 en todo su conjunto, graficos, audio, etc. todo a la vez. en un entorno real
Por el audio no deberias preocuparte ya que eso va en segundo plano respecto al hilo principal. Ya podria atascarse un sample de audio que no te afectaria a los fps del bucle del juego. El input tampoco deberia serte un problema en esto. De primeras los graficos, la logica que implementes y las colisiones/fisicas son lo que deberias tener en cuenta para calcular un rendimiento de un juego.

Salu2...

P.D.: Recuerda tambien que las rutinas graficas de dx_lib32 no es que destaquen por su optimizada implementacion, tiene varios cuellos de botella que afectan en rendimiento.
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Hechelion

#4
Te puedo compartir mis números. igual son de memoria y no exactos, pero si bastante aproximados.
En todo caso, hace un tiempo publique los números para el alpha de dhu nun (hablando de rendimiento)

Mundial futbolin
http://www.youtube.com/watch?v=ZSIPKj0z1mU

resolución 1280*720
fondo: 12 sprites, 2 texturas creo recordar.
animaciones: 32. (tengo una clase propia par esto) proveniente de 3 texturas.
Con música de fondo + sonido + lógica (simulación de física + movimiento de la bola + colisiones) + AI (4 AI diferentes) + sistema de cambio de color de camisetas = 60 FPS (Lo limité a 60 por que uso cada ciclo como un tick de tiempo para la lógica, de seguro daba más si lo dejaba suelto)

Equipo:
Win7 64 bit, 4 GB de RAM, GPU = ATI4200m de 256 RAM, CPU = AMD turion II P540

El juego lo presenté en un concurso, nadie se quejó del rendimiento (de los pocos que lo probaron), así que asumo que el juego logró mantener los 60 FPS, si no, habría dado problemas a lo jugadores y aunque desconozco en que hardware se probó,  por el público asumo que son equipos promedio.

*********************************************************************
Dhu nun.
El alpha del año pasado fue el que más probé, por que quería determinar a cual taza de FPS debía manejar el juego (utilizo los tick como tiempo)

http://www.youtube.com/watch?v=ZSIPKj0z1mU
Resolución: 1280*720 (esto es en la versión nueva, el alpha va en 1024*768)

El fondo eran 9 capas diferentes de tilemap de 32*32 (aprox, por que unas capas eran más grandes y otras más pequeñas), ojo, que no todas la capas tienen la totalidad de tile ocupados, por ejemplo, la capa de islas flotantes, es más que nada espacios vacíos.
+ el HUD + sonido + música + lógica de control (colisiones, física, creación y destrucción de entidades ) + AI de enemigos + animaciones (personaje, enemigos, efectos visuales) + etc.
Acá es bastante más difícil saber cuantas instrucciones hay, por que varían, si por ejemplo, no hay enemigos cerca, no se procesa ninguna AI o cuando se abre un menú se agregan si problemas unas 100 instrucciones más de dibujo por frame, etc.


Al correrlo en un netbook de esa época, HP Mini,CPU:  N270 de 1.6GHz, 1GB de RAM, Intel 950 de video (winXP creo), el juego promediaba las 40 FPS.
En mi PC normal (no recuerdo bien las especificaciones, sé que era un quad core con 3 GB de RAM y una Nvidia 7200, winXP) promediaba las 90 FPS (70 a 110 por lo que recuerdo).





Cuando tenga un poco tiempo puedo hacer pruebas con la versión actual del juego, pero no creo que sirva de mucho sin tener primero un vídeo para  que se vea todo lo que hay en pantalla y también por que tengo un PC con un muy buen hardware. si igual quieres esos datos avísame y cuando tenga un tiempo hago las pruebas.


*********************************************************************
EDIT:
Me dio curiosidad ver como correría el juego en mi PC actual.


Esa es la media (unos 160), en escena más cargadas bajaba a unos 120 y en lugares con menos criaturas e islas flotantes pasa de los 200 (llegué a marcar picos de 250 en alguna zonas)
PC: Win7 64 bit, 8 GB de RAM, i7-3610, Nvidia GTX660M.

Pese a ser alpha, es juego completo, reproduciendo un OGG + efectos de sonido en WAV + todo lo que comentaba más arriba y corriendo en modo debug.

*********************************************************************
EDIT 2:
Nueva prueba, le saqué la limitación de FPS al juego de futbolin



sobre los 1000 FPS en la ventana de menú, y sobre los 500 FPS en la ventana del juego normal.

Manu343726

Muchas gracias a los dos, no me esperaba tal nivel de detalle XD Ha sido muy ilustrativo. lo tendre en cuenta

[EX3]

Curioso. Por lo que estoy viendo en tus resultados, Hechelion, la limitación de FPS de la clase gráfica puede generar algún problema de que limite en exceso el rendimiento, que no logre mantener correctamente la tasa de FPS establecida. Yo todas mis pruebas siempre las hice con la limitación a 60fps inicialmente, y a 30fps si veía que de media no superaba los 40fps, y siempre con el VSync activado, que esto también afecta a la tasa de actualización.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Hechelion

#7
De nada Manu, espero que te sirvan esos datos.

@Ex3 La pruebas que coloqué acá son todas con la limitación de FPS apagada y sin Vsync (creo), fueron pruebas de stress solamente para ver hasta donde llegaba la librería.

El juego normal lo limito a 60 o 30 y hasta el momento no he tenido ningún problema con la librería. Lo que si noté (pero no lo he confirmado, es solo una suposición) es que la tasa de FPS depende más de la tarjeta de vídeo que de la CPU, equipos con tarjetas intel siempre rondé las 40 FPS, mientras que con tarjetas intel o ATI (aunque fueran modestas) lograba subir por encima de los 60.

Lo que recuerdo, es que aunque agregara o quitara código no relacionado con la parte gráfica (como AI o simulación) no veía mucho cambio en la FPS.

[EX3]

Cita de: Hechelion en 03 de Noviembre de 2012, 11:05:45 PM
Lo que si noté (pero no lo he confirmado, es solo una suposición) es que la tasa de FPS depende más de la tarjeta de vídeo que de la CPU, equipos con tarjetas intel siempre rondé las 40 FPS, mientras que con tarjetas intel o ATI (aunque fueran modestas) lograba subir por encima de los 60.
Obviamente la gráfica afecta a la tasa de FPS :) 40FPS de media es lo que lograba mantener tanto en el Macbook (Intel Core 2 Duo) como en el Acer Aspire One (Intel Atom), ambos con una Intel GMA 950. Con mi gráfica actual, una GForce GT 540M, seguramente conseguiría mantener los 60FPS sin problema. Desde luego, si con gráficas mejores rinde con altas tasas de FPS forzando el dibujado de mucha carga grafica eso buena señal. Los 40FPS en una Intel GMA 950 significa que el render de dx_lib32 rinde mejor de lo que esperaba en un principio :)

Cita de: Hechelion en 03 de Noviembre de 2012, 11:05:45 PM
Lo que recuerdo, es que aunque agregara o quitara código no relacionado con la parte gráfica (como AI o simulación) no veía mucho cambio en la FPS.
Pues yo en la ultima versión del motor en VB6.0 lo note mucho con mi implementación de motor de colisiones que hice (una verdadera chapuza por entonces) y con escenario no demasiado grandes se notaba mucho la bajada de rendimiento del programa en general, y con baja carga de gráficos por entonces ya que era más diseño de prototipos de niveles con la vista de depuración del propio sistema de colisiones. En tu caso lo tendrás mejor implementado y por eso no te dará problemas en el rendimiento :)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Manu343726

Ya que habeis mencionado el tema del limite de fps, en mi implementación ocurre algo muy extraño: no pasa de los 60fps. Tiene DirectX algun sistema de bloqueo interno? No puede ser que un pong, véase tres rectangulos blancos, esté danzando entre los 60 y los 61 fps sin parar....

Enviado desde mi GT-S5830 usando Tapatalk 2

[EX3]

¿Tienes activado el VSync? Esto limita la actualización de renderizado en teoría al máximo de refresco que alcance tu monitor, que puede ser 60 o más.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

bnl

Cita de: [EX3] en 05 de Noviembre de 2012, 05:20:10 PM
¿Tienes activado el VSync? Esto limita la actualización de renderizado en teoría al máximo de refresco que alcance tu monitor, que puede ser 60 o más.

Salu2...

Tiene toda la pinta de ser eso
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

Manu343726

#12
Mañana lo miro y os comento. Pero que yo recuerde no

Gracias por cierto

Enviado desde mi GT-S5830 usando Tapatalk 2






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.