Page 23 of 33

Re: Test de mi gameEngine en C++

PostPosted: Sat Jan 12, 2019 10:31 pm
by erkosone
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 ;)

Re: Test de mi gameEngine en C++

PostPosted: Sat Jan 12, 2019 11:28 pm
by erkosone
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..

Re: Test de mi gameEngine en C++

PostPosted: Sun Jan 13, 2019 11:18 am
by Hokuto7
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.

Re: Test de mi gameEngine en C++

PostPosted: Sun Jan 13, 2019 1:12 pm
by erkosone
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..

Re: Test de mi gameEngine en C++

PostPosted: Sun Jan 13, 2019 5:40 pm
by Hokuto7
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:

Re: Test de mi gameEngine en C++

PostPosted: Sun Jan 13, 2019 7:30 pm
by erkosone
Tio.. abres 3dStudio o blender.. creas tu escenario.. lo exportas a .obj.. lo cargas en mi lib y arreando 8-)

Re: Test de mi gameEngine en C++

PostPosted: Sun Jan 13, 2019 8:40 pm
by erkosone
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-)

Re: Test de mi gameEngine en C++

PostPosted: Sun Jan 13, 2019 9:42 pm
by Hokuto7
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?.

Re: Test de mi gameEngine en C++

PostPosted: Sun Jan 13, 2019 10:09 pm
by erkosone
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...

Re: Test de mi gameEngine en C++

PostPosted: Mon Jan 14, 2019 9:40 pm
by Hokuto7
Se le puede meter de serie funciones para crear cubos y esferas o cualquier poligono simple y suelo ,para poder ir haciendo experimentos.