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 Jan 12, 2019 10:31 pm

Bueno señores.. pues si, funciona, y funciona bien jeje :lol: 8-)

Ya puedo decir que gameLibZero tiene motor 3d funcionando, en breve algun tutorial mostrando su potencial ;)
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en C++

Postby erkosone » Sat Jan 12, 2019 11:28 pm

Buenas gente, os comunico que acabo de liarme la manta a la cabeza y he decidido integrar un 3d en los procesos estilo div..

Esta idea me lleva rompiendo la cabeza desde hace muchos años.. pensando como integrar un sistema 3d en un sistema de procesos 2d y creo que tengo una buena solución.. Lo estoy planteando así:

- Los procesos de inicio son 2D, para que puedan representar un grafico o modelo 3D simplemente se usa esta función desde el proceso: set3D(); y ya esta.. el grafico ahora pertenece al plano 3d y no al 2d.. sus X Y Z serán las usadas para representarlo en el plano 3d del juego.

Para volver al modo de renderizado 2d tan solo hay que hacer: set2D(); y volveremos a tener un proceso normal y corriente.

ahora mismo estoy pensando el mejor nombre para asignar un modelo cargado al proceso y que sea este el que se represente.. como tengo las variable locales predefinidas graph y visible.. creo que bastará con que si visible == true el graph se represente en 3d o en 2d.. osea.. si se ha llamado desde un proceso concreto a set3D(); y hago visible = false; no se pintará su graph.. pero si hago setModel(xxx); entonces se pintará el modelo 3d..

La idea es que co-existan los dos sistemas conjuntamente, tanto el 3d como el 2d..

Así que lo que añado a los procesos es:

metodos:
set3D();
set2D();
setModel();
freeModel();

variables:
bool model_visible;
float anglex;
float angley;
float angle lo antengo ya que será igual que anglez..

Creo que tiene consistencia.. haber las pruebas que tal.. voy a intentar hacer algun mierda churro juego para ver si se hace natural escribir codigo con estos nombres.. que os parece este sistema?

Un ejemplo de codigo es este:
Source Code (C++) [ Download ] [ Hide ]
  • #include "gameLibZero.cpp"
  • int ST = 0;
  • Font fnt;
  • images img;
  • //------------------------------------------------------------
  • void setup(){
  •     setMode(1024, 600);
  •     setFps(60);
  •     fnt = LoadFont("data/fonts/00.png.fnt");
  •     loadImages("data/images", &img);
  • }
  • //------------------------------------------------------------
  • class objeto_2d:public process{
  •     public:
  •         int st = 0;
  •         int anima = 0;
  •         vector<int>animation = { 0,0,0,1,1,1,2,2,2,3,3,3,4,4,4 };
  •         void frame(){
  •             switch(st){
  •                 case 0:
  •                     {
  •                         graph = img[0];
  •                         visible = true;
  •                         x = 512;
  •                         y = 200;
  •                         size = 200;
  •                         st = 10;
  •                     }
  •                     break;
  •                 case 10:
  •                     {
  •                         anima = (anima+1)%animation.size();
  •                         graph = img[animation[anima]];
  •                     }
  •                     break;
  •             }
  •         }
  • };
  • //------------------------------------------------------------
  • class objeto_3d:public process{
  •     public:
  •         int st = 0;
  •         int anima = 0;
  •         vector<int>animation = { 0,0,0,1,1,1,2,2,2,3,3,3,4,4,4 };
  •         void frame(){
  •             switch(st){
  •                 case 0:
  •                     {
  •                         graph = img[0];
  •                         visible = true;
  •                         x = 0;
  •                         y = 0;
  •                         z = 0;
  •                         size = 200;
  •                         set3d();
  •                         st = 10;
  •                     }
  •                     break;
  •                 case 10:
  •                     {
  •                         anima = (anima+1)%animation.size();
  •                         drawGraphic3D(graph, x, y, z, size, alpha);
  •                         if(key(KEY_LEFT)){
  •                             x -= 0.1;
  •                         }
  •                         if(key(KEY_RIGHT)){
  •                             x += 0.1;
  •                         }
  •                         if(key(KEY_UP)){
  •                             z -= 0.1;
  •                         }
  •                         if(key(KEY_DOWN)){
  •                             z += 0.1;
  •                         }
  •                         if(key(KEY_Q)){
  •                             y += 0.1;
  •                         }
  •                         if(key(KEY_A)){
  •                             y -= 0.1;
  •                         }
  •                     }
  •                     break;
  •             }
  •         }
  • };
  • //------------------------------------------------------------
  • void draw(){
  •     screenDrawText(GetFontDefault(), 22, "gameLibZero 1.5", CENTER, 512, 50, WHITE, 255);
  •     screenDrawText(fnt, 64, "3D world + 2d sprites tech demo", CENTER, 512, 150, WHITE, 255);
  •     switch(ST){
  •         case 0:
  •             {
  •                 new objeto_2d();
  •                 new objeto_3d();
  •                 ST = 10;
  •             }
  •             break;
  •         case 10:
  •             {
  •                
  •             }
  •             break;
  •     }
  • }
  • //------------------------------------------------------------



Dejo este codigo compilado para trastearlo jeje.. que pasada esto es mas facil de lo que parecia..

La función drawGraphic3d(); es improvisada.. es un screenDrawGraphic() pero para 3d.. en la versión publica de la libreria no sera necesaria.. ya existirá el metodo interno render3D() de los procesos que renderizará automaticamente lo que tenga que renderizarse..
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 Hokuto7 » Sun Jan 13, 2019 11:18 am

Esta chulo el ejemplo de 3d pero aqui veo un gran problema,para realizar un juego 3d hay que tener un editor de niveles sencillo de usar y como no lo hay simplemente se usaria el 3d para realizar pequeños detalles para darle un toque especial al juego.
User avatar
Hokuto7
 
Posts: 1396
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en C++

Postby erkosone » Sun Jan 13, 2019 1:12 pm

un editor para que? para colocar 4 cajas, arboles.. montañas etc?
Yo estaba pensando en usar algo similar a Tiled por capas, en principio como raylib no tiene fisica2d ni 3d.. la fisica 2d la he integrado yo.. la fisica 3d es un tema pendiente todavia.. así que si te sirve un suelo plano para empezar.. te puede servir por ahora.

Aunque si, esta libreria es espartana si jeje..
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en C++

Postby Hokuto7 » Sun Jan 13, 2019 5:40 pm

No te preocupes yo no estaba pensando en nada en concreto,pero ya que te has puesto con el 3d y para hacer pequeños experimentos en un futuro,he pensado en poder crear juegos similares al doom clasico pero mas sencillo,se podria añadir suelos que tambien servirian para techos y tambien añadir paredes pero las paredes no se como se podrian crear si no se ve lo que estas añadiendo en el escenario,creo que es demasiado complicado sin un editor.

Lo que si se podria hacer es hacer una mezcla de 2d con 3d,por ejemplo un plataformas que tendria todo 2d menos las plataformas que serian 3d poligonales pero volvemos al mismo problema,si no hay editor como construyo el escenario.

En definitiva,has lo que tu creas y lo vamos viendo sobre la marcha,pero es verdad que tu libreria y los divlikke son para espartanos,aunque yo diria mas bien que son para dioses del olimpo. :lol:
User avatar
Hokuto7
 
Posts: 1396
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en C++

Postby erkosone » Sun Jan 13, 2019 7:30 pm

Tio.. abres 3dStudio o blender.. creas tu escenario.. lo exportas a .obj.. lo cargas en mi lib y arreando 8-)
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 Jan 13, 2019 8:40 pm

Acabo de sacar el codigo maldito para invertir una textura en su eje X e Y renderizandola como un sprite 3D jejeje... ya tengo el xmirror y el ymirror funcionando en 3D con sprites!!!!
Os dejo el nuevo ejemplo ahora con la librería ya funcionando muy decentemente con sprites 3D 8-) 8-)
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 Hokuto7 » Sun Jan 13, 2019 9:42 pm

Blender tiene una interfaz que es un infierno,este programa no lo uso ni loco y el 3dstudio tengo que buscar una version antigua que funcione en mi ordenador,vere si encuentro algo pero creo que es muy pronto para empezar a usar este editor cuando todavia no tienes casi nada de 3d en la libreria.

Seguire probando las nuevas versiones de la libreria hasta que tengas algo lo suficiente completo como para realizar algo en 3dstudio si es que encuentro alguna version que me funcione.

Alguien conoce otro programa de diseño 3d que sea gratuito y que pida pocos recursos?.
User avatar
Hokuto7
 
Posts: 1396
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en C++

Postby erkosone » Sun Jan 13, 2019 10:09 pm

mira..
teclas de cursor y Q A para la altura del mono haber si esto te abre el apetito del 3d jeje..

Y esperate que empiece a meterle shaders...
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 Hokuto7 » Mon Jan 14, 2019 9:40 pm

Se le puede meter de serie funciones para crear cubos y esferas o cualquier poligono simple y suelo ,para poder ir haciendo experimentos.
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 7 guests