Juego que combina graficos 2D y 3D

Started by Windgate, January 18, 2009, 06:32:03 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Windgate

Hola,
he empezado a hacer jueguecitos en 3D hace poco, y una de mis primeras dudas ha sido como poner texto en pantalla, ya que las funciones tradicionales write() y write_var() me dan parpadeos feos...

Tambien habia pensado en poder usar graficos en 2D (De un FPG) junto con graficos 3D (Haciendo render y tal)... Pero dudo que la cosa vaya a funcionar facilmente...

Para evitar parpadeos y cosas raras con textos y procesos que usan un FPG: ¿Habria que jugar con la variable local z, con ctype, con region...? Si alguien sabe de algun proyecto que tenga que ver con esto le agradeceria mucho que me pasase el codigo.

Pronto subire mi nuevo proyecto 3D... Estoy a punto de decir que abandono el 2D hasta nueva orden, estoy excitadisimo (lol).

Salud!
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Prg

#1
:) lo mismo me pasa, me paso de uno a otro.

Malas noticias
las malas noticias son, que como las librerías m8ee son hechas por linkernel, un compañero del foro que tiene como un mes sin visitarnos  :'( pues no podemos presentar procesos con gráficos y renderisar el 3d al mismo tiempo, o es uno o el otro. por esta misma razón los textos no se ven con write.

incluso la librería sigue haciéndose, faltan algunas cositas, pero está increíble.

ejemplos hay en la carpeta que descargas, en pak\prg.

el txt que dice test list son todos los ejemplos. los textos están en el ejemplo: test09, si no lo tienes dice así.

[code language="bennu"]/*
  MODE8 ENHANCED ENGINE
  ColDev (C) 2004   
  ----------------------                 
 
  -M8EE 3D Engine, Fase Beta -
 
 
 
  DESC: TEST DRAW TEXT
        TEST LIGHTS 
        TEST sprites 3d and 2d   
  cool tool included in the "/tools" directory 
 
 
  en el directorio "/tools" , hay una herramienta para fuentes,
  el tamaño y propiedades de la fuente se puede modificar
  con el editor  adjunto.
 

*/

include "m8ee.h"



global

  modelo,camara,texturamario,posx,posy;
  i,light,mitexto,tablero,movimiento,
  mitexto2,mitextura,mitextura2;
 
  float efps;
  mivariabletext,mivariabletext2,myimage;
 
  _Pos3D pos;   
 
  _PLight lightProp;
     
   
begin

  //full_screen=TRUE;
  set_mode (640,480,16);                     
  set_fps (0,0); //max.   
 
  //creamos un hilo con el render...
   M8E_INIT(0);   
   
if (M8E_SCREENEXIST()==1   )
   
//--------------------------------------------           
  texturamario=M8E_LOADTEXTURE(  "media\Luigi.pcx"); 
 
   modelo=M8E_LOADANIMODEL(  "media\mario.md2" ); //modelo                               
   M8E_LOADTEXMODEL(modelo, texturamario );//textura     
   M8E_MODELSETMATERIAL(modelo, EMF_LIGHTING,1);//objeto es afectado x las luces y sombras
   M8E_ANIMODEL(modelo, 0,450);// animacion  (modelo,desde,hasta)                   
   pos.x=-(i*50); pos.y=0; pos.z=90;
   M8E_POSMODEL(modelo,&pos); //posicion  (modelo, pos3d)
 
     
   camara=M8E_ADDCAM(0,50,-60,  0,5,0);  //camara  (posx,y,z  ,targetx,y,z)
//--------------------------------------------     
   //ADICIONA UNA LUZ
   light=M8E_ADDLIGHT(-(i*50),0,90,  1,1,1, 150);  //(x,y,z, r,g,b,  radius)
   M8E_ADDANIMCIRCLE(light,-(i*50),0,90,  70, 0.001);// (centrox,y,z,  radio,velocidad)
   
   M8E_LIGHTGETPROP(light,&lightProp);//get light properties
   lightProp.AmbientColor.r=255;lightProp.AmbientColor.g=0;lightProp.AmbientColor.b=0;
   M8E_LIGHTSETPROP(light,&lightProp);//Set light properties
   
   
   
   //adiciona textos
   mitexto=M8E_GUIADDFONT("");  //load internal font
   //tiene q ser BMP , no se permite otro formato de fuente
   mitexto2=M8E_GUIADDFONT("media\fonts\fontcourier.bmp"); //load other font 
   
   
   //adiciona sprites 3d
   tablero=M8E_ADDBOARD(-(i*50),0,120, 200,150);  // (x,y,z,  with,height)
   mitextura=M8E_LOADTEXTURE("media\fenixbg640x480.jpg");
//  M8E_LOADTEXMODEL(tablero, mitextura );//textura   
   
   mitextura2=M8E_LOADTEXTURE("media\1.jpg");   
                         

  //DRAW variable TEXT   
   mivariabletext= M8E_GUIADDTEXT(mitexto2,"(x,y):(00000000,00000000)",350,400,  255,255,0,255);//(pointertext,stringtext, x,y,  alpha,r,g,b)
   
  //DRAW STATIC TEXT   
   M8E_GUIADDTEXT(mitexto, "Prueba de texto y luces    ", 30,320,  255,255,255,255);//(pointertext,stringtext, x,y,  alpha,r,g,b)
   M8E_GUIADDTEXT(mitexto2, "test text draw and lights", 30,350,  255,0,180,255);//(pointertext,stringtext, x,y,  alpha,r,g,b)
   M8E_GUIADDTEXT(mitexto2, "press left and right to move sprite", 30,370,  255,255,255,255);//(pointertext,stringtext, x,y,  alpha,r,g,b)
   mivariabletext2=M8E_GUIADDTEXT(mitexto2, "FPS: m8e(00000000) fenix(000000000000)", 30,390,  255,255,255,255);//(pointertext,stringtext, x,y,  alpha,r,g,b)
 
  //draw a IMAGE
   posx=20;
   posy=90; 
   myimage=M8E_GUIADDIMAGE(mitextura2, posx,posy, true); //(texture, x,y,  usealpha)   
   
   //bring to front, text and sprite
   //M8E_GUIBRINGTOFRONT(myimage,mivariabletext);

   while ( (!key(_esc))  )           
     
     //draw a variable text:
     m8e_GUISETtext(mivariabletext,"(x,y):("+iTOA(posx)+","+iTOA(posy)+")");
     m8e_GUISETtext(mivariabletext2,"FPS: M8ee("+iTOA(m8e_getfps())+") Fenix("+iTOA(fps)+")");
     

     //--------------------------
     //move sprite 2d
      M8E_GUImove(myimage, posx,posy);
     //--------------------------
     
   
     if (key(_left) ) posx-=10; end;
     if (key(_right) ) posx+=10; end;     
     if (key(_up) ) posy-=10; end;
     if (key(_down) ) posy+=10; end;     

     
     M8E_RENDER(0,  55,0,155); //(ALPHA,  R,G,B)
     
     frame;       
  end;                     
 

end; 
   
  //libera recursos 
M8E_FREE(); 


end

                       
[/code]

hoy antes de entrar al foro, entré al de magia, espero con ansias terrenos tileados, ahora tengo un cochinero por intentar hacerlos manualmente  :'( .

lamento decierte que aunque juegues con ctype y z no lograrás nada. las regiones del 3d son distintas a las del bennu.
trabajar con disparos y demás te resultará un poco complicado si no estás acostumbrado al get_id.

likernel nos ha pasado cientos de modelos 3d. de todo tipo, yo conozco foros de modelos de jeugos, programas para editarlos, hacerlos y extraerlos, etc. si deceas te paso los links y los foros, todos los foros no necesitan registrarse, pues yo rara vez me registro y tengo un montón de models.

los models que link nos ha pasado están en recursos/models 3d

suerte y continúa. en la mañana intentaba hacer un demo de carros para mostrar las librerías, a ver si link al ver que alguien más las usaba nos daba nuevas versiones, sin embargo quería introducirlas en terrenos hmp, pero la física de carros no corrió ahí, así que mejor lo dejé todo por la paz y me fuí al editor y mágico.

continúa con tu juego, te divertirás.

en recursos hay muchas cosas que te servirán, y puedes revisar el documento readme.pdf que viene en la carpeta doc de los ejemplos 3d, ahí vienen muchas zonas de descargas tanto de software (mucho es freeware), como de models :)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Windgate

Ok, fantastupendo, me pondre a pelear con las funciones M8EE para la GUI, en su dia lo intente sin conseguir nada, pero ahora con ese test sera todo mucho mas facil.

Echare un vistazo a los modelos que me comentas, la verdad no me habia fijado aun en esa seccion de enlaces.

Por cierto, he tenido un extraño problema: Utilizaba una version de Bennu3D.DLL anticuada y tuve que actualizarla para usar emisores de particulas. El problema es que desde que lo hice me han dejado de funcionar los focos de luz puntuales... Creo que lo mejor seria borrar todo y empezar desde 0... Instalare de nuevo la ultima wip de Bennu, ¿Con ella vienen los DLL tambien? Quiero asegurarme de tener la ultima version de todo para que no me vuelva a pasar xD
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Prg

 :D
cuando yo instalé la nueva versión me dejó de funcionar la función m8e_getdistance (o algo así), m8e_animcurframe. Necesité hacerme una función yo mismo.

algunos links de models, quizá ya los había dado, pero para que no busques tanto :) :

http://reinerstileset.4players.de/englisch.html
http://rf-espanol.foroactivo.com/modelos-f4/ (mi foro favorito, de aquí saqué la mayoría)
http://www.md2.sitters-electronics.nl/models1.html (de esta no me acuerdo qué había, pero ahí va).
http://ourworld.compuserve.com/homepages/bernier/ (compilador de map a bsp)
http://shaderlab.com/q3map2/ (editor de map)

tengo los links de mis models, si los quieres luego los busco.

Si te puedo ayudar en algo, ya sabes, me dejas un mensaje. y si te animas y te emocionas, podríamos hacer un proyecto entre los dos, así sería más fácil terminarlo, ya sea el mágico, uno tuyo, uno de carros tipo mario cart, no se. bueno, te dejo para que te sigas emocionando con las librerías. :)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Windgate

Veo que no hay demasiados sitios dedicados a esto, 2 de los 5 links que me has pasado ya los tenia fichados por mi cuenta xD

Estoy preparando una escena 3D para una asignatura de la universidad, en cuanto tenga probadas las funciones que quiero usar (Casi todas) podriamos ponernos a hacer algo, aunque acabo de empezar con el 3D, lo iremos hablando.

Lo del Mario Kart lo tenia ya pensado. He hecho muchas pruebas de fisica y colisiones entre objetos y podria dar mucho juego a la cosa.

Subire a este hilo lo que tengo en cuanto "limpie" el codigo.

Saludazos!
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Prg

:) ya dijiste  :D

en cuanto a los carros, la venjata es que la física ya está hecha, la desventaja es el problema de los compiladors bsp, no eh encontrado uno que bennu lo tome directamente, o quizá sea que no se hacerlo. por eso me he dado por 3ds y hmp (terrenos).

saludos, y hasta pronto. :)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)