Juego de Magia

Started by Prg, June 05, 2008, 05:18:16 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Prg

hola, yo estoy trabajando en un juego de primera persona (porque la cámara en 3ra me desespera, y formulé mi propia cámara, pero no me gustó, la palanca 2 del joystick no está funcionando y es incómodo trabajar con el joistick y el ratón a la vez), en donde colocaré el mapa y espero los personajes en estilo cell shading, o almenos que no se vea tan realista, espero crear efectos mágicos, sin embargo estoy todavía trabajando con eso, pues eh intentado colocar objetos 2d en el plano 3d y no eh encontrado la función, quizá porque está en inglés la ayuda. eh trabajado con Div 2, con Fenix, Con entidad 3d, y otros programitas por ahí, y veo que bennu 3d promete mucho, espero terminar mi juego, pues me desespero muy fácilmente, por lo general los dejo a la mitad, o con pequeños bugs. Me eh inspirado en Metroid, y en Zudeky, y espero lograr un resultado satisfactorio, ya llevo algunos mapas terrain, que son los más fáciles de hacer, y uno que otro que hice con el world editor de entidad 3d, y que eh exportado a un formato compatible (que bueno que hicieron compatible al bennu 3d con muchos formatos). Bueno, pues esperemos las cosas sucedan bien, y si lo termino, ustedes serán los primeros en verlo. Yo no conozco mucho de programación, excepto lo que eh aprendido en todos estos años de trabajar con el Div y el XNA, sin embrago, creo que la imaginación no me falta para ésto...
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

SplinterGU

Bienvenido... y con respecto al las palancas de los joys, ya hay un mod del mod_joy hecho por Sandman, que permite su uso. Hay que hacer un merge (union) con la version oficial.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Prg

Gracias por la bienvenida. Y sobre lo de el mod_joy, dónde lo puedo conseguir? Gracias.
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

SplinterGU

Es un fuente que tengo yo, pero que esta a mitad de las cosas, porque hay cosas que hay que corregir o cambiar... y si Sandman no lo hace, lo tendre que hacer yo... pero bueno, ahora mismo no puedo hacerla... pero pronto.. mientras joy y raton...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Prg

oh, ya veo. Gracias, entonces esperaré un poco más... De mientras trabajaré con la creación de mis mapas, y con el cambio de ellos. Creo que colocaré puertas entre las montañas... ja ja ja, la verdad no estoy muy seguro. quizá utilice cuevas como en algunas partes de Fable, pues no quiero perder mucha memoria en mapas que sólo oculten el espacio vacío, pero que no se puedan recorrer. Bueno,pues gracias por la respuesta, y por su trabajo, en verdad se necesitaba un lenguaje más cómodo para hacer juegos.
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

SplinterGU

Perdon, me olvide que si hay una version de joystick que si bien no es la oficial, permite manejar a la perfeccion lo que buscas...

http://forum.bennugd.org/index.php?topic=120.msg1103
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Prg

ok, muchas gracias, ya las descargué y ahora las pruebo.
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Prg

hola, no había tenido mucho tiempo, exámenes y tareas. Pero ahora aquí tengo la cámara de mi juego, la comparto por si a alguien le pudiera ayudar, aunque la verdad es muy sencilla y estoy seguro ya se les había ocurrido.

[code language="bennu"]
process camarappal()
private
   _CameraFPS datos;
   
     string vej; 
   int  protacol;   
   mivariabletext; 
   
   alt=90;
begin               
   
datos.turnspeed=100; datos.movespeed=500; datos.jumpspeed=0.8;   
camara= M8E_ADDCAMFPS(&datos); //camera fps                             
 
M8E_POSMODEL(camara, &pos_m);
         
M8E_CAMTARGET(camara, &pos_m);
      M8E_CAMSETFAR(camara, 20000);

M8E_ADDANIMCOL(mapacolision,camara, 1,1,1,  0,0,0,  1,1,1);//(collision,ISceneNode, ellipsoidRadiusx,y,z,  gravityPerSecondx,y,z,    ellipsoidTranslationx,y,z  )
         
     
       
   //   jom=joy_name(0);
        //   mivariabletext= M8E_TEXTDRAW(mitexto,"hola",350,400,  255,255,0,255);//(pointertext,stringtext, x,y,  alpha,r,g,b)

// M8E_ADDLIGHT(pos.x, pos.y, pos.z,
                   //                  150, 200, 100, 10);

loop     


 
  if ( GamePad[0].z_AXIS <= -10000 & alt <200) alt++; end   
  if ( GamePad[0].z_AXIS >= +10000 & alt >1 ) alt--; end
 
  if ( GamePad[0].z_ROT <= -10000)  angul+=1500; end
  if ( GamePad[0].z_ROT >= 10000)  angul-=1500; end   
     

           if (GamePad[0].Button[9])
           if (GamePad[0].isForceFeedback==1)
     JOY_PLAYFORCE(GamePad[0].id);
    end;                               end
       
     
      vej=pos_m.y;   
           
      //   m8e_textchange(mivariabletext,itoa(color ));
         /*say("x=" + itoa(pos_m.x));
         say("y=" + itoa(pos_m.y));
         say("z=" + itoa(pos_m.z));  */
                                       
                 //     color=map_get_pixel(0,1,pos_m.x/150,pos_m.z/150);   
          // if (color==33280) pos.z+=5;  M8E_POSMODEL(camara, &pos); end   
          // if (color==63488) pos.x+=5;  M8E_POSMODEL(camara, &pos); end
          // if (color==32792) pos.x-=5;  M8E_POSMODEL(camara, &pos); end
              //  color=map_get_pixel(0,1,262,130);
         
          poscam.x=pos_m.x+ get_distx(angul,130);
          poscam.z=pos_m.z+ get_disty(angul,130);
            poscam.y=pos_m.y+alt;
          M8E_POSMODEL(camara, &poscam);
                                          pos_m.y+=80;
               M8E_CAMTARGET(camara, &pos_m); 
               
    frame;       
End;
   
              end


...................



process protagonista();
begin   
  prota=  M8E_LOADANIMODEL("media\enano\dwarf1.ms3d");
     
     
   
     M8E_MODELSETMATERIAL(prota, EMF_LIGHTING,0); 
                         
  M8E_POSMODEL(prota, &pos_m);   
 
 
       //  M8E_ANIMODEL(prota, 1, 37);

M8E_ADDANIMCOL(mapacolision,prota, 1,1,1,  0,-2,0,  0,20,0);
         
     
   
loop     


   
      M8E_getPOSMODEL(prota, &pos_m);
   
         
                posr.x=0; posr.y=angl/1000-90; posr.z=0;
                 
             
           M8E_MODELROTATION(prota, &posr);
                                   
                  if (pos_m.x<450)pos_m.x=450;  M8E_POSMODEL(camara, &pos_m);  end
                   if (pos_m.x>37050)pos_m.x=37050;  M8E_POSMODEL(camara, &pos_m);  end
                   if (pos_m.z<450)pos_m.z=450;  M8E_POSMODEL(camara, &pos_m);  end
                   if (pos_m.z>37050)pos_m.z=43705050;  M8E_POSMODEL(camara, &pos_m);  end
               
           M8E_getPOSMODEL(prota, &posl);                           
  if ( GamePad[0].X_AXIS >= 10000) angl=fget_angle(poscam.x,poscam.z,posl.x,posl.z)+90000;  M8E_getPOSMODEL(prota, &posl);  posl.x=posl.x+get_distx(angl,4); posl.z=posl.z+get_disty(angl,4); posl.y-=2;  M8E_POSMODEL(prota, &posl); end;
  if ( GamePad[0].X_AXIS <= -10000) angl=fget_angle(poscam.x,poscam.z,posl.x,posl.z)-90000;  M8E_getPOSMODEL(prota, &posl);  posl.x=posl.x+get_distx(angl,4); posl.z=posl.z+get_disty(angl,4); posl.y-=2;  M8E_POSMODEL(prota, &posl); end;
  if ( GamePad[0].y_AXIS <= -10000) angl=fget_angle(poscam.x,poscam.z,posl.x,posl.z);  M8E_getPOSMODEL(prota, &posl);  posl.x=posl.x+get_distx(angl,4); posl.z=posl.z+get_disty(angl,4); posl.y-=2;  M8E_POSMODEL(prota, &posl); end;
  if ( GamePad[0].y_AXIS >= 10000) angl=fget_angle(poscam.x,poscam.z,posl.x,posl.z);  M8E_getPOSMODEL(prota, &posl);  posl.x=posl.x-get_distx(angl,4); posl.z=posl.z-get_disty(angl,4); posl.y-=2;  M8E_POSMODEL(prota, &posl); end;

//  if ( GamePad[0].y_AXIS <= -10000) abj=true; else abj=false; end;
if (GamePad[0].Button[1]) if (ad>1)  ad--;    posl.y+=10;  M8E_POSMODEL(prota, &posl); end else if (ad<100) ad+=0.1;  end end 


frame;
   

end end
             
[/code]

Se que no está muy entendible, además puede contener algunos errores, pero en ésto trabajo ahora, también lo hago con los poderes y los personajes. Quizá luego les pueda mostrar algunas imágenes.
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Prg

hola, disculpen, ¿todavía bennu no tiene un surtidor de partículas o alguna forma de generar humo y lluvia?
y en este caso [code language="bennu"]
process poder(tipo,posl);
begin   
modelo2= M8E_LOADSPHEREMODEL(22);
               
M8E_MODELSCALE(modelo2,  3,3,3);

  M8E_MODELSETMATERIAL(modelo2, EMF_LIGHTING,0);       
M8E_MODELMATTYPE(modelo2, EMT_TRANSPARENT_ADD_COLOR );
       
        poes.x=pos_m.x; poes.y=pos_m.y+40; poes.z=pos_m.z;
       
       
M8E_POSMODEL(modelo2, &poes);
                 
            texture = M8E_ADDTEXTURELIST();
    M8E_TEXTURELISTADD(texture, M8E_LOADTEXTURE("media\texturas\094.bmp"));
    M8E_TEXTURELISTADD(texture, M8E_LOADTEXTURE("media\texturas\095.bmp"));
    M8E_TEXTURELISTADD(texture, M8E_LOADTEXTURE("media\texturas\096.bmp"));
    M8E_TEXTURELISTADD(texture, M8E_LOADTEXTURE("media\texturas\097.bmp"));
    M8E_TEXTURELISTADD(texture, M8E_LOADTEXTURE("media\texturas\098.bmp"));
    M8E_TEXTURELISTADD(texture, M8E_LOADTEXTURE("media\texturas\099.bmp"));
    M8E_TEXTURELISTADD(texture, M8E_LOADTEXTURE("media\texturas\100.bmp"));
    M8E_TEXTURELISTADD(texture, M8E_LOADTEXTURE("media\texturas\101.bmp"));
    M8E_TEXTURELISTADD(texture, M8E_LOADTEXTURE("media\texturas\102.bmp"));
    M8E_TEXTURELISTADD(texture, M8E_LOADTEXTURE("media\texturas\103.bmp"));
                 
     
  M8E_ADDANIMTEXTURES(modelo2,texture,50,true);
      movedi=angl;   
     
loop

          M8E_getPOSMODEL(modelo2, &poes);
             
    poes.x=poes.x+get_distx(movedi,4);
     poes.z=poes.z+get_disty(movedi,4);
      M8E_POSMODEL(modelo2, &poes);
                                     
     if (M8E_GETDISTANCE(prota, modelo2)>300) M8E_MODELREMOVE(modelo2);   signal(id,s_kill);  end
 
frame;
end end

[/code]

cómo libero de la memoria el   M8E_ADDTEXTURELIST(), será suficiente con ponerlo como privado y matar el proceso, o lo pongo como global y sólo sustituyo, pues si lo pongo como global toda la lista, me saca al llamar al proceso. existe alguna forma de liberar de la memoria la lista. y cómo se realiza?
Gracias
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

SplinterGU

Creo que en esto te puede ayudar la gente de coldev... link3rn3l es el que hizo este modulo 3d...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Prg

ja ja ja, de nuevo por acá. veo que no soy el único al que el blender le ha dado dolores de cabeza, lo que pasa es que es muy completo, pero complicado, sobre todo para lo que estamos acostumbrados a las ventanas, bueno, les dejo unas imágenes de mi juego, para ver qué se les ocurre, para él.

en ésta no tenía casi nada, sólo un poder  y decoración.
aquí está otra, actual, donde ya aparecen los 4 monos a elegir, al mismo tiempo y con un simple boton se cambia, ya funcional, aunque voy a poner 2 mujeres y otro, no se qué, pero para que sean distintos. y como primer enemigo unas hormigas que nos sirven de conejillos  de indas, aunque serán enemigos, no serán los únicos, ya casi tengo el apartado gráfico. Bueno, ahí va.
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

l1nk3rn3l

pasate por bennu3d y bajate la ultima version,
esta en constante actualizacion

http://3dm8ee.blogspot.com/

incluye ejemplos del sistema de particulas que es muy muy
modificable.. y se puede conseguir buenos efectos sin afectar
el rendimiento.

gracias por usar la libreria , la camara 3ra persona se ha
mejorado en esta ultima , me dices que tal,

milkshape
http://chumbalum.swissquake.ch/
puede ser una buena opcion para crear los mundos
lo mismo podria ser
http://www.delgine.com/   
o mas avanzado como un editor quake3 (mapa bsp)
http://www.qeradiant.com/

Prg

wow, el ejemplo de las partículas está increíble, yo estaba feliz por lo que había logrado, pero no se compara, gracias, lo utilizaré inmediatamente para los poderes de fuego y partículas de disparos mágicos, están verdaderamente increíbles :) la cámara, pues me formulé mi propia cámara, mueves los ángulos con el stick analógico derecho, y con el izq, mueves al mono, y la cámara lo sigue, tipo assassins creed o ninja gaiden, la verdad estoy muy acostumbrado a ésta cámara, pero se nota que la mejoraron eh, ya no tiembla como la anterior. Sobre el programa editor de mapas, pues utilizo el milk shape, es muy cómodo, para las zonas utilizo el world editor pro 0.7, que me los exporta en 3ds y ya nada más exporto las texturas en otra carpeta, es muy fácil excepto porque los nombres largos de las texturas los cambia, y hay que andar buscando, sin embargo, acabo de bajar los programas que me recomiendas, para probarlos, según lo que leí, ahora los mapas de quake 3 se cargan con todas sus características ¿no? pues entonces nos facilitará bastante la decoración, bueno, los pruebo para ver qué tal, muchísimas gracias por las recomendaciones de programas, y la verdad el ejemplo de partículas está muy padre, créeme, en las próximas imágenes de mis juegos sacaré a relucir el poder de las partículas gracias a lo que acabo de ver, la verdad me quebré la cabeza viendo porqué no tenían forma de modificar otros parámetros para las partículas, no los había buscado bien.
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Prg

ya los abrí, se ven un poco complicados, sobre todo en que tiene consola, bueno, esperemos no sea así, probaré a hacer algo, gracias.
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Prg

oye l1nk3rn3l, la actual versión me provoca un problema en el  M8E_MODELREMOVE(); y la versión que utilizaba antes, la r1.... no me lo provocaba, te explico, hay muchos procesos enemigos, y cada uno carga un model, pero es el mismo model, la misma ruta, sin embargo la variable en la que se carga es local por lo tanto cada enemigo debe cargar su propio model. pero cuando la energía de ellos llega a 0 lo remueven  M8E_MODELREMOVE(modelo_enem); y sí remueve uno sin provocarme el error, pero cuando remueve otro me saca, qué puedo hacer?, si no los remuevo se quedan haciendo todas sus animaciones y está un poco lento.
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)