Un motor isométrico para flash

Hay vida más allá de los ordenadores. || There's life beyond computers.

Moderador: CEZ

Responder
Avatar de Usuario
cht666cht
128 bits
128 bits
Mensajes: 2145
Registrado: 06 Oct 2005 12:20
Ubicación: Barcelona

Un motor isométrico para flash

Mensaje por cht666cht »

Hace un par de dias que estoy haciendo algunas pruebas para hacer alguna cosa isométrica con Flash. De momento tengo lista la ordenación de objetos de cualquier dimensión (osea "cubos" de cualquier altura, anchura o profundidad), la idea es que no vaya por tiles porque para hacer según que gráficos es un coñazo. Digamos que llevo un 5 % del motor :P

http://usuarios.lycos.es/masacrezombie/ ... rueba.html

perspectiva isométrica 2:1, la de verdad :mrgreen:
Avatar de Usuario
na_th_an
256 bits
256 bits
Mensajes: 11874
Registrado: 22 Abr 2005 13:25
Contactar:

Mensaje por na_th_an »

Joe, que buapo. Tiene una pinta acojonante y por lo que se ve funciona que te cagas... A ver qué te curras con esto :D

El Flash, ese gran desconocido para mí... Lo más complicado que llegué a hacer nunca en flash fue esto:

http://www.ojodepez-fanzine.net/network ... egusta.swf
[IMPORTANTE: DADLE VOLUMEN, QUE SI NO NO HACE RISA]

:lol:
Última edición por na_th_an el 24 May 2007 16:25, editado 1 vez en total.
Avatar de Usuario
pagantipaco
128 bits
128 bits
Mensajes: 2922
Registrado: 03 Oct 2006 11:41
Ubicación: Madrid
Contactar:

Mensaje por pagantipaco »

Tiene muy buena pinta, sigue, sigue ;-)
Un saludo.
Paco.
Avatar de Usuario
EightBiter
128 bits
128 bits
Mensajes: 2983
Registrado: 23 Dic 2004 18:27
Ubicación: El Foro, Madrid, España
Contactar:

Mensaje por EightBiter »

na_th_an escribió:Joe, que buapo. Tiene una pinta acojonante y por lo que se ve funciona que te cagas... A ver qué te curras con esto :D

El Flash, ese gran desconocido para mí... Lo más complicado que llegué a hacer nunca en flash fue esto:

http://www.ojodepez-fanzine.net/network ... egusta.swf
[IMPORTANTE: DADLE VOLUMEN, QUE SI NO NO HACE RISA]

:lol:
jAJAJAJAJA lo podemos usar para un vídeo de los Insociables??? xDDDD
Avatar de Usuario
na_th_an
256 bits
256 bits
Mensajes: 11874
Registrado: 22 Abr 2005 13:25
Contactar:

Mensaje por na_th_an »

EightBiter escribió:
na_th_an escribió:Joe, que buapo. Tiene una pinta acojonante y por lo que se ve funciona que te cagas... A ver qué te curras con esto :D

El Flash, ese gran desconocido para mí... Lo más complicado que llegué a hacer nunca en flash fue esto:

http://www.ojodepez-fanzine.net/network ... egusta.swf
[IMPORTANTE: DADLE VOLUMEN, QUE SI NO NO HACE RISA]

:lol:
jAJAJAJAJA lo podemos usar para un vídeo de los Insociables??? xDDDD
Un honor sería :lol: Pero no le robemos el hilo a cht666cht :D
Avatar de Usuario
cht666cht
128 bits
128 bits
Mensajes: 2145
Registrado: 06 Oct 2005 12:20
Ubicación: Barcelona

Mensaje por cht666cht »

na_th_an escribió:
EightBiter escribió:
na_th_an escribió:Joe, que buapo. Tiene una pinta acojonante y por lo que se ve funciona que te cagas... A ver qué te curras con esto :D

El Flash, ese gran desconocido para mí... Lo más complicado que llegué a hacer nunca en flash fue esto:

http://www.ojodepez-fanzine.net/network ... egusta.swf
[IMPORTANTE: DADLE VOLUMEN, QUE SI NO NO HACE RISA]

:lol:
jAJAJAJAJA lo podemos usar para un vídeo de los Insociables??? xDDDD
Un honor sería :lol: Pero no le robemos el hilo a cht666cht :D
juas! :D el tuyo es como mínimo mas impactante :D
Avatar de Usuario
Kendroock
256 bits
256 bits
Mensajes: 7304
Registrado: 24 Dic 2004 09:08
Ubicación: Fuenlabrada (Madrid)
Contactar:

Mensaje por Kendroock »

¡¡¡jAJAJAJAJA!!! ¿Y luego protestasteis por que le puse seis dedos a margarito?... por que Manuelo tiene tres "Webos" :lol: :lol:
Un saludo.

Imagen
Umaaa Curaaaaa!!!!!
Avatar de Usuario
cht666cht
128 bits
128 bits
Mensajes: 2145
Registrado: 06 Oct 2005 12:20
Ubicación: Barcelona

Mensaje por cht666cht »

lo he actualizado a una versión "interactiva" con detección de colisiones y donde se puede comprobar como el orden de dibujado falla en algunas situaciones... :?
Avatar de Usuario
pagantipaco
128 bits
128 bits
Mensajes: 2922
Registrado: 03 Oct 2006 11:41
Ubicación: Madrid
Contactar:

Mensaje por pagantipaco »

cht666cht escribió:lo he actualizado a una versión "interactiva" con detección de colisiones y donde se puede comprobar como el orden de dibujado falla en algunas situaciones... :?
Hay una combinación que falla cuando usas orden de pintado, da igual las vueltas que le des, como vas por bloques, nunca se resuelve bien :-( La única forma de hacer algo así es pintando porciones sobre un "mapa" de profundidad, que es algo parecido a lo que hacen las técnicas 3d ¿es así o me equivoco? ¿se llama Z-Buffer? Yo conseguí pintarlo bien, en mi época del Pascal en Msdos a 320x200, pero hacía cálculos previos sobre un búffer intermedio donde decídía píxel a píxel si iba delante o detrás, con algunas optimizaciones no iba nada mal en mi Pentium 100 ;-)

De todas formas hay un juego en móvil "Frankestein" isométrico, hecho en Java que sólo pinta sprites y no accede a la pantalla a nivel de pixel, que tiene el fallo que tú citas y se ve muy pocas veces y, como es irremediable, pues nada, ea, ahí se queda ;-)

Tú haz el motor y hacemos unos jueguitos, aunque sea con ese "fallo" ;-)
Un saludo.
Paco.
Avatar de Usuario
josepzin
128 bits
128 bits
Mensajes: 2238
Registrado: 25 Oct 2005 18:03
Ubicación: Carthagonova
Contactar:

Mensaje por josepzin »

Epa! tiene buena pinta!! ese fallo tambien se soluciona haciendo objetos cuadrados. (creo) Y para hacer otros mas grandes usar una especie de "tiles".

Si esa es la solución, entonces me parece que es la solucion mas simple de aplicar.
Avatar de Usuario
cht666cht
128 bits
128 bits
Mensajes: 2145
Registrado: 06 Oct 2005 12:20
Ubicación: Barcelona

Mensaje por cht666cht »

Sí, el fallo pasa cuando 3 objetos se pueden tapar de forma circular, osea A tapa a B, B tapa a C y C tapa a A, ahi los pintes en el orden que los pintes es imposible dibujarlos bien.
Ya había pensado a veces en técnicas de Zbuffer a nivel de pixel pero eso creo que sería demasiado lento para Flash y además se tendría que definir esa máscara de profundidad para cada objeto, y la única manera de que se genere automáticamente sería modelando los objetos con algún programa 3D y mi idea es hacer algo sencillo...
De momento lo mejor creo que es diseñar las escenas de manera que se minimice ese problema :)
Avatar de Usuario
Iperezg
32 bits
32 bits
Mensajes: 377
Registrado: 23 Dic 2004 21:18
Ubicación: Sevilla
Contactar:

Mensaje por Iperezg »

O sea, más o menos esto :
Imagen

Es el logo de Isomot, el motor isométrico que estoy haciendo en Allegro :mrgreen:. Para dibujar este tipo de situaciones, uso un método de enmascaramiento; lo que hago es no dibujar la imágen del objeto, sino una copia de la que he quitado todos los píxeles que quedan detrás de algún otro objeto (cuando digo quitar, quiero decir sustituir por píxeles transparentes). Para ello, se compara cada par de objetos, se decide cuál está detrás del otro según sus coordenadas y su tamaño, y luego se hace algo parecido a una detección de colisiones 2d entre las dos imágenes para ver que píxeles del objeto de detrás hay que quitar. Este método es más lento que el de simple ordenación Z que se suele utilizar, pero yo lo tengo bastante optimizado y me funciona de lujo. De hecho, Isomot dibuja casi todos los objetos de una habitación normal ordenándolos, y tan solo aplica este método en aquellos susceptibles de crear una situación como la de la imágen (es decir usa una los dos métodos a la vez, y esta es solo una de las optimizaciones a las que me refería). Eso sí, no se hasta que punto compensa implementar esto en Flash; es posible que ahí no se pueda optimizar tanto, y no compense para las pocas situaciones en que ocurre.
Por cierto, el remake de Head Over Heels de Retrospec dibuja todos los objetos enmáscarándolos (incluso las losetas del suelo y las paredes), y corre como una bala incluso en ordenadores bastante anticuados.
¡Ché, ché... Ché, documentación!
¡Ché, ché, los papeles del camión!
¡¿Que no de qué?!
Avatar de Usuario
cht666cht
128 bits
128 bits
Mensajes: 2145
Registrado: 06 Oct 2005 12:20
Ubicación: Barcelona

Mensaje por cht666cht »

Iperezg escribió:O sea, más o menos esto :
Imagen

Es el logo de Isomot, el motor isométrico que estoy haciendo en Allegro :mrgreen:. Para dibujar este tipo de situaciones, uso un método de enmascaramiento; lo que hago es no dibujar la imágen del objeto, sino una copia de la que he quitado todos los píxeles que quedan detrás de algún otro objeto (cuando digo quitar, quiero decir sustituir por píxeles transparentes). Para ello, se compara cada par de objetos, se decide cuál está detrás del otro según sus coordenadas y su tamaño, y luego se hace algo parecido a una detección de colisiones 2d entre las dos imágenes para ver que píxeles del objeto de detrás hay que quitar. Este método es más lento que el de simple ordenación Z que se suele utilizar, pero yo lo tengo bastante optimizado y me funciona de lujo. De hecho, Isomot dibuja casi todos los objetos de una habitación normal ordenándolos, y tan solo aplica este método en aquellos susceptibles de crear una situación como la de la imágen (es decir usa una los dos métodos a la vez, y esta es solo una de las optimizaciones a las que me refería). Eso sí, no se hasta que punto compensa implementar esto en Flash; es posible que ahí no se pueda optimizar tanto, y no compense para las pocas situaciones en que ocurre.
Por cierto, el remake de Head Over Heels de Retrospec dibuja todos los objetos enmáscarándolos (incluso las losetas del suelo y las paredes), y corre como una bala incluso en ordenadores bastante anticuados.
joder vaya pedazo de motor te estás currando! lo malo es que veo dificil hacer algo asi en Flash... tiene el objeto BitmapData para manipular pixels directamente pero a base de utilizar funciones setPixel y getPixel, y me parece que será demasiado lento. Iguamente gracias por la explicación, es muy interesante :)
Avatar de Usuario
pagantipaco
128 bits
128 bits
Mensajes: 2922
Registrado: 03 Oct 2006 11:41
Ubicación: Madrid
Contactar:

Mensaje por pagantipaco »

En Flash, que algo sé, va a ser muy lento hacer todo eso, así que, como dices, para las pocas veces que ocurre, mejor concentrarse en que funcione bien y chimpún ;-) realmente no molesta tanto porque ocurre esporádicamente y no suele molestar a nadie si el juego merece la pena porque está concentrado en el desarrollo ;-)

A propósito ¿qué versión estás usando? ¿podría funcionar en la 7?
Un saludo.
Paco.
Avatar de Usuario
cht666cht
128 bits
128 bits
Mensajes: 2145
Registrado: 06 Oct 2005 12:20
Ubicación: Barcelona

Mensaje por cht666cht »

Uso el Flash 8 pero creo que tendría que funcionar igual con el 7, lo único es el efecto de blur de las sombras que no me acuerdo si el 7 ya lo tenía, pero es una chorrada.
Avatar de Usuario
pagantipaco
128 bits
128 bits
Mensajes: 2922
Registrado: 03 Oct 2006 11:41
Ubicación: Madrid
Contactar:

Mensaje por pagantipaco »

Flash7 no tiene el Blur :-(

Yo lo decía porque la Wii tiene Flash7 y hay formas de leer las teclas del WiiMote... si juntamos esas capacidades, se pueden hacer juegos para la Wii en Flash... :-P

De todas formas los efectos del 8 quedan geniales ;-)
Un saludo.
Paco.
Avatar de Usuario
cht666cht
128 bits
128 bits
Mensajes: 2145
Registrado: 06 Oct 2005 12:20
Ubicación: Barcelona

Mensaje por cht666cht »

Bueno lo del blur de las sombras es una tontería, se pueden hacer igual de resultonas con degradados, o escalonando los bordes para que queden suaves. Igualmente tarde o temprano tendrán que actualizar el player de la Wii, ahora que ha salido el Flash 9 con el Actionscript 3... :roll:
Avatar de Usuario
pagantipaco
128 bits
128 bits
Mensajes: 2922
Registrado: 03 Oct 2006 11:41
Ubicación: Madrid
Contactar:

Mensaje por pagantipaco »

Hazlo en Flash8 y olvídate de mis tonterías ;-) Esa sombra queda genial y no podemos prescindir de ella ;-) ¡que actualice Opera! (ahora mismo se lo suelto en su foro) ;-)
Un saludo.
Paco.
Responder