¿Como funciona el sistema de detección de colisión del “Engines Of Creation”?

25 07 2007

HectorCS escribe a la…¿redacción? :-| , de weremsoft y, después de hacer los elogios y las críticas de rigor, nos dice :

“Me encantaria poder saber como funciona el sistema de detección de colisión”

Debido a la hora que es, voy a ser un poco escueto, por lo que si no se entiende pregunten que para eso están los comentarios.

Estimado Hector, busque en varios artículos al respecto pero finalmente terminé descartandolos a todos(porque no los entendía) y arreglandomelas solo, cosa que no se si aconsejar o prohibir descaradamente(en todo caso, lean y experimenten en proporciones razonables).

Para comenzar, notá que el cuerpo no es solido, sino que las colisiones se detectan solo con los vértices. La forma de simular dinámica de partículas la explico en mi tutorial Simulación de Sistemas Complejos I.

Como podrás notar en el artículo al que hago referencia, la partícula, aparte de las coordenadas x e y que definen la posición actual, guarda las coordenadas de la posición anterior para calcular la velocidad y el sentido.

Para calcular las colisiones y las reacciones de estas, lo que hice fue que para cada partícula, aparte de la posición actual y anterior, guardo ultima posición buena conocida, esto es, la ultima posición en la cual no hubo colisión con el terreno. Esto lo verifico por medio de la función hitTest del objeto movieClip. En el caso de que detecte una colisión con el terreno, lo que hago es trasladar la partícula a la ultima posición buena conocida. Eso es todo, simple ¿no?.

Este algoritmo permite generar reacciones bastante convincentes sobre escenarios de cualquier naturaleza, lo cual me da pié para contestar tu segunda pregunta que es:

“como hiciste para hacer los levels? armaste un editor?”

No, no armé ningún editor, es simplemente un movieClip(un objeto flash de determinadas características). Esto me permite armar los niveles dibujándolos con las herramientas que provee flash. Por lo que si tomase el pincel e hiciera un rulo en la pantalla, el triangulito seguiría funcionando lo mas bien.

Actualmente pienso presentar el juego en uno que otro concurso(después de arreglar varias cosas que me han señalado oportunamente). Cuando me haya convencido de que no puedo ganar ni un caramelo pienso liberar el código para confundirlos más todavía.

Algunas consideraciones que creo conveniente señalar son:

1. Debido a la naturaleza cuadro por cuadro de la animación, el algoritmo no sirve para altas velocidades.
2. La configuración del cuerpo no se lleva bien con escenarios “angulosos” porque se traba, este hecho lo uso en el ultimo nivel, donde tenés que ir trepando por el techo y si te soltas caes sobre unos pinches que te dejan inmovilizado, obligándote a comenzar de nuevo el nivel. Moraleja, aprovechar las desventajas del algoritmo de turno para convertirlas en ventajas siempre que sea posible.

Espero haberte iluminado. Muchas gracias por preguntar.

Adiós! y sigue mirando al cielo!



Implementando Flex2 en el “Mundo Enterprise” - VI (Flash Killers)

16 03 2007

En algunos lugares donde hablo acerca flex2 y sus maravillas, surgen comparaciones de lo más insólitas. Por ejemplo, en una oportunidad me dijeron:

“Ah, si, flex. No, pero hay algo mejor, openlaszlo”

Kmon!, openLazlo es lo mismo que flex2 pero sin el editor enriquecido para eclipse. Básicamente se va a limitar a imitar todas las funcionalidades de flex2 hasta que el desarrollo no de para mas y quede descontinuado.

Por el otro lado tenemos el flashkiller de Microsoft, cuyo “codename” WPF/E, es decir Windows Presentation Foundation/Everywhere.

Según MicroSoft:

“WPF/E” is the Microsoft solution for delivering rich, cross-platform, interactive experiences including animation, graphics, audio, and video for the Web and beyond…

…provides features such as video, vector graphics, and animations to multiple operating systems including Windows Vista, Windows XP, and Mac OS X.

Séee, claro!, multiplataforma!, windows XP, Windos Vista y Mac. PFFFFFFF!. By the way ¿no se supone que los codenames deben ser fáciles de recordar, o al menos de pronunciar? Cada ves que quiero hacer referencia a el tengo que fijarme en wikipedia!.

Hay una página de demos en la web de microsoft, pero no me instalé el plugin de WPF/E por miedo a que me corrompa el de flash!

Mientras mas veo lo que se puede hacer con flex2 y mas experimento, mas se afirma mi visión de que a finales del 2007, flex será el estándar de desarrollo para frontends web.

Por otro lado Ajax, a mi manera de ver, comparado con flex2 esta muerto y enterrado. El esfuerzo que se necesita para desarrollar un frontend solo con javascript y xml hace perder competitividad, alargando el tiempo de desarrollo considerablemente, ahora imagínense el mantenimiento!. Y no me vengan con que google tiene sus mejores soluciones implementadas en ajax, ellos pueden darse el lujo de derrochar un presupuesto de varios millones de dolares para desarrollar todo eso y poder decir “ja! miren lo que hacen nuestros expertos!”. Para google, invertir en desarrollos como googlemap y gmail es el equivalente a invertir en publicidad.

Saludos!



Implementando Flex2 en el “Mundo Enterprise” - V (Hablando con el server en binario)

14 02 2007

Resulta que un compañero de trabajo, me pasó un link a un artículo de un tal Christophe Coenraets, el cual había montado un server tomcat con varios ejemplos en flex y su integración con Spring/Java, tutoriales y demás, para poder ver los ejemplos andando.

Lea el resto »



Implementando Flex2 en el “Mundo Enterprise” - IV (Flex + aplicaciones existentes)

9 02 2007

Como estamos concentrados en utilizar webservices para comunicarnos con backend, no nos fijamos si Flex puede integrarse con aplicaciones que no los soportan. Buscando en google me encontré que SI PUEDE INTEGRARSE CON APLICACIONES EXISTENTES!

El siguiente artículo de Adobe Labs muestra como submitir información “a la antigua”, es decir, por medio de un requerimiento POST del browser.

Integrating Flex 2 and PHP

Fíjensé que el backend lo integra con PHP, pero se puede utilizar lo que tengamos a la mano, una página JSP, un PHP, un CGI lo que sea. Trataré de integrarlo con Lotus Domino a ver que sale.

Salutes



Implementando Flex2 en el “Mundo Enterprise” - III (uniendo java y flex)

7 02 2007

No hay mucho que contar, pero lo poco que hay es significativo. Resulta que estoy planteando una infraestructura en la cual un server Jboss 4 con webServices programados en java interactúan con la base de datos. Los mismos son consumidos mediante Flex. El tema es que si uno está trabajando en ambas plataformas, por ejemplo, programando los webservices y testeándolos por frontend, hay que tener el Flex Builder y el Eclipse(de la distro que uses) funcionando al mismo tiempo. Esto representa una sobrecarga para el equipo, más si el Jboss y el MySQL se encuentran “levantados” para probar las cosas.

Lea el resto »