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 »

Hola erkos,

No, es el paquete es unico y las DLLs de Legacy y Modern estan en la misma carpeta, solo hay que comentar/descomentar la opcion de compilacion y cambiar el MODE_SET como indique para pasar de Legacy a Modern y viceversa.
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 »

Pues efectivamente..
Gemix modern : 22500 procesos aprox..
gameLibZero: 17800 procesos aprox..

Gemix en render puro pega fuerte en windows si..
Voy a probar mas test para comparar bien, pero en renderizado gemix esta bastante agil la verdad..
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 »

Vale, recordaba que gemix tiene un gran cuello de botella.. y no recordaba bien cual es, se trata del procesamiento.. se muere literalmente cuando tiene muchas operaciones matematicas seguidas..
Ahora CicTec mira este test.. y compara los resultados:

[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()
private
int k = 0;
begin
graph = img;
x = 320;
y = 200;
scale.x = 50;
scale.y = 50;
loop
rotation.z += 1000;
for(k=0; k<100000; k++)

end
frame;
end
end


[/Codebox]



[Codebox=cpp file=Untitled.cpp]/* gameLibZero game.cpp template */
#include "gameLibZero.cpp"

// Global var block..
Texture2D img;
int st = 0;
//--------------------------------------------------------------------------------------
void setup(){
setMode(640, 400);
//ToggleFullscreen();
setTitle("gameLibZero C++ port render test with openGL 3.x");
setFps(60);
img = loadImage("data/images/00.png");
}
//--------------------------------------------------------------------------------------
class cosa : public sprite{
public:
int k = 0;
void frame(){
angle ++;
for(k=0; k<100000; k++){

}
}
};
//--------------------------------------------------------------------------------------
class textosArriba : public sprite{
public:
int i = 0;
void frame(){
z = -10;
DrawFPS(10, 10);
i = sprites.size();
screenDrawText(GetFontDefault(), 22, i, RIGHT, 120, 10, BLACK, 255);
}
};
//--------------------------------------------------------------------------------------
void draw(){
switch(st){
case 0:
new textosArriba();
st = 10;
break;
case 10:

if(GetFPS() > 58){
for(int i=0; i<10; i++){
cosa* a = new cosa();
a->x = 320;
a->y = 200;
a->size = 50;
a->graph = img;
a->visible = true;
}
}
break;
}

}
//--------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------




[/Codebox]
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 »

erkosone wrote:Pues efectivamente..
Gemix modern : 22500 procesos aprox..
gameLibZero: 17800 procesos aprox..

Gemix en render puro pega fuerte en windows si..
Voy a probar mas test para comparar bien, pero en renderizado gemix esta bastante agil la verdad..
Pues bastante mas que raylib veo y considera que Gemix tiene ejecucion de procesos separados respecto a tu libreria y estan interpretados no nativos, lo que afecta aun mas en rendimiento.
User avatar
CicTec
Posts: 16590
Joined: Thu Jul 31, 2008 10:18 pm

Re: Test de mi gameEngine en C++

Post by CicTec »

erkosone wrote:Vale, recordaba que gemix tiene un gran cuello de botella.. y no recordaba bien cual es, se trata del procesamiento.. se muere literalmente cuando tiene muchas operaciones matematicas seguidas..
Ahora CicTec mira este test.. y compara los resultados:

[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()
private
int k = 0;
begin
graph = img;
x = 320;
y = 200;
scale.x = 50;
scale.y = 50;
loop
rotation.z += 1000;
for(k=0; k<100000; k++)

end
frame;
end
end


[/Codebox]



[Codebox=cpp file=Untitled.cpp]/* gameLibZero game.cpp template */
#include "gameLibZero.cpp"

// Global var block..
Texture2D img;
int st = 0;
//--------------------------------------------------------------------------------------
void setup(){
setMode(640, 400);
//ToggleFullscreen();
setTitle("gameLibZero C++ port render test with openGL 3.x");
setFps(60);
img = loadImage("data/images/00.png");
}
//--------------------------------------------------------------------------------------
class cosa : public sprite{
public:
int k = 0;
void frame(){
angle ++;
for(k=0; k<100000; k++){

}
}
};
//--------------------------------------------------------------------------------------
class textosArriba : public sprite{
public:
int i = 0;
void frame(){
z = -10;
DrawFPS(10, 10);
i = sprites.size();
screenDrawText(GetFontDefault(), 22, i, RIGHT, 120, 10, BLACK, 255);
}
};
//--------------------------------------------------------------------------------------
void draw(){
switch(st){
case 0:
new textosArriba();
st = 10;
break;
case 10:

if(GetFPS() > 58){
for(int i=0; i<10; i++){
cosa* a = new cosa();
a->x = 320;
a->y = 200;
a->size = 50;
a->graph = img;
a->visible = true;
}
}
break;
}

}
//--------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------




[/Codebox]
Es por el tema de la interpretacion que te dije anteriormente, aunque tu ejemplo no es comparativo, hacer un bucle de 100000 iteraciones para nada no es que sea usado en un juego realmente.

En todo caso en cuanto a renderer ya su nivel esta bastante optimizado.
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 »

ya CicTec, intenta hacer un emisor de particulas en gemix, no se puede por esto mismo, o intenta escanear pixel a pixel una imagen y sacar los R G B A de cada pixel y hacer efectos en real time.. tampoco se puede, y así con todos los trabajos repetitivos que requieren grandes cantidades de procesamiento, pero si, en cuanto al render esta muy bien la verdad.
User avatar
CicTec
Posts: 16590
Joined: Thu Jul 31, 2008 10:18 pm

Re: Test de mi gameEngine en C++

Post by CicTec »

erkosone wrote:ya CicTec, intenta hacer un emisor de particulas en gemix, no se puede por esto mismo, o intenta escanear pixel a pixel una imagen y sacar los R G B A de cada pixel y hacer efectos en real time.. tampoco se puede, y así con todos los trabajos repetitivos que requieren grandes cantidades de procesamiento, pero si, en cuanto al render esta muy bien la verdad.
Se pueden hacer, otra cosa es que no puedes hacerlo en forma "clasica", sino con algunos trucos usables con la particular programacion DIV y el resultado sera lo mismo en rendimiento de tu primero ejemplo, aunque claro eso no quita que la interpretacion ahora mismo en algunas cosas clasicas puede causar problemas, pero ya estuve haciendo hace tiempo pruebas y con algunos tests que hice consegui reducirlo sensiblemente y con mas trabajo podria eliminarlo totalmente, pero requiere bastante tiempo que ahora mismo me falta...
User avatar
Hokuto7
Posts: 1408
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en C++

Post by Hokuto7 »

testgemix2.PNG
Como he conseguido hacer funcionar la version modern de gemix,he modificado el test de gemix de erkozone para que funcione en modern y este es el resultado.

Parece que raylib funciona mas rapido que gemix en modo hardware,habria que ver como funciona raylib por software.
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:
testgemix2.PNG
Como he conseguido hacer funcionar la version modern de gemix,he modificado el test de gemix de erkozone para que funcione en modern y este es el resultado.

Parece que raylib funciona mas rapido que gemix en modo hardware,habria que ver como funciona raylib por software.
El ultimo test de erkosone no es comparativo, no tiene utilidad en el mismo la ejecucion del bucle vacio, es el primer test que demuestra que el engine de Gemix es mas rapido de raylib (almenos en las maquinas testadas), pero bueno...

raylib no funciona por software, es solo por GPU.
User avatar
Hokuto7
Posts: 1408
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en C++

Post by Hokuto7 »

Muestro los resultados de los ultimos test pero no seria mejor que hagais un test en condiciones,porque aburre un poco estar haciendo tantas pruebas que lo luego uno dice que no funciona el otro dice que si,oye que lio macho :lol:
You do not have the required permissions to view the files attached to this post.
Post Reply

Return to “Offtopic”