Test de mi gameEngine en C++

Todo aquello que no está relacionado con Gemix Studio ni con la programación DIV en general.
Post Reply
User avatar
CicTec
Posts: 16590
Joined: Thu Jul 31, 2008 10:18 pm

Re: Test de mi gameEngine en C++

Post by CicTec »

Hokuto7 wrote:El test gamelibzero c++ me da 84 objetos en pantalla("EL PROXIMO TEST RESOLUCION 640X480 A 30FPS")

Como estaba aburrido he realizado mas pruebas de rendimiento en otros engine.

Gamemaker:
.60 fps 100 objetos ,30 fps 150 objetos

Cdiv:
-60,0 fps 300 objetos,30,0 fps 900 objetos

Didx:
aqui tuve que crear un sprite simple en el programa, porque no se como meter el sprite en el fpg y puede que el test no sea fiable
-60,0 fps 880 objetos,30,0 fps 1400 objetos

Bennugd:
-60,0 fps 2700 objetos,30,0 fps 6000 objetos
-60,1 fps 3200 objetos,30,1 fps 6800 objetos
-60,2 fps 3600 objetos,30,2 fps 7400 objetos

En bennugd me ocurrio una cosa curiosa,cuantos mas frames le restaba menos aumentaba el rendimento.Pero esta claro que el engine mas rapido en mi ordenar y con diferencia es bennugd.

Resumiendo:
Gemix:
set_fps(60,0) 1000 procesos,set_fps(30,0) 2000 procesos
Bennugd:
set_fps(60,0) 2700 procesos,set_fps(30,0) 6000 procesos
Otra cosa que me olvide anteriormente, DIVDX y GameMaker no debes probarlos desde el entorno abierto porque pueden tener modo debug, tienes que generar el ejecutable (exportar o lo que sea), cierrar el entorno y probar el ejecutable, asi es el mismo ejemplo de los otros engines, sino la comparacion no es exacta.

Sobre DIVDX, la comparacion la puedes hacer solo con Gemix Legacy y BennuGD siendo por CPU y tienes que hacerlo por 8bits, porque es el solo modo soportado por DIVDX, no por 32bit.
User avatar
OskarG
Posts: 612
Joined: Tue Jan 12, 2010 2:12 am

Re: Test de mi gameEngine en C++

Post by OskarG »

Me expresas citec si esta bien escrito...

[Codebox=gemix file=Untitled.gemix]

compiler_options _gmxsystem_graphics = gmxgraphics_modern;

program test;

begin
write(0, 5, 115, 3, "FPS........: "); write(0, 78, 115, 3, &fps);
mode_set(640,480,32);
set_fps(0,0);
graph = image_load("grafico.png");map_new(800,800, rgb(255, 0, 0));
x = 100;
y = 100;
loop
rotation.z += 3500;
scale.x=50;
scale.y=50;

frame;

end


end




[/Codebox]


//////////////////////////////////////////////////////////////////////////////////////

COn esta version me da 1100 frames...


SI le quito la primera linea compiler_options _gmxsystem_graphics = gmxgraphics_modern; ME DA 3500 frames..
ES decir la version modern en mi ordenador no funciona adecuadamente
User avatar
CicTec
Posts: 16590
Joined: Thu Jul 31, 2008 10:18 pm

Re: Test de mi gameEngine en C++

Post by CicTec »

OskarG wrote:Me expresas citec si esta bien escrito...

[Codebox=gemix file=Untitled.gemix]

compiler_options _gmxsystem_graphics = gmxgraphics_modern;

program test;

begin
write(0, 5, 115, 3, "FPS........: "); write(0, 78, 115, 3, &fps);
mode_set(640,480,32);
set_fps(0,0);
graph = image_load("grafico.png");map_new(800,800, rgb(255, 0, 0));
x = 100;
y = 100;
loop
rotation.z += 3500;
scale.x=50;
scale.y=50;

frame;

end


end




[/Codebox]


//////////////////////////////////////////////////////////////////////////////////////

COn esta version me da 1100 frames...


SI le quito la primera linea compiler_options _gmxsystem_graphics = gmxgraphics_modern; ME DA 3500 frames..
ES decir la version modern en mi ordenador no funciona adecuadamente
No, estas haciendo mal algo, set_mode en modern no necesita parametro BPP y los WRITE van despues el SET_MODE, aqui los tests correctos:

Gemix Legacy:
[Codebox=gemix file=Untitled.gemix]
program test_01;

Global
int img;
int i = 0;
begin
mode_set(640, 400, 32);
set_fps(60, 0);
img = image_load("data/images/00.png");
write(0, 10, 10, 3, &fps);
write(0, 200, 10, 3, &i);
loop
if(fps > 58)
proc();
i++;
end
frame;
end
end

process proc()
begin
graph = img;
x = 320;
y = 200;
scale.x=scale.y = 50;
loop
rotation.z += 1000;
frame;
end
end
[/Codebox]

Gemix Modern:
[Codebox=gemix file=Untitled.gemix]
compiler_options _gmxsystem_graphics = gmxgraphics_modern;
program test_01;

Global
int img;
int i = 0;
begin
mode_set(640, 400);
set_fps(60, 0);
img = image_load("data/images/00.png");
write(0, 10, 10, 3, &fps);
write(0, 200, 10, 3, &i);
loop
if(fps > 58)
proc();
i++;
end
frame;
end
end

process proc()
begin
graph = img;
x = 320;
y = 200;
scale.x=scale.y = 50;
loop
rotation.z += 1000;
frame;
end
end
[/Codebox]
User avatar
OskarG
Posts: 612
Joined: Tue Jan 12, 2010 2:12 am

Re: Test de mi gameEngine en C++

Post by OskarG »

gracias por la explciacion....

[Codebox=gemix file=Untitled.gemix]
compiler_options _gmxsystem_graphics = gmxgraphics_modern;

program test;

begin

mode_set(640,480);
write(0, 5, 115, 3, "FPS........: "); write(0, 78, 115, 3, &fps);
set_fps(0,0);
graph = image_load("grafico.png");
x = 100;
y = 100;
loop
rotation.z += 3500;
scale.x=50;
scale.y=50;

frame;

end


end
[/Codebox]

Me da 282 fps.....y quitando el modern unos 3500 fps . es problema de mi grafica...
rectifico
ahora me da 1200 fps en modern y 4000 en normal .he cerrado todas las aplicaciones y creado ejecutable.
User avatar
CicTec
Posts: 16590
Joined: Thu Jul 31, 2008 10:18 pm

Re: Test de mi gameEngine en C++

Post by CicTec »

OskarG wrote:gracias por la explciacion....

[Codebox=gemix file=Untitled.gemix]
compiler_options _gmxsystem_graphics = gmxgraphics_modern;

program test;

begin

mode_set(640,480);
write(0, 5, 115, 3, "FPS........: "); write(0, 78, 115, 3, &fps);
set_fps(0,0);
graph = image_load("grafico.png");
x = 100;
y = 100;
loop
rotation.z += 3500;
scale.x=50;
scale.y=50;

frame;

end


end
[/Codebox]

Me da 282 fps.....y quitando el modern unos 3500 fps . es problema de mi grafica...
Que no, sigue comparando mal :P, si quitas el compiler_options, el set_mode es interprato como el DIV original, o sea te esta funcionando a 8bit no 32, para el test real:
1) scale.x y scale.y van fuera del loop, porque estas haciendo operaciones inutiles en un bucle y esto afecta rendimiento en interpretacion.
2) En la version Legacy debes comentar COMPILER_OPTIONS y poner MODE_SET(640, 400, 32), espcificando 32 como tercero parametro para indicarle de ir en modo 32bit (sino arranca en 8 por default).
3) En la version Modern debes descocomentar COMPILER_OPTIONS y poner MODE_SET(640, 400), sin especificar los 32 como tercero parametro ya que es la unica modalidad (32bit) soportada dal Modern.

Siguiendo esos 3 puntos puede probar ambas las versiones y obtener una comparacion real.
User avatar
CicTec
Posts: 16590
Joined: Thu Jul 31, 2008 10:18 pm

Re: Test de mi gameEngine en C++

Post by CicTec »

@erkosone, tu ejemplo de codigo de libreria tiene algo raro:
[Codebox=gemix file=Untitled.gemix]
if(GetFPS() > 58){
for(int i=0; i<10; i++){
cosa* a = new cosa();
a->x = GetRandomValue(0,640);
a->y = GetRandomValue(100, 400);
a->size = 50;
a->graph = img;
a->visible = true;
}
//st = 20;
}
[/Codebox]
Cada ves que llamas la funcion y la condicion del case es verdades, si los FPS son mayor de 58, creas 10 "procesos", esto no es preciso en comparacion con los tests para los otros engine, porque si llegas a 59 y creas 10 objetos de clase, puede haber una diferencia de 9 "procesos" mas respecto a los otros engine, el codigo correcto para comparar deberia ser:
[Codebox=gemix file=Untitled.gemix]
if(GetFPS() > 58){
cosa* a = new cosa();
a->x = 320;
a->y = 200;
a->size = 50;
a->graph = img;
a->visible = true;
//st = 20;
}
[/Codebox]
Asi cada vez que se ejecuta el bucle principal que llama Draw() y la condicion del switch y de los FPS se cumplen creas un nuevo "proceso", asi la comparacion en test aspecto es precisa con los tests para los otros engines.
User avatar
Hokuto7
Posts: 1408
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en C++

Post by Hokuto7 »

He probado lo que me ha dicho cictec en bennugd y los resultados son:
-60,0 fps 300 objetos y 30,0 fps 500 objetos

Tambien he probado mi ejemplo de gemix en la version modern,gracias a estos archivos("libglapi.dll,opengl32.dll") he podido probar la version modern y el resultado es:
-60,0 fps 150 objetos,verion modern
-60,0 fps 1000 objetos,version legacy

Ahora comento los ejemplos de erkozone:
-test gemix 177 objetos
-test gamlibzero_c++ 71 objetos

Tambien he probado el mismo ejemplo en la version java
-test gamelibzero_java 42 objetos
User avatar
Hokuto7
Posts: 1408
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en C++

Post by Hokuto7 »

mitest.PNG
testjava.PNG
testgemix.PNG
testc++.PNG
imagenes por si alguien tiene dudas.
You do not have the required permissions to view the files attached to this post.
User avatar
CicTec
Posts: 16590
Joined: Thu Jul 31, 2008 10:18 pm

Re: Test de mi gameEngine en C++

Post by CicTec »

Hokuto7 wrote:He probado lo que me ha dicho cictec en bennugd y los resultados son:
-60,0 fps 300 objetos y 30,0 fps 500 objetos
Entonces resumiendo, ejecutando el test CPU en las mismas condiciones los resultados son:
Gemix (Legacy):
-60,0 FPS 1000 procesos y 30,0 FPS 2000 procesos
BennuGD:
-60,0 FPS 300 procesos y 30,0 FPS 500 procesos

Correcto ?
Hokuto7 wrote: Tambien he probado mi ejemplo de gemix en la version modern,gracias a estos archivos("libglapi.dll,opengl32.dll") he podido probar la version modern y el resultado es:
-60,0 fps 150 objetos,verion modern
-60,0 fps 1000 objetos,version legacy

Ahora comento los ejemplos de erkozone:
-test gemix 177 objetos
-test gamlibzero_c++ 71 objetos

Tambien he probado el mismo ejemplo en la version java
-test gamelibzero_java 42 objetos
Pues para ejecutar la version Modern te faltaban archivos instalados en el sistema, no era en realidad un problema de Gemix en si.

Sobre el rendimiento, pues veo que tu tarjeta no es amigable con OpenGL de hecho te da resultados muchos mayores Gemix Legacy (CPU) que Gemix Modern (GPU) a pesar que todavia la Modern tiene mejor rendimiento respecto a todos los otros engines con GPU que has probado, incluso todas las versiones de la lib de erkosone en todos los lenguajes implementados.


En definitiva podemos decir que Gemix es lo que mejor rendimiento te da en tu maquina.
User avatar
erkosone
Posts: 10656
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.
Contact:

Re: Test de mi gameEngine en C++

Post by erkosone »

Hola CicTec, voy a compilar para modern con el ejemplo que has compartido, la verdad es que pensaba que la versión modern era otra que habia que descargar a parte.
Voy a compilarlo para ver la comparación en mi maquina.
Post Reply

Return to “Offtopic”