preguntas de un principiante sobre bennugd

Started by hokuto40, April 03, 2017, 08:34:15 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

hokuto40

Saludos,he estado profundizando en el fpgeditor y he visto que se puede cambiar la velocidad de la animacion,pero cuando la cambio y lo pruebo en el juego la velocidad sigue igual,agradeceria que alguin me esplicara como hacerlo bien.

Comentar que he ojeado todos los ejemplo de plataformas y no me entero de nada,la verdad es que me esta costando mas de lo que yo me esperaba y estoy plantenadome volver ha usar contruct 2 o game maker,con estos programa he creado juegos sin problemas pero con bennugd me resulta muy dificil,hasta unity me parece mas facil.

Bueno le voy a dar un tiempo pero si no avanzo tal vez lo intente con unity que hay muchos tutoriales o tal vez vuelva con los otros dos que he comentado que ya se usar.Hasta luego

oskarg

Te respondo.......
Si quieres que las animaciones vayan mas o menos deprisa hay multiples formas de hacerlo ,te comento unas cuantas..
1.Definir una variable y cuando llegue a cierta cantidad hacer frame.
2.cambiar directamente el valor de frame........por ejemplo frame(200)
3.guardar la animacion en una tabla de valores y donde quieras que vaya mas lento,le asignas,repites el numero de fotograma..1,2,3,3,3,3,3,3,4..

Si,los otros engines son mas sencillos y me gusta personalmente esa filosifia de no escribir casi nada de codigo......pero con bennugd puedes hacer cualquier cosa y cuando programas ,no se,te sientes que tu eres el que controla realmente todo y ahi radica la gracia que la limitacion la impones tu,no el engine.

hokuto40

Gracias por tu contestacion,lo seguire intentando pero la verdad cuando vez que hay tantos videotutoriales para unity y las cosas que se pueden hacer con el son impresionantes, pues es dificil resistirse y ademas tiene ayuda en el codigo y es muy facil contruir un escenario y la fisica te hace muy sencillo hacer un plataformas.

Tambien comentarte que he visto todos los ejemplos pero solo entiendo los basicos,si hubiera tutoriales esplicandolo todo paso a paso como uno de plataformas o de peleas etc.. pues seria otra cosa,la verdad es que el tema de las colisiones con paredes y suelos fue una de las razones por las que deje de usar gamemaker y me puse con contruc 2,en fin me despido y hasta luego

Drumpi

Es que FPGEditor no tiene nada que ver con Bennu. Lo de la velocidad de las animaciones es simplemente una vista previa de cómo quedaría en pantalla. Hacer que la velocidad de la animación sea más lenta o rápida la tienes que programar tu, bien como comenta oskarg, o con un contador que haga que cada 2 frames, 4 frames, o los que tu quieras, cambie.

Y no te lo voy a negar: hacer un juego de plataformas no es fácil en Bennu, y menos si lo comparas con Construct2, Unity, etc. La diferencia es que en Bennu, pese a sus limitaciones, es sorprendentemente más rápido que con Unity. Estuve trabajando en un juego en el que un Dual Core se arrastraba para tener 12 personajes y mover 5 en pantalla fija, y sin embargo, en Wiz (1 cpu a 700MHz sin aceleración gráfica) puedo poner a 15 enemigos en un scroll tileado sin optimizar, con una detección de durezas horrible, a la misma velocidad.

¿Qué pasa? Lo que ya te he comentado: Unity tiene el motor Physx ese que te hace todo el trabajo, y en Bennu no. Bueno, te lo dije y no lo has mirado: tienes Chipmunk que te hace eso mismo (lo que no tengo son enlaces a las demos de la gente)
Y tutoriales de plataformas hay: en el manual de Osk creo que está comentado el código del Castle of Dr malvado en versión Fenix, paso a paso, y ese mismo código lo tienes para DIV en el "Manual avanzado", que es un tocho para leer de narices, pero te explica los matamarcianos, los plataformas, RTS, Aventuras gráficas y creo que hasta un Street Fighter. Pero hay que ponerse a leerlo.

Yo no recomiendo empezar por un juego de plataformas. Deberías empezar con un matamarcianos, seguir con algo en vista aerea, tipo carreras de coches o un juego de acción, y cuando ya domines las bases, ponerte con un juego de plataformas. Muchos novatos caeis en el mismo error, y por eso el 70% acaba abandonando.

Yo te recomendaría que le dedicases tiempo y siguieras con bennu, pero si necesitas resultados tan pronto, no te voy a decir que no pruebes fuera, pero por mucho que digan, a día de hoy, creo que Bennu es mejor para 2D que cualquier otro lenguaje.
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)

hokuto40

gracias por tus respuestas dumpi,he visto chimuk de fisicas de bennugd pero no entiendo los ejemplo y en el manual de osk tambien he visto el tutorial de plataformas pero tampoco me aclaro,ya casi he terminado el manual peor a partir de la mitad mi cabeza empieza a dar vueltas.

Tambien he acabado el manual mas corto y cuando llegue a las animacion y lo de las durezas empece a ver visiones ;D y como te comente lo ejemplo saliendome de los basicos no me aclaro, he intentado hacer un matamarcianos pero cuando intento hacer mas cosas que lo que biene en el tutorial pues no se.

Con respecto al manual de div donde puedo conseguirlo porque lo he buscado y no lo encuentro,la verdad es que el lenguaje de bennugd es el que mas me gusta de todos los que he probado junto con python pero reconosco que no soy muy bueno,voy a crear otro tema pidiendo unos tutoriales a ver si alguien me hecha una mano.

Drumpi

Venga, te doy una pista sobre las animaciones:

cont++;
if (cont == 4)    //Así el gráfico cambia cada 4 frames
    cont = 0;
    graph++;
    if (graph == CTE_ULTIMO_GRAFICO_ANIMACION)
        graph = CTE_PRIMER_GRAFICO_ANIMACION)
    end
end
...
frame;


Lo de las durezas, no te martirices, porque es algo que cuesta entender de buenas a primeras. Primero intenta usar un mapa de durezas del mismo tamaño que el que verá el jugador, y cuando lo entiendas lo reduces. La idea es comprobar el color de los píxeles del mapa por los que va a pasar el personaje en ese frame. Es decir, que si va a avanzar 4 pixels, tienes que hacer 4 comprobaciones, pero si sólo una falla, ya no puedes avanzar (o tienes que desviar la trayectoria, ya depende de lo que estés programando). ¿Qué se comprueba? si el pixel permite pasar a tu prota o no, por ejemplo, si el color del siguiente pixel es el 0 (negro), puede seguir avanzando, pero si es 1 (por ejemplo, rojo) ha topado con una pared y no podrá moverse.
¿Cual es la mayor dificultad? el movimiento en diagonal, que lo mismo se puede mover en vertical, pero no en horizontal, o por cada pixel en vertical se debe mover dos en horizontal. Y claro, en un juego de plataformas, donde intervienen el movimiento del jugador (horizontal) y la gravedad (vertical), pues tienes ese problema siempre. Por eso insistía en que empezases por algo en vista vertical: en el peor de los casos, el movimiento diagonal es de 45º.

Si no sabes cómo programarlo, recurre a los diagramas de flujo, o al pseudolenguaje, o a cualquier lenguaje que domines, y luego intentas traducirlo a Bennu.

Sobre los libros, lo siento, sé que se subieron al foro, pero no recuerdo dónde, ni si los descargué ni... Yo ya me los leí en su momento porque me los dejaron una temporada y casi que me los aprendí de memoria, aunque tengo que repasarlos para añadir plataformas móviles a uno de mis juegos.
Pero tómatelo con calma, esto lleva tiempo y mucho ensayo y error: mi primer plataformas, FenixLand, tardé como un mes en conseguir que el prota caminase, y aun así tenía fallos que he ido corrigiendo con el tiempo. No sé ni donde anda la descarga ya (el proyecto lo tengo)
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)

hokuto40

Gracias drumpi por contestarme,seguire intentandolo aunque creo que me pondre con un juego de naves primero

hokuto40

Hola aqui estoy de nuevo,queria comentar que voy hacer un juego de naves parecido al r-type,pero no se como darle el movimiento a las naves enemigas para que quede parecido a las del r-type,tampoco se como hacer un jefe final parecido a los del r-type,agradeceria que me esplicarais como podria hacerlo.

Tambien queria preguntar si hay una wiki en español para bennugd,yo me descarge la del bennupack pero esta en ingles y yo no me manejo con el ingles,por lo tanto no entiendo nada.

Por ultimo queria saber si hay pensado sacar el bennugd2 este año o todavia le queda mucho y agradeceria que me comentarias que novedades va a traer.Un saludo y hasta luego :D

SplinterGU

Quote from: hokuto40 on May 12, 2017, 08:23:28 AM
Por ultimo queria saber si hay pensado sacar el bennugd2 este año o todavia le queda mucho y agradeceria que me comentarias que novedades va a traer.Un saludo y hasta luego :D

seria grandioso... incluso estaba pensando en liberar lo que ya tengo, que si bien no es una version final, es usable.

pero me gustaria darle un poco al tema de las fisicas y colisiones, estoy en eso...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

#24
¡¡Genial, Splinter, tengo ganas de echarle un vistazo!!

Hokuto40, vas a tener que ser un poco más específico con "movimiento tipo R-Type", pueden ser movimientos rectilíneos, curvilíneos, parabólicos, sinusoidales, random... :D
Pero para que no te alarmes, te doy unas pistas que te van a ayudar.
- Primero, intenta mantener a los enemigos que se mueven fuera del scroll, es decir, no uses ctype, te va a ahorrar muchos quebraderos de cabeza. Úsalo para torretas y esos enemigos que estén en una posición determinada.
- Segundo, mantén siempre separado el movimiento en vertical y en horizontal. Evita usar cosas como advance, o te darás de bruces con vectores, ángulos y demás: usa KISS! (Keep It Simple, Stupid!).
- Para consegir unas rutinas buenas, tienes que jugar con la velocidad de las naves. Necesitas declarar para cada enemigo una variable de velocidadx y velocidady, que deben sumarse a su X e Y en cada frame:
x += velocidadx;
y += velocidady;
frame;

Así, si al crear un enemigo con velocidadx = -20, y en cada frame haces velocidadx++, conseguirás que la nave aparezca moviéndose hacia la izquierda, e irá perdiendo velocidad progresivamente hasta que empiece a moverse hacia la derecha.
x = 850;
y=200;
velocidadx = -20;
velocidady = 1;
while (x < 900)
    velocidadx++;

    x += velocidadx;
    y += velocidady;
    frame;
end


- Usa RESOLUTION. Te va a venir muy bien para ajustar velocidades.

Respecto a los enemigos, eso es una historia más larga. Ahora no me puedo poner a contártela, pero un ejemplo muy sencillo sería que generases un punto aleatorio en la pantalla, y que el enemigo se moviese hasta él. Es lo que hice en el último crap-juego: space52 (creo que lo subí con código fuente y todo en el hilo de la última crap-compo).

Me voy a comer, ¡que aproveche! :D

PD: los valores los he puesto al tun tun, para una resolución de 800x600, tendrás que ajustarlos ^^U
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)

hokuto40

Gracias por responderme,estoy deseando probar bennugd2,en lo que se refiere al juego de naves,pues los movimientos un poco de todo,que se muevan hacia mi ,que salgan de la nada se muevan para mi y luego se vayan para arriba o abajo ,que hagan movimientos sinuosos,que se paren para disparar,que roten cuando yo me mueva,que disparen directamente a mi nave,que lanzen multiples disparon como en el dodonpachi etc..

Queria comentar un programa que uso para generar sonidos,seguramente lo conocereis pero por si acaso,el programa se llama bfxr y el enlace es este https://blog.willicab.com.ve/category/div/.

Tambien os pongo un enlace de un tutorial en español de divdx que me encontre por casualidad el enlace es este https://blog.willicab.com.ve/category/div/

Bueno me despido,un saludo y hasta pronto

hokuto40

Hola,me he quedado esperando vuestras respuestas.
Haber si me podeis hechar una mano con algun ejemplo,quiero crear una especie de megafenix pero no se como hacer los movimientos de los enemigos como los hacen en ese juego.

Otra pregunta que quiero hacer es  como crear distintos niveles,porque la explicacion que viene en el manual de osk me parece un poco complicado.Hasta pronto

La momia que fuma

Por ejemplo, lo de que los enemigos roten y disparen hacia el jugador es bastante sencillo:


En el proceso del enemigo: angle=get_angle(jugador), con eso siempre estará "mirando" al jugador (Para que se oriente bien, el gráfico del enemigo deberá estar hecho como "mirando" a la derecha, si no me equivoco).


("Jugador" en este caso sería una variable global (en realidad no necesariamente, pero bueno). Si aún no te has metido o entiendes mucho del tema IDs de proceso, pues por ejemplo, para este caso, creas la global "jugador" y cuando llames al proceso del jugador haces jugador=proceso_jugador(); )


Luego ya si lo combinas con moverlo con la función advance, se moverá en ese ángulo y podrás hacer enemigos "kamikazes" o misiles/disparos buscadores.


Y si después lo complicas un poco más y haces que el angulo tenga un límite de incremento por frame tendrá más gracia la cosa y quedará más realista (ya que según la situación con ese método puededar giros muy bruscos).


Los principios siempre son duros, pero vale la pena...paciencia!  ;)

Drumpi

#28
Para eso, Momia, le recomiendas la función NEAR_ANGLE, que busca el ángulo más cercano al objetivo, con un máximo de incremento para que no gire demasiado rápido.

De momento, como se me acaba el tiempo, te doy un curso de trigonometría acelerada para conseguir el temido movimiento sinuoso estilo "medusa head". Esto iría en el bucle pprincipal del enemigo:

x -= velocidad_horizontal
angle2 += 10000;
y = posición_vertical + (20 * sin(angle2));


Donde:
- Velocidad_horizontal es un INT que debes declarar y es la cantidad de pixels que se mueve el enemigo de derecha a izquierda.
- angle2 es un INT que debes declarar y es un ángulo auxiliar.
- posicion_vertical es la posición del enemigo en el eje y, y va a ser el centro de su movimiento
El resto de la linea de posicion_vertical se resume en añadir la función "seno", al movimiento de la nave. Si no conoces la función matemática "seno", consulta la wikipedia, o algún libro de trigonometría básica, lo vas a encontrar interesante y apasionante ;)
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)

La momia que fuma

Quote from: Drumpi on May 31, 2017, 12:06:10 AM
Para eso, Momia, le recomiendas la función NEAR_ANGLE, que busca el ángulo más cercano al objetivo, con un máximo de incremento para que no gire demasiado rápido.


Estoy oxidado, no me acordaba ya, ahí le has dao :D