Egg Savior 1.0

Últimamente estuve empleando la animación para algo un poco diferente: un videojuego. Mi proyecto personal paralelo, consistente en desarrollar aplicaciones para el sistema operativo Android, ha tomado ese rumbo, al menos temporalmente, para quitarme una espinita que tenía clavada desde hace mucho tiempo: crear y distribuir un videojuego.
Dado que no dispongo de un terminal Android muy potente, y que esperaba terminarlo antes del 2015, me planteé hacer el juego en 2D. Sin embargo, como necesito gráficos animados y no soy buen dibujante, eché mano de mis conocimientos de animación 3D para renderizar toda la parte gráfica.
Antes de entrar en más detalles, aquí os dejo un trailer del juego:
http://www.youtube-nocookie.com/v/0byIARFTyRk?fs=1&hl=es_ES&rel=0

Una vez que estuvo clara la temática del juego y los elementos que iban a intervenir en los priemeros niveles, empecé a trabajar. La primera tarea fue el modelado y shading del personaje protagonsita, la gallina:

Modelado, Shading y Rigging

El modelado no fue para nada detallado, como se puede ver en la imagen, porque no merece la pena. Se trata de un personaje que va a ocupar unos 50 pixeles en pantalla. Se aplicó el modificador “subdivision surface” para suavizar las formas y nada más.

Respecto al shading, para conseguir unos colores más interesantes, se aplicó SSS en la cresta y los apéndices carnosos de la cabeza (alguien sabe cómo se llaman esos colgajos?). El resto son colores planos para lograr una estética cartoon.

El rigging es muy básico, y es realmente lo único de lo que me arrepiento, porque si bien no fue necesario un rigging más complejo para las animaciones dentro del juego, sí que hubiese venido bien para el material promocional, y las imágenes estáticas de mayor tamaño en que aparece la gallina.


Respecto a la animación, no está muy trabajada por la misma razón, es un personaje que ocupa unos pocos pixeles en pantalla. Sin embargo, el ojo experto sí nota la falta de calidad, y Jordi (mi profesor de animación) ya me tiró de las orejas por ese motivo 🙂 De hecho, la animación es tan básica que en ningún momento ajusté las curvas, está todo hecho con el editor de acciones de blender, donde sólo se pueden desplazar las claves en el tiempo.
En el trailer se puede ver el resultado de animación con la gallina caminando, empollando el huevo e incluso teletransportándose. En el caso en que la gallina sube o baja rampas, se podrían haber hecho animaciones a medida, para conseguir que los pies funcionen mejor, pero cada nueva animación aumenta mucho el tamaño del juego, y dado que se descarga desde un teléfono móvil, decidí reducir al máximo el número de animaciones.

El resto de elementos del juego son completamente estáticos, con lo cual sólo fue necesario realizar modelado y shading.

Respecto al render, hay algo muy importante a tener en cuenta cuando se realizan gráficos para videojuegos, y que pude mejorar gracias a los consejos de Diego F. Goberna: el filtrado de AA. El render que realizar blender por defecto utiliza un filtro de Gauss, que consigue unas curvas perfectas a costa de un desenfoque considerable en los bordes. En un videojuego donde los gráficos tienen decenas de pixeles, este desenfoque provoca una sensación de falta de definición y malgasta espacio de imagen. Por tanto, para videojuegos de este estilo, yo recomiendo utilizar como mínimo el filtro Mitch, aunque yo he usado CatRom, que es el que produce unos bordes más definidos, aunque en ocasiones aparece un poco de aliasing.

Como es un videojuego 2D con gráficos pre-renderizados, la proyección de la cámara debe ser ortogonal, porque la proyección por defecto (con perspectiva) tiene dos efectos nefastos:

  1. Las animaciones cíclicas en que el personaje avance, no encajan, porque cambia la perspectiva al avanzar.
  2. No podremos construir el escenario dinámicamente a partir de piezas individuales, porque tampoco encajarán.
El primer problema se puede aliviar haciendo que todas las animaciones mantengan al personaje estático, y si necesitan avanzar, se comporten como si hubiese una cinta transportadora debajo del personaje, aunque seguramente resbalarán los piés cuando pongamos el juego en marcha. 
La solución de la cámara ortogonal tampoco es perfecta, los objetos pierden profundidad. Esto se puede aliviar en gran medida mediante una iluminación que realce las formas y los volúmenes. Y así se hizo en Egg Savior.
Para almacenar los fotogramas de animación del personaje, por una cuestión de rendimiento, se utilizó una imagen atlas, como las habituales en el texturizado de personajes en videojuegos 3D. Aquí os dejo un ejemplo, con la animación del personaje teletransportándose:

El resultado es el que habéis podido ver en el trailer. Y si algún poseedor de terminal Android quiere probarlo, basta con buscar “Egg Savior” en el market, o bien si estás viendo esta página desde uno de estos terminales, usar el siguiente enlace:

market://details?id=com.eggsavior

Anuncios

Acerca de Rubén L.

Software Engineer
Esta entrada fue publicada en android, animacion, Español y etiquetada , . Guarda el enlace permanente.

Una respuesta a Egg Savior 1.0

  1. Marcos dijo:

    Solo felicitarte por el gran trabajo realizado.

    Espero que sigas comentando algo más de como fue el desarrollo de la aplicación.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s