Movimiento en profundidad

Started by Yawin, June 09, 2011, 08:47:26 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Yawin

Bueno, estaba yo, tranquilamente, pensando en que mi próximo proyecto quiero que sea una aventura gráfica (al más puro Old Style xDD) y claro, si lo programo todo en 2D, necesito buscar un efecto de profundidad.

Por eso, mientras estaba en clase, he estado trabajando en una chorradilla que toma un punto de la pantalla, previamente asignado, como punto de fuga. El problema son los desplazamientos, que no me van bien. Por eso he pensado, que podemos ir afinándolo entre todos para poder tener algo sencillo con lo que tener profundidad en nuestor juego, sin meternos cosas tan gordas como modo 7 o así.

Link: http://www.mediafire.com/?4qg1t0nuo0d9fe9

Os explico el funcionamiento:

Primero se asignan las coordenadas del punto de fuga a la array pfuga[2] (primera casilla=x, segunda casilla=y). Luego, se asigna la profundidad.

La idea que he tenido para la profundidad es el size que tiene nuestro personaje en el punto de fuga. Cuanto más te alejas, más aumenta tu size y cuanto más te acercas, más se reduce.

Luego, inicializamos las coordenadas de nuestro personaje y llamamos a su sombra (el gráfico que lo representa). El gráfico está en un proceso a parte, porque nuestro personaje se mueve a base de calcular ángulos y distancias, y si estuviese en él mismo el gráfico, saldría girado.

Ahora, ya sólo nos queda calcular su tamaño y en base a qué tecla se pulse, calcular su movimiento.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

FreeYourMind

Interesante, pero hay algun error en el movimiento porque al principio te dejá subir y bajar en el eje YY y despues ya no, y solo te permite mover en el eje X

Yawin

Si lo se, es por eso que he puesto que si alguien me ayuda aceptaré su ayuda encantado xDD
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

KeoH

Quote from: yawin on June 09, 2011, 08:47:26 AM
en que mi próximo proyecto quiero que sea una aventura gráfica (al más puro Old Style xDD)

Nooooo xDD llevo yo una semana planteando ni proyecto para hacer una aventura grafica d corte clasico porq me encantan y no habia ninguna xDD

SplinterGU

no me parece apropiada la tecnica, si te moves de costado solamente, el personaje tambien cambia de tamaño.

yo creo que deberias trabajar con un mapa de durezas para usarlo de camino, y en ese mapa de durezas uses un color determinado que te indique el size del personaje, de esta forma matas 2 pajaros de 1 tiro: caminos y profundidad.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Yawin

No me gusta, porque.... no me gusta xDD
No se explicarme. Si lo hago a´si, a nada que tenga un mapa con una profundidad seria la gama de colores para las durezas sería enorme.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

SplinterGU

Quote from: yawin on June 09, 2011, 01:39:31 PM
No me gusta, porque.... no me gusta xDD
No se explicarme. Si lo hago a´si, a nada que tenga un mapa con una profundidad seria la gama de colores para las durezas sería enorme.

no, para nada, no tiene que ser enorme, un mapa de durezas no tiene porque tener infinitos colores, con 256 te deberia alcanzar.

de hecho necesitas tener este metodo, porque no siempre vas a tener escenarios como el de la calle que pusiste, podes tener plataformas o superficies que esten mas elevadas y a la misma altura fisica de la pantalla tener un plano mas alejado, por ejemplo, imaginate una casa donde te subis al techo, el techo de la casa esa a la misma altura que el suelo/pasto del fondo de la casa que se encuentre fisicamente en la misma coordenada "y" del techo de la casa, y obviamente en esos casos tamaño debe ser diferente.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

KeoH

Quote from: SplinterGU on June 09, 2011, 02:02:29 PM
Quote from: yawin on June 09, 2011, 01:39:31 PM
No me gusta, porque.... no me gusta xDD
No se explicarme. Si lo hago a´si, a nada que tenga un mapa con una profundidad seria la gama de colores para las durezas sería enorme.

no, para nada, no tiene que ser enorme, un mapa de durezas no tiene porque tener infinitos colores, con 256 te deberia alcanzar.

de hecho necesitas tener este metodo, porque no siempre vas a tener escenarios como el de la calle que pusiste, podes tener plataformas o superficies que esten mas elevadas y a la misma altura fisica de la pantalla tener un plano mas alejado, por ejemplo, imaginate una casa donde te subis al techo, el techo de la casa esa a la misma altura que el suelo/pasto del fondo de la casa que se encuentre fisicamente en la misma coordenada "y" del techo de la casa, y obviamente en esos casos tamaño debe ser diferente.


si .. algo asi tenia yo pensado .. sepodria poner una dureza con un degradado por ejemplo de rojo, con los colores azul y verde a 0 ... y ligar el size y la z del personaje a la cantidad de rojo q haya en ese punto ... por ejemplo .. cuanto mas rojo sea el punto, mas profundo estará el personaje (en z para q se le puedan poner objetos delante) y mas pequeño sería el graph

SplinterGU

si, pero sencillamente el size no significa que tenga que ser con incrementos de 1, cada color puede significar x2 o x3 con respecto al size, y con eso 256 colores de tonos creo que es mas que suficiente... creo que seria bueno tener 2 mapas de durezas, el de los caminos y el del tamaño, asi tenemos 256 opciones de tamaño solo para ese fin, tambien debo decir que tampoco cada pixel de este mapa necesita representar un pixel del mapa o pantalla, puede representar varios, de la misma forma que usamos un mapa de caminos.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

KeoH

si .. igual con 10 variaciones del color del tamaño tienes mas q suficiente, imagina q el tamaño según los cambios de color vayan siendo algo así: 100,99,97,93,82,70,60,45,30,20.   la ultima posición de size tampoco tendría q ser 0. ... o que incluso sean valores superiores a 100 si se esta acercando a la cámara. Aunq la "velocidad" de la variación del size debería ser distinta según la perspectiva del escenario.

yawin no querías ideas? xDD

SplinterGU

Quote from: KeoH on June 09, 2011, 03:12:17 PM
si .. igual con 10 variaciones del color del tamaño tienes mas q suficiente, imagina q el tamaño según los cambios de color vayan siendo algo así: 100,99,97,93,82,70,60,45,30,20.   la ultima posición de size tampoco tendría q ser 0. ... o que incluso sean valores superiores a 100 si se esta acercando a la cámara. Aunq la "velocidad" de la variación del size debería ser distinta según la perspectiva del escenario.

yawin no querías ideas? xDD

por supuesto, con el modelo que propongo todo esta cubierto, en el caso de size, puede que en algunos casos tengas size 0, imagina un personaje que sigue un camino que va a lo lejos y se pierde en un punto en una cueva... aunque tambien es cierto que la secuencia podria terminar ahi en un size 10 o lo que sea.

pero bueno, ahi esta la tecnica, como se use depende de la necesidad.

yo creo que es la forma mas practica de hacerlo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

La momia que fuma

Quote from: yawin on June 09, 2011, 08:47:26 AMEl gráfico está en un proceso a parte, porque nuestro personaje se mueve a base de calcular ángulos y distancias, y si estuviese en él mismo el gráfico, saldría girado.

Tienes xadvance para evitar eso.

Yo lo haría de una forma mucho más simple...calcular size en base a "y" y a correr...se podría hacer en una sola linea, solo habría que tener en cuenta la y del horizonte (la y máxima que podra alcanzar el personaje) y algún valor corrector que multiplique o divida el resultado (Que dependera de la vista del escenario, altura de la camara, etc), ambos dependerán de en que pantalla estemos.

Yawin

ya, pero esque si quieres ir recto, realmente no tienes que ir recto, tienes que ir hacia el punto de fuga. Por tanto, tienes que calcular hacia donde tienes que avanzar. No se si me explico. No es sólo el tamaño.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

SplinterGU

yo te sugiero que agarres el monkey island, el dia del tentaculo, o el goblins y le des duro y parejo...

vas a ver que eso del punto de fuga no aplica.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

La momia que fuma

Quote from: yawin on June 09, 2011, 06:56:14 PM
ya, pero esque si quieres ir recto, realmente no tienes que ir recto, tienes que ir hacia el punto de fuga. Por tanto, tienes que calcular hacia donde tienes que avanzar. No se si me explico. No es sólo el tamaño.

En una aventura gráfica vas a donde pinchas con el ratón :P