Test de mi gameEngine en C++

Todo aquello que no está relacionado con Gemix Studio ni con la programación DIV en general.

Re: Test de mi gameEngine en C++

Postby CicTec » Sun Dec 09, 2018 5:56 pm

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
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: Test de mi gameEngine en C++

Postby erkosone » Sun Dec 09, 2018 5:58 pm

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: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en C++

Postby erkosone » Sun Dec 09, 2018 6:09 pm

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:

Source Code (Gemix) [ Download ] [ Hide ]
  • 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
  •  
  •  
  •  




Source Code (C++) [ Download ] [ Hide ]
  • /* 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;
  •     }
  •    
  • }
  • //--------------------------------------------------------------------------------------
  • //--------------------------------------------------------------------------------------
  •  
  •  
  •  
  •  
  •  
You do not have the required permissions to view the files attached to this post.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en C++

Postby CicTec » Sun Dec 09, 2018 6:10 pm

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: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: Test de mi gameEngine en C++

Postby CicTec » Sun Dec 09, 2018 6:12 pm

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:

Source Code (Gemix) [ Download ] [ Hide ]
  • 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
  •  
  •  
  •  




Source Code (C++) [ Download ] [ Hide ]
  • /* 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;
  •     }
  •    
  • }
  • //--------------------------------------------------------------------------------------
  • //--------------------------------------------------------------------------------------
  •  
  •  
  •  
  •  
  •  

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
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: Test de mi gameEngine en C++

Postby erkosone » Sun Dec 09, 2018 6:22 pm

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
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en C++

Postby CicTec » Sun Dec 09, 2018 6:30 pm

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
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: Test de mi gameEngine en C++

Postby Hokuto7 » Sun Dec 09, 2018 6:53 pm

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
Hokuto7
 
Posts: 1396
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en C++

Postby CicTec » Sun Dec 09, 2018 6:58 pm

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
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: Test de mi gameEngine en C++

Postby Hokuto7 » Sun Dec 09, 2018 7:07 pm

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.
User avatar
Hokuto7
 
Posts: 1396
Joined: Mon Aug 28, 2017 10:14 am

PreviousNext

Return to Offtopic

Who is online

Users browsing this forum: No registered users and 14 guests