Pequeñas dudas generales

Started by vib, December 17, 2010, 11:56:07 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

vib

Buenas a todos me alegra un monton encontrar este foro!

Bien.. he acabado un projecto de curso que era hacer un juego sencillito... la cosa esque lo tuve de hacer player-vrs-player por la maquina inteligente..
se como hacerla.. llenar la pantalla de if asta tener mil validaciones y que sea un tio apañao..
digo hay alguna funcion de benu " hago bennu 2d" para no tener de hacer tanta validacion?

luego otra pregunta...
He echo el movimiento del enemigo usando las funciones ged_dist y angle.. y se mueve bien pero.. tengo algo mal del codigo porque depende como le encare se mueve para el otro lado.. vamos que si alguien tiene una manera de hcaer que un enemigo cuando te vea vaya hacia ati sin compasion...
para copiarlo i asi mas facil.

Luego otra pregunta..
ese 1r juego del cole es estilo tipico juego de minijuegos que juegas te ries, mola... i ya....
Y eso tenia pensado subirlo a minijuegos... ya que jugador-vrs-jugador la gente que lo ha provado le ha encantado.. la pregunta es
Para hacer eso se tiene de pasar a flash me han dixo... eso como se haria? es muy complicado? se tendria de canviar mucho codigo? alguien puede explicarmelo?

Luego
Esto de hacer juegos me ha encantado! y aparte extra... estoy trabajando en un projecto bastante tocho con algun colega mas... que queremos subir a la red modo online.. la cosa es.. para hacer el juego en plan 1 jugador.. i pasarlo a modo online.. se tiene de tocar mucho codigo? es una parte totalmente distinta o como lo tendria de hacer?

enfin muchas gracias!

Drumpi

Bufff, como para entenderte, macho, anda que te explicas bien.
Intentaré responderte:

-Si no te gusta el IF, tienes SWITCH/CASE para comprobar una variable respecto a diversos valores o rangos. Si no es eso, no entiendo qué es lo que intentas hacer.

-Busca información acerca de GET_ANGLE y NEAR_ANGLE ;)

-Para pasarlo a FLASH... tienes que aprender lenguaje FLASH, no hay otra. Bennu es Bennu, C es C y flash es flash, no hay forma de convertir de un lenguaje a otro. SI quieres subirlo a una web, tienes varias opciones, desde crearte tu propia página, a subirla a la de un amigo, o mirar la página de proyectos de esta nuestra web.

-Para hacer un juego multijugador... debes programarlo multijugador desde el principio. Podrías coger el proceso del personaje, hacer copy/paste, y cambiarle los valores iniciales y los botones para moverse... dependiendo del juego que sea, porque no das ni una pista.
Y hacerlo online... déjalo para más adelante (si aun así insistes, tienes la net.dll y la bennuplaynet en el subforo de extensiones).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

vib

Bueno a lo que me referia con la parte de movimiento es esto:
      teniendo este ejemplo de movimiento..no me va y haber si alguien me puede pasar el suyo
      lo que quiero es..tengo 1 personaje que yo lo controlo.. y hay un enemigo en el scroll
      la idea es que cuando este a una cierta distancia el bicho venga ami a atacarme.. y se me hacerque asta hacer colision...
      
      el codigo con lo que tengo esto echo es este:
      id2=get_id(TYPE MyCharacter);
      iddist=get_dist(id2);
      if (iddist=<81)
         idangle=get_angle(id2);
      else
         angle=0;
      end
      move_x=get_distx(idangle,iddist);
      move_y=get_disty(idangle,iddist);
      if ((move_x<=-1 and move_x>=-100) and (move_y>=-100 and move_y=<100))
         x=x-1;
      end
      if ((move_x>1 and move_x<=100) and (move_y>=-100 and move_y=<100))
         x=x+1;
      end
      if ((move_y<-1 and move_y>=-100) and (move_x>=-100 and move_x=<100))
         y=y-1;
      end
      if ((move_y>1 and move_y<=100) and (move_x>=-100 and move_x=<100))
         y=y+1;
      end
      
      con  este codigo lo que pasa esque depende de que angulo o coordenada x,y encare al bicho, se mueve de una manera que
      se sale de rango para venir a atacarme.
      alguien sabe como corregir-lo? gracias!

Drumpi

Si tienes el ángulo ¿por qué no usas advance o xadvance para moverte en esa dirección?
Y lo de que se sale de rango no lo entiendo ¿que se sale de la pantalla?
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

Quote from: Drumpi on December 20, 2010, 04:31:32 PM
Si tienes el ángulo ¿por qué no usas advance o xadvance para moverte en esa dirección?
Y lo de que se sale de rango no lo entiendo ¿que se sale de la pantalla?

imagino que se refiere al rango de 100 pixels de distancia.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

yo te recomiendo que uses:

- resolution (para poder hacer advance de a 1 pixel, con poner resolution = 10 y luego en vez de rango 100 es 1000 y el advance va de a 10, lo que significa 1 pixel)
- get_dist (para directamente obtener una distancia general al objeto y no por coordenadas)
- funcion abs (para evitar comprar por -100 y +100)
- get_angle
- advance
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

vib

ya me mirare la funcion de resolotion o lo que sea xD
llevo nada 3 messes usando este lenguaje..
no me enterado de mucho de lo que habeis dixo aunque debe ser por esa razon..
me explico

Los if de validacion de movimiento estan mal.. incompletos...
ya que le digo si X i Y estan en una posicion tu muevete x+1 o x-1 o y+1 o y-1
claro depende de como encare al bicho el bicho ara x+1 y se saldra del rango de validacion de if y dejara de moverse por la razon de que los if estan incompletos..

Nose lo que me dices del resolution sinceramente..xD quizas sea mucho mejor pero claro lo desconozco...

Yo he puesto el codigo de como " lo tengo echo"...
Peor me pasa ese problemilla espero que se entienda...
Nose si alguien tiene algun objeto o bicho en su codigo que haga que vaya a la posicion donde esta el protagonista....
es eso :P
o que mis iff necesitan mucha mas validacion.. pero ya me he pasado un rato para buscarle el maldito error!

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

vib

Bueno me he estado mirando la funcion que me decias... no me ha acado de convencer ya que no he sabiado como implementarla.

Lo bueno esque ya tengo el mini-juego apunto de acabarlo solo me queda arrecglar unos bus que citare aqui ahora.. y la parte mas grafica que hare algunos canvios de ultima hora... juas ya tengo ganas que lo veais y opineis porque me he pegado un verdadero curro ya lo vereis!

El caso esque tengo pequeños bugs...

El 1r.. es algo simple me gusta como queda es el siguiente: Son 2 personajes... ok... entre ellos si hay colision les digo que se tiren hacia atras "" para evitar que se queden pegados.. con un x-2 o etc.
El caso esque son personajes no cuadrados, osea un dibujo recordado y depende como lo encares para el colision... hace cosas raras y se mueve para algun lugar que no tiene de ir.
Me he mirado que eso se puede arrecglar con tiles para darle unas posiciones especificas al terreno de juego... vamos "me lo he mirado" si alguien me confirma un poco lo agradeceria y como funciona porque no me he enterado del todo.

Total este es un bug simple... el juego lo tenia player contra player y eso le daba un toque gracioso ya que era una manera de poderse adelantar...pero ahora estoy implementando la maquina y es una mierda ya que la maquina en ese caso siempre tiene ventaja... explico porque.

La maquina su movimiento lo tengo exactamente como puse arriba... y se dirije al objetivo " en este juego es una gema" siempre haciendo la MISMA ruta... ahi esta el problema...
Yo con mi player si me pongo delante, interrumpiendo su paso... se queda el bicho andando igual pero sin poder avanzar "vamos que no coje una ruta alternativa" y claro.. aveces veo que el bicho me tira una magia de paralizar, pero como él esta detras mia.. no le saca provecho.

Alternativas?

SplinterGU

lo que hace resolution es modificar todo lo referentes a coordenadas por el valor de resolution, de esta forma es como tener mas precision que un pixel, podrias moverte en fraccion de pixels y ademas sirve para poder hacer "advance" de a 1 pixel, ya que si por ejemplo usaras resolution = 10, signifique cada 10 = 1px real, por ende un advance(10), haria advances de 1px, pero en ocaciones el advance da fracciones de 1px, entonces si no usas resolution el proceso deja de avanzar porque las variables x,y son enteros..
esto no es un bug, sino que en algunas condiciones se avanza fraccion de pixel.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2