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 erkosone » Sat Dec 08, 2018 10:44 pm

Pues yo no lo entiendo.. haber tengo gemix 0.7.5 que creo que es la ultima versión no?
En mis test gemix apenas lanza 150 procesos en compraración con los miles que consigo en C++ no se como a ti te lanza 1000 procesos gemix, es imposible hokuto, haber que no te estoy llamando mentiroso pero vaya.. que resulta muy raro que haya tantisima diferencia entre tus test y los mios.

Te paso un test en gemix y uno en C++ para comparar, son exactamente lo mismo, cuelgo el source tmb.

Porfa hazme una captura tio de el numero de procesos que te captura cada cual.

Mis resultados con gemix: 298 procesos.
Mis resultados con C++ gameLibZero: 8192 procesos, y no hago screen de cuando paso de este valor por que se renderizan en una segunda surface y queda feo.. pero realmente alcanzo mas de 20.000.

Source Code (Gemix) [ Download ] [ Hide ]
  • 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 = rand(0, 640);
  •         y = rand(100, 400);
  •         size = 50;
  •         loop
  •                 angle += 1000;
  •                 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:
  •    
  •     void frame(){
  •         angle ++;
  •     }
  •    
  • };
  • //--------------------------------------------------------------------------------------
  • class textosArriba : public sprite{
  •     public:
  •         int i = 0;
  •     void frame(){
  •         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 = GetRandomValue(0,640);
  •                     a->y = GetRandomValue(100, 400);
  •                     a->size = 50;
  •                     a->graph = img;
  •                     a->visible = true;
  •                 }
  •                 //st = 20;
  •             }
  •            
  •             break;
  •     }
  •    
  • }



Te cuelgo el mismo test exacto en ambos lenguajes para poder comprar, por que me has dejado flipando con tus resultados, haber si alguien mas puede hacer la prueba for favor y así compraro entre diferentes equipos, me gustaría saber sobre todo que CPU y GPU tiene el equipo con el que haceis las pruebas.
Gracias de antemano. :)
EDIT: Tras los resultados obtenidos en estos test ya me dedicaré a integrar la conocida Chipmunk2D con la gameLibZero en C++ si los resultados son buenos, con esto ya tendré el render, el gameLoop y la fisica todo en uno, haber que tal, supongo que con la experiencia que tengo ya con esta libreria de fisica no deberia ser un problema ponerla en marcha en poco tiempo integrada con los procesos.
- Aunque no este el test disponible.. cuelgo la imagen también, de la actual gameLibZero en su versión processing/java por hardware..

EDIT: Ya he arreglado el problema de la ordenación de los procesos por su Z de forma "ESTABLE", joer no conocia el motodo stable_sort() de c++ que funciona genial por cierto con vectores de objetos.. pues eso, que ya tengo los procesos, con sus variables locales predefinidas y el sistema de ordenación Z para pintar, si todo va bien comienzo con la física y las colisiones en breve.
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 OskarG » Sun Dec 09, 2018 11:21 am

amd a10
Gemix ..............260................
libzero.............5600................


Ya se por que va tan lento en gemix comparado con libzero.....te cuento erkos:
tengo p4 y un amd a10..me compre este ultimo porque gemix en 32 bits me daba una tasa de frames muy bajos 25 fps, el ejemplo de las esmeraldas ........La sorpresa fue que con el amd me daba otra vez 25 fps...pero en cambio en otros engines o juegos javascript note una mejoria sustancial,tanto que supera en gemix en fps....pero es por mi tarjeta que por algun motivo en 32 bits en gemix no lo soporta adecuadamente,cambiando de profundidad es cuando noto realmente fluidez en gemix,pero a estas alturas hacer un juego sin canal alpha es absurdo,"pues te dan un par de galletas "por ser tan anticuado. :lol:
Last edited by OskarG on Sun Dec 09, 2018 11:35 am, edited 1 time in total.
User avatar
OskarG
 
Posts: 612
Joined: Tue Jan 12, 2010 2:12 am

Re: Test de mi gameEngine en C++

Postby Hokuto7 » Sun Dec 09, 2018 11:27 am

Lo pruebo despues y te comento.

Pero puede que la razon de que a mi me salgan muchos procesos es porque no estoy rotando los sprites y utilizo un sprite mas pequeño.

He comprobado en otros test que yo hice hace tiempo que cuando utilizo alguna funcion o variable que hace calculos como angle o fget_angle los fps bajan.

Te paso mi ejemplo para que tu lo pruebes.
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 Hokuto7 » Sun Dec 09, 2018 11:38 am

image de mi test,ahora me salen mas objetos a 60 fps y no se porque.
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 OskarG » Sun Dec 09, 2018 11:44 am

no tiene sentido,hay algo que falla en los ejemplos,me bajo gemix y te cuento realmente ...
User avatar
OskarG
 
Posts: 612
Joined: Tue Jan 12, 2010 2:12 am

Re: Test de mi gameEngine en C++

Postby CicTec » Sun Dec 09, 2018 11:49 am

Hokuto7 wrote: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

Hola Hokuto7,

Bennugd no ejecuta en la misma forma que Gemix y los otros engine, por default utiliza volcado y restauro pantalla parcial, todos los otros engines usan restauro pantalla completo, en tu ejemplo de BennuGD despues del SET_MODE (asecurandote que sea 32bit) pon esas lineas de codigo:
Source Code (Gemix) [ Download ] [ Hide ]
  • begin
  •    set_mode(640, 400, 32);
  •  
  •    restore_type = complete_restore;
  •    dump_type = complete_dump;
  •  

Entonces reprueba los tests, salvo casos raros, el rendimiento mejor en tu maquina deberia darlo Gemix entre todos los engines que probaste.
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 11:52 am

OskarG wrote:amd a10
Gemix ..............260................
libzero.............5600................


Ya se por que va tan lento en gemix comparado con libzero.....te cuento erkos:
tengo p4 y un amd a10..me compre este ultimo porque gemix en 32 bits me daba una tasa de frames muy bajos 25 fps, el ejemplo de las esmeraldas ........La sorpresa fue que con el amd me daba otra vez 25 fps...pero en cambio en otros engines o juegos javascript note una mejoria sustancial,tanto que supera en gemix en fps....pero es por mi tarjeta que por algun motivo en 32 bits en gemix no lo soporta adecuadamente,cambiando de profundidad es cuando noto realmente fluidez en gemix,pero a estas alturas hacer un juego sin canal alpha es absurdo,"pues te dan un par de galletas "por ser tan anticuado. :lol:

Pero por favor comparad las cosas bien ante de dejar comentarios de este tipo, el test lo estas ejecutando con la version Legacy que es render por software (CPU), libzero y los otros engines (excepto BennuGD) son por aceleracion hardware (GPU) por una comparacion mas adecuada prueba la version Modern contra libzero y lo que sea.
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 11:59 am

erkosone wrote:Pues yo no lo entiendo.. haber tengo gemix 0.7.5 que creo que es la ultima versión no?
En mis test gemix apenas lanza 150 procesos en compraración con los miles que consigo en C++ no se como a ti te lanza 1000 procesos gemix, es imposible hokuto, haber que no te estoy llamando mentiroso pero vaya.. que resulta muy raro que haya tantisima diferencia entre tus test y los mios.

Como dicho anteriormente a OskarG, probad las cosas bien, el test esta hecho con la version Legacy que es CPU, tu libreria es GPU, no se puede comparar, usa la Modern de Gemix que es GPU para una comparacion adecuada.

Por otro lado tu test no es preciso, cada proceso asigna una posicion random y cada engine puede responder de forma distinta al random, dejando mas objetos respecto a otro parcialmente fuera de la pantalla y esto influye en la comparacion de frame, cambiar el proceso por:
Source Code (Gemix) [ Download ] [ Hide ]
  • process proc()
  • begin
  •         graph = img;
  •         x = 320;
  •         y = 200;
  •         size = 50;
  •         loop
  •                 angle += 1000;
  •                 frame;
  •         end
  • end
  •  

De esa forma todos los tests en todos los engines se ejecutan en la misma condicion, asegurate todavia que tu libreria no tenga Z buffer activo porque podria dar resultatos erraticos estando todos los graficos en la misma posicion del centro de pantalla.
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: Test de mi gameEngine en C++

Postby OskarG » Sun Dec 09, 2018 12:10 pm

Pues esperando que den ejemplos adecuados....
User avatar
OskarG
 
Posts: 612
Joined: Tue Jan 12, 2010 2:12 am

Re: Test de mi gameEngine en C++

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

OskarG wrote:Pues esperando que den ejemplos adecuados....

Aqui os van:

Gamelibzero:
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:
  •    
  •     void frame(){
  •         angle ++;
  •     }
  •    
  • };
  • //--------------------------------------------------------------------------------------
  • class textosArriba : public sprite{
  •     public:
  •         int i = 0;
  •     void frame(){
  •         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){
  •                     cosa* a = new cosa();
  •                     a->x = 320;
  •                     a->y = 200;
  •                     a->size = 50;
  •                     a->graph = img;
  •                     a->visible = true;
  •                 //st = 20;
  •             }
  •            
  •             break;
  •     }
  •    
  • }
  •  


Gemix Modern:
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()
  • begin
  •         graph = img;
  •         x = 320;
  •         y = 200;
  •         size = 50;
  •         loop
  •                 angle += 1000;
  •                 frame;
  •         end
  • end
  •  


Para el test de BennuGD (CPU) contra Gemix Legacy (CPU) espera a que Hokuto7 resuba el ejemplo con la modifica que indique anteriormente.
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

PreviousNext

Return to Offtopic

Who is online

Users browsing this forum: No registered users and 11 guests