Test de mi gameEngine en C++

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

Test de mi gameEngine en C++

Postby erkosone » Thu Dec 06, 2018 10:26 am

Buenas, os traigo ya por fin después de unas semanas desarrollando la primera versión de gameLibZeroCPP que es el mismo engine para hacer juegos 2D que he programando anteriormente para java/processing y recientemente termine tambinén para javaScript.

Esta en su primera versión, me faltan infinidad de cosas, pero ya se pueden hacer juegos completos.
- Incluye todo lo necesario para empezar a crear video juegos, todo el entorno está preconfigurado, el editor es el conocido Notepad++.

Como viene siendo costumbre en mi, presento un nuevo proyecto con una serie de videos para los pocos curiosos que quieran trastear con el, aquí va el primero.
En breve muchos mas :)

[UPDATE! - 24/12/2018]
[UPDATE! - 25/12/2018]
[UPDATE! - 28/12/2018]
[UPDATE! - 4/01/2019]

[UPDATE! - 01/02/2019]
DESCARGA ENTORNO: https://www.dropbox.com/s/54a7xq9gq0avc ... P.zip?dl=0

DESCARGA, INSTALACION y PRIMEROS PASOS


TUTORIAL 02: ESCENAS


TUTORIAL 03: ANIMACION Y SEÑALES.




TUTORIAL 05: JUEGO DE NAVES!







TUTORIAL 07 - COLISIONES!
Last edited by erkosone on Fri Feb 01, 2019 2:49 pm, edited 13 times in total.
User avatar
erkosone
 
Posts: 10626
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en C++

Postby Hokuto7 » Thu Dec 06, 2018 10:46 am

Mejor que setCenter() seria un metodo para eligir el punto de control que yo quiera para el sprite,esto lo he hechado en falta en la version de java.
User avatar
Hokuto7
 
Posts: 1140
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en C++

Postby erkosone » Thu Dec 06, 2018 11:36 am

lo de los puntos de control siempre me ha gustado, tengo que ver como meterlo en la lib sin que sea con un calzador jeje.. pero pensamos igual en esto..
Bueno, pues ahi va.. el test de la libreria ahora ya si, con el core de procesos funcionando perfectamente :)

Os dejo el zip para que lo probeis haber que rendimiento os da con procesos, supongo que será inferior al test anterior donde solo eran como bien dijo CicTec meras llamadas a funciones graficas, aunque ya os aviso de que esto corre muy rapido..

Sin despeinarse para nada me crean 10.000 procesos y los renderiza con angle y size sin bajar ni un fps.. esto promete, lo que hacer todo a pelo en C++ va a ser apoteosico pero reconozco que la libreria de este tio es espectacular, renderiza super rapido.

Fua mi test.. igual que con las llamadas a funciones.. a los 20.000 procesos se le va la olla al programa y ya salen glitches.. que esto ya es de la propia libreria a bajo nivel.. pero vamos.. que si pinta 20k procesos.. es para cagarse encima jeje..
You do not have the required permissions to view the files attached to this post.
User avatar
erkosone
 
Posts: 10626
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en C++

Postby shao » Thu Dec 06, 2018 11:46 am

Perdón mi ignorancia, no llegué a probar la versión de Java ya que ando con mi proyecto pero... ¿qué diferenciaría a tu engine de Gemix una vez que lo tengas pasado a C++?.
User avatar
shao
 
Posts: 5989
Joined: Wed Jun 17, 2009 4:51 pm
Location: Alicante

Re: Test de mi gameEngine en C++

Postby erkosone » Thu Dec 06, 2018 12:01 pm

el rendimiento y el uso libre de todas las librerias que existen en el mundo mundial, cosa que en gemix tienes que esperar a que algun alma caritativa haga el port de esa lib.

Osea, quieres programarte una caja registradora para una tienda como si fuera un juego? la usas..
Quieres programar un juego para win/linux/mac/web/ios/android/raspberrypi.. la usas..
Quieres usar vision artificial como por ejemplo openCV? la importas y la usas..
Quieres IA de ultima generación como tensorFlow de google? la importas y la usas..
Quieres comunicarte por un puerto serie, puerto usb, wifi, bluetoth etc? la usas.. solo tienes que cargar la lib necesaria y ya.

Pero tienes que aprender a usar C++ a fondo, es infinito mas dificil que gemix, gemix es muy sencillo de usar, pero C++ es mas rapido, es mas amplio, hay mas documentación, no tiene limitación ya que es el lenguaje base con el que practicamente se escribió el codigo fuente del universo.

No es ni mejor ni peor, es depende de lo que tu necesites, quieres entrar en steam? necesitas usar una lib que monetice tu juego? quieres micropagos? usar paypal? conectar con webs? faceboock? twitter? lo que sea.. C++ te deja ya que hay librerias para ello por todos lados..

En gemix también puedes hacer todo esto "si alguien antes" se toma las molestias de crear una libreria para ello.

No es mejor ni peor. es otro concepto. Gemix es un lenguaje cerrado, c++ es lo que es, dificil, pero abierto a todo lo que quieras con el coste de una mayor complejidad de inicio, por que al final te acostumbras y terminas viendolo normal..

Mira unity, se programa en C# y hasta gente que no tiene ni idea de programación lo usa y sabe copiar y pegar un source que hace algo.. pues en C/C++ igual..

La ventaja de C++ es que es completamente orientado a objetos y esto para proyectos grandes es obligatorio, y sobre todo que esta infinitamente documentado por todo internet desde hace decadas.

Eso no quita que en gemix haces un juego en 5 minutos, pero en C++ con una lib así también, ya colgaré un making off de como hacer un juego de cero cuando la tenga potable y lista para cumplir con los minimos.
User avatar
erkosone
 
Posts: 10626
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en C++

Postby erkosone » Thu Dec 06, 2018 1:30 pm

Por cierto, los glitches graficos que aparecen cuando renderizas mas de 8100 procesos ya se porque son XD.. joer.. y lo he visto solo por casualidad mirando un codigo fuente de la raylib que me ha comentado CicTec, gracias tio!!!

Se ve que el gl_buffer de quads esta limitado a ochomil y pico quads.. y pasado este numero se sigue renderizando los siguientes objetos en un segundo buffer.. pero el primero se ve afectado por las transformaciones graficas actuales..
solo tengo que resetearlas antes del render final y listos.. haber si funciona y podré subir el limite de procesos maximos a mas de 10 mil jejeje..

Gracias cictec!
User avatar
erkosone
 
Posts: 10626
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en C++

Postby Hokuto7 » Thu Dec 06, 2018 3:15 pm

Ya he probado la aplicacion que has puesto y me pone 35 objetos en pantalla,a este ritmo va a resultar mas lento que la version de java.

Como tenia curiosidad he realizado un test de rendimiento de clickteam fusion 2.5.
-A 60 fps me muestra 800 objetos y a 30 fps llega a 1200 objetos.

Clickteam fusion 2.5 es el motor mas rapido que he probado con diferencia y deja en muy mal lugar a los divlike y sobre todo a raylib.
User avatar
Hokuto7
 
Posts: 1140
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en C++

Postby Hokuto7 » Thu Dec 06, 2018 3:59 pm

Rectifico lo que he dicho sobre que clickteam fusion es el engine mas rapido que he probado.

He realizado la misma prueba de rendimiento en gemix y los resultados son asombrosos,la prueba consiste en pintar a lo largo y ancho de la pantalla continuamente un proceso y ver cuantos se crean antes de que bajen los fps.

Muestro los resultados:

-set_fps(60,0) 1000 procesos,set_fps(30,0) 2000 procesos
-set_fps(60,1) 2000 procesos,set_fps(30,1) 4200 procesos
-set_fps(60,2) 3000 procesos,set_fps(30,2) 6400 procesos

Pongo el codigo utilizado por si alguien quiere hacer pruebas en su casa.
Source Code (Gemix) [ Download ] [ Hide ]
  • program prueba_velocidad2;
  •  
  • global
  •         int graficos,fuente,objeto_nave;
  • end
  •  
  • begin
  •         mode_set(640,480,32);
  •         set_fps(60,0);
  •         fuente = load_fnt("fuente.fnt");
  •         graficos = load_fpg("graficos.fpg");
  •         write(fuente,32,32,4,"fps:");
  •         write(fuente,80,32,4,&fps);
  •         write(fuente,320,32,4,"objetos:");
  •         write(fuente,320,64,4,&objeto_nave);
  •         loop
  •                 nave();
  •                 if(key(_esc))
  •                         exit("salir",0);
  •                 end
  •                 frame;
  •         end
  • end
  •  
  • process nave()
  • begin
  •         objeto_nave++;
  •         file = graficos;
  •         graph = 1;
  •         x = rand(64,576);
  •         y = rand(128,420);
  •         loop
  •                 frame;
  •         end
  • end
  •  
User avatar
Hokuto7
 
Posts: 1140
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en C++

Postby erkosone » Thu Dec 06, 2018 5:43 pm

Hola hokuto gracias por probarlo tio, en este test he puesto un sistema de pintado distinto, este es directamente con aceleración grafica si o si, sin opción de render por soft.. por eso te salen tan pocos proceos, voy a volver al modo automatico que aunque da mucho mas de si la verdad es que es mas complicado de usar.. por que tienes que hacer las transformaciones graficas a mano..

Pero eso es algo que tengo que hacer yo en la libreria así que en definitiva al que la use le va a dar igual..

pues voy a volver al modo anterior y lo cuelgo esta noche sobre las 12 o 1.

Gracias por la prueba tio.
User avatar
erkosone
 
Posts: 10626
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en C++

Postby CicTec » Thu Dec 06, 2018 6:27 pm

Hokuto7 wrote:Rectifico lo que he dicho sobre que clickteam fusion es el engine mas rapido que he probado.

He realizado la misma prueba de rendimiento en gemix y los resultados son asombrosos,la prueba consiste en pintar a lo largo y ancho de la pantalla continuamente un proceso y ver cuantos se crean antes de que bajen los fps.

Muestro los resultados:

-set_fps(60,0) 1000 procesos,set_fps(30,0) 2000 procesos
-set_fps(60,1) 2000 procesos,set_fps(30,1) 4200 procesos
-set_fps(60,2) 3000 procesos,set_fps(30,2) 6400 procesos

Pongo el codigo utilizado por si alguien quiere hacer pruebas en su casa.
Source Code (Gemix) [ Download ] [ Hide ]
  • program prueba_velocidad2;
  •  
  • global
  •         int graficos,fuente,objeto_nave;
  • end
  •  
  • begin
  •         mode_set(640,480,32);
  •         set_fps(60,0);
  •         fuente = load_fnt("fuente.fnt");
  •         graficos = load_fpg("graficos.fpg");
  •         write(fuente,32,32,4,"fps:");
  •         write(fuente,80,32,4,&fps);
  •         write(fuente,320,32,4,"objetos:");
  •         write(fuente,320,64,4,&objeto_nave);
  •         loop
  •                 nave();
  •                 if(key(_esc))
  •                         exit("salir",0);
  •                 end
  •                 frame;
  •         end
  • end
  •  
  • process nave()
  • begin
  •         objeto_nave++;
  •         file = graficos;
  •         graph = 1;
  •         x = rand(64,576);
  •         y = rand(128,420);
  •         loop
  •                 frame;
  •         end
  • end
  •  

Hola Hokuto7,

Gracias por el test, todavia creo que hay una diferencia importante, la version que tu estas probando de Gemix es la Legacy, esto significa que renderiza por software (puro rendering via CPU), mientra el clickteam fusion funciona por aceleracion hardware, en tu caso estara usando Direct3D ya que OpenGL no te funciona bien (o quizas OpenGL de alguna forma que te funcione), de aqui la diferencia.

Por otro lado no se el test de este engine de erkosone como te va en comparacion a Gemix, pero si te funciona estara usando aceleracion hardware basada en OpenGl 1.1, porque no soporta Direct3D
User avatar
CicTec
 
Posts: 16171
Joined: Thu Jul 31, 2008 10:18 pm

Next

Return to Offtopic

Who is online

Users browsing this forum: No registered users and 7 guests