Modo multiplayer de Crash of Titans para wii

3 07 2008

Estuve jugando el trabajo al Crash of Titans para wii y me pareció uno de los mejores títulos para la consola por muchos aspectos, como lo son los cuidados escenarios en los que se desarrolla el juego, el satírico humor(con muchas referencias a películas) y las divertidas cutscenes.

Pero hay un detalle que realmente me llamó la atención especialmente, y es el modo multiplayer cooperativo.
Imaginen un juego tipo “Mario Galaxy”, donde hay un solo protagonista, y queremos que otra persona pueda sumarse en cualquier momento con solo tomar el otro mando wii.

Podríamos agregar un personaje y dividir la pantalla en dos, para que cada jugador pueda seguir su camino independientemente uno del otro. Esto tiene como problema que los jugadores pueden perderse por el escenario o podría volverse tedioso para el mas experto si se ve retrasado por su co-equiper.

La otra opción es hacer las cosas al estilo Mario Galaxy, en el cual un jugador controla al personaje principal, mientras el otro junta estrellitas pasivamente o, a lo sumo, dispara con el cursor para atontar a los enemigos(buuuuuu).

Ahora, Crash Of Titans resuelve este dilema de la siguiente manera:

Sigue habiendo un solo personaje, un jugador lo controla totalmente mientras el otro “colabora” juntando unas burbujas que se caen de los enemigos o de los elementos del escenario que son destruidos. Ahora, la cosa cambia cuando el jugador que controla al personaje salta, cuando este toca la tierra, el otro jugador toma el mando del personaje inmediatamente.

Este gran acierto del diseño es una verdadera genialidad, cada jugador esta todo el tiempo atento a que le toque su turno, lo cual pasa muy seguido, ya que el juego es un plataformero y hay que saltar mucho mucho mucho.

Recomiendo ampliamente Crash of Titans, una verdadera joya que no ha sido debidamente valorada.



Google aprendió a indexar flash.

1 07 2008

Si señores, ahora google indexa el contenido de texto de sitios flash. Desde botones hasta menues, incluyendo sitios totalmente hechos en flash. Para mas información sigan el link:

http://googleblog.blogspot.com/2008/06/google-learns-to-crawl-flash.html

Salutes!



Cuidado con los “Singletons”

1 07 2008

Una solución rápida cuando uno necesita un dato desde varios lugares es crear un singleton. Pero hay que tener cuidado con ellos.

Un singleton tiene la particularidad de que no se destruye nunca(sobre todo en lenguajes como java o actionscript), porque la referencia que tiene dentro de si impide que el garbaje colector lo recicle.

Si usamos un singleton, debemos tener cuidado de que no tenga procesos, estos siguen ejecutándose aún en estados del programa en el que no son necesarios. Mas procesos ejecutandose = mas ciclos del procesador por loop = menos frames por segundo.

En un programa orientado a objetos, las clases suelen distribuirse en forma de árbol. Cuando debamos utilizar un dato en dos clases que estan al mismo nivel pero “no se ven”, antes de utilizar un singleton debemos buscar la primer clase padre que tengan en común. Localizada la clase tenemos dos opciones:

1. Pasar la referencia al dato a travez de constructores. Esto no es muy recomendable, porque complica la interface de las clases(hay que agregar un parámetro a los constructores)

2. Que la clase que necesita el dato dispare un evento, el cual posee una referencia a si misma. El evento debe ser del tipo bubble, es decir, si la clase donde esta la referencia al objeto que dispara el evento no lo atrapa, el evento es relanzado hacia arriba en la jerarquía de clases hasta que alguna lo procesa. En la clase padre identificada previamente, capturamos el evento y seteamos el valor requerido en el objeto solicitante(cuya referencia nos llega en el evento).

Adieu!



Notas performance en actionscript 3 - I: BitmapCaching

19 06 2008

El siguiente es un resumen de lo que recomienda el help de actionscript 3 que viene con el Flex Builder sobre consideraciones de performance:

BitmapCaching
Bitmap Caching es una técnica que se usa para pasar un elemento vectorial de una película flash en un mapa de bits. Flash pasa todos los vectores a mapa de bits si o si para poder mostrarlos en pantalla. Para eso, en cada frame genera un nuevo mapa de bits para el elemento en cuestión. Seteando la propiedad “cacheAsBitmap” a true, el elemento crea un mapa de bits de si mismo, evitando que este sea generado nuevamente en cada frame.

Cachear a bitmap no es posible si

1. El objeto cacheado se escala o rota constantemente o tiene hijos animándos dentro suyo.
2. El objeto mide mas de 2880 pixeles de ancho o alto.

Cuando usar bitmap caching?

1. Cuando tenemos un fondo estático complejo (por ejemplo creado con Ilustrator).
2. Cuando necesitamos scrolear un campo de texto.
3. Cuando se usa alphaChanelMasking.

Consideraciones al usar bitmap caching

1. No abusar del bitmapCahing. Generar los bitmaps cacheados usa mucha mas memoria que usar vectores.
2. Zoomear una imagen cacheada aumenta la memoria consumida.
3. Si el contenido esta animado o es rotado, el usar la bitmapCaching es contraproducente, es decir, degrada la performance en lugar de optimizarla.
4. Si mezclamos elementos cacheados a bitmap con elementos vectoriales, la performance se ve afectada negativamente.

En la próxima les cuento que pude averiguar del temido canal alpha y si hay alguna forma de mejorar la performance.



Disfrutar del proceso

18 06 2008

Enjoy

Es un buen consejo. Digo, que alguien te diga “disfruta el proceso”. ¿Como sabes si te gusta tu trabajo? Porque disfrutas “el proceso”.

El mejor ejemplo de esto es un pintor de cuadros, un paisajista. El tipo no pinta el cuadro porque quiere tener menos desnuda una pared de su casa o porque quiere tapar una mancha de humedad o tapar una grieta en la puerta por donde entra viento por la noche. Lo hace porque disfruta del proceso. Preparar las temperas, los pinceles, el caballete, buscar un buen motivo, pasar el día mirando los colores, las formas, el contacto del pincel contra el lienzo, el olor de las pinturas, que la gente le diga “pucha!, que lindo eso que hiciste”, etc.

Eso es disfrutar del proceso, encontrarle significado al ritual de armar todo con un fin.

La otra vuelta estaba programando un juego en mi casa y estaba cerrando una parte de la generación de niveles cuando y un amigo me dice “y de que trata el juego?”, recuerdo que le contesté “todavía no lo sé”. Ahí me di cuenta de que no lo hacía porque quería hacer el juego, lo hacía porque disfruto del proceso de creación.

Para mí, crear un nuevo proyecto en el flex builder es como estar frente a un lienzo en blanco. Armar las clases, los placeholders, es para mi como el olor de las pinturas para el paisajista.

Cuando le planteo esto a mi amigo, este me dice, “ah bueno, pero entonces lo haces porque te gusta programar”. No, lo hago porque me gusta hacer videojuegos, hay una gran diferencia entre “programar” a secas y hacer videojuegos. Me gustar tomar dibujitos mal hechos y después ver como se mueven por la pantalla en base a un algoritmo o en respuesta a las ordenes que les doy desde el teclado, el mouse o algún otro periférico. Yo no sentiría satisfacción programando, por ejemplo, un ABM para un negocio.

Me gusta probar una mecánica, armar cosas con cuadraditos de colores y después agregarle algunos gráficos que encuentro por internet y ver como queda. Nunca tengo en claro que quiero hacer, simplemente voy uniendo partes y voy probando lo que se me ocurre hasta que queda algo que puedo publicar en kongregate o en algún sitio por el estilo. Entonces le agrego un poco mas de trabajo y lo publico, para ver que dice la gente.

Cuando haces videojuegos como trabajo, difícilmente un juego sale tal como te lo imaginas, aún generando la idea, esta se ve moldeada por todos los que contribuyen a llevarla a cabo, por las urgencias del cliente o las limitaciones de presupuesto y esto muchas veces complica un poco el tema de disfrutar del proceso, pero es necesario para generar algo que cumpla con los estándares de calidad y que, al final del periplo, uno esté orgulloso de mostrar al mundo.

Disfruten del proceso, es un buen consejo que doy a quien lo quiera poner en práctica. Y si no están pudiendo hacerlo, luchen para que así sea.

Saludos!