jueves, 22 de enero de 2015

Hablemos de Shaders (para novatos)


Como muchos bien sabeis, en Mechanic Moon Studio trabajamos principalmente con el programa Game Maker Studio. Durante el último mes hemos estado investigando sobre características a implementar en nuestros próximos proyectos. Una de ellas, a la que hemos querido nunca renunciar, han sido los Shaders.

¿Qué son los Shaders? A todos nos sonará en los reportajes sobre juegos los términos shaders de iluminación, efectos o quizás en los requisitos técnicos: Requerida Tarjeta Gráfica con Pixel Shader 4.0.


Digamos que los Shaders son operaciones que hace la GPU (el procesador de la tarjeta gráfica) con las imágenes y elementos que tiene en pantalla. En plan resumido, cuando se aplica un shader a una imagen sea 2D o 3D, la imagen pasa a aplanarse y a convertirse en cientos de triangulos, guardando sus posiciones, profundidad, colores, etc. Seguidamente se convierten a píxeles y ahí empieza el trabajo del sistema de shaders.

Normalmente los sistemas de shaders hacen diversas pruebas para comprobar qué deben dibujar en pantalla y así ahorrar trabajo a la GPU:
- Todo elemento fuera de pantalla no se tiene en cuenta.
- Elementos demasiado alejados de la "cámara" tampoco se tienen en cuenta.
- Elementos que están tapados completamente por otros elementos, tampoco se dibujan.
- Elementos que están parcialmente tapados o parcialmente fuera de pantalla, se dividen y se tiene en cuenta sólo lo que se ve por la cámara.

Cómo podréis imaginar, al aplicar estas reglas, la carga gráfica y cantidad de información que debe calcular la GPU con su motor de shader se reduce drásticamente, además nada de esto lo gestiona la CPU (el procesador de la placa base). Ahora bien, ¿Qué puede hacer un shader?

Un sistema de shaders realmente hace pocas cosas, pero con esas pocas operaciones se pueden conseguir muchísimos efectos. Simplificando, las operaciones más comunes que se hacen, pixel a pixel son:
- Transformar el pixel (Escalarlo o rotarlo)
- Cambiar su opacidad / color / brillo / contraste
- Cambiarlo de posición

Con sólo estas pocas operaciones ya podemos hacer efectos de filtro encima de la imagen, efectos de ondulación para simular que algo está debajo del agua y mil cosas más, entre ellas, efectos de iluminación. Para muchos de estos efectos, además, el motor de Shader usa otras texturas de apoyo para controlar cómo afecta o refleja la luz cada objeto. Por ejemplo: Mapas de Normals, Specular, Diff, Depth, etc.

SU USO EN GAME MAKER STUDIO

Para nuestros proyectos, vamos a utilizar un Shader preparado para crear una iluminación realista a la imagen. Otros sistemas anteriores de iluminación en Game Maker, usaban sistemas basados en Surfaces. Dichos sistemas consumían demasiado rendimiento del CPU y entonces no eran factibles para el desarrollo de un juego comercial. Al usar un sistema de Shaders, liberamos memoria a la CPU y cargamos esos cálculos a la GPU, normalmente más liberada, ya que los Shaders, digamos que van al final del proceso de cada frame dibujado en pantalla.

Este sistema lo hemos estado editando durante varias semanas y hemos conseguido que funcione en Android. Sin embargo al ser un proyecto en 2D necesitamos algo que nos permita utilizar toda la potencia del sistema, dando profundidad a nuestros sprites. Para ello hemos apoyado una excelente herramienta en Kickstarter: Sprite DLight



Este programa (que ya  hemos probado en versión Alpha como buenos backers que somos) nos permite crear mapas de Normals y Speculars para nuestros sprites pixelados y sin profundidad. No me entretendré mucho en explicaros esta parte, pero gracias a esta inestimable ayuda vamos a poder dar profundidad a nuestros personajes y escenarios de forma dinámica, decidiendo cómo queremos que les afecte la luz, influyendo la distancia a la fuente de luz o su ángulo.

Os recomendamos que sigais este proyecto ya que es muy prometedor y necesitan también vuestro apoyo para entrar en Steam: Sprite DLight en Steam GreenLight.

Dicho programa es compatible también con Unity 3d y otros programas de desarrollo web, por lo que es una forma rápida y semi-automática de generar mapas de normales y speculars para ir trabajando y mejorando vuestros proyectos con el uso de shaders.

 Como conclusión os comento que nuestro proyecto "Fire Tactics" usará Sprite DLight para aplicar los shaders en Game Maker Studio. Por nuestra parte, el descubrimiento y dominio de estos nuevos "juguetes" nos permitirá trabajar la ambientación de nuestros proyectos con más mimo y conseguir resultados (esperamos) más espectaculares.

miércoles, 7 de enero de 2015

Juegos para móviles: ¿Es posible triunfar con algo diferente?


Comienza el año, tras las resacas invernales, y no dejo de darle vueltas a la cabeza sobre las posibilidades de éxito lanzando juegos para móviles. Está claro que como estudio, nuestro próximo juego queremos que sea para smartphone, pero leer noticias como la concerniente a Monument Valley, pone los pelos de punta. Pongámonos en antecedentes.

Monument Valley es un videojuego hecho obra de arte creada en Unity, que fue lanzada el año pasado en Iphone y posteriomente en sistemas Android. En el juego llevas a un personaje por escenarios tridimensionales, por los caminos establecidos, no tanto por la lógica y la gravedad, como por los caminos visuales. Al cambiar la perspectiva de la cámara, se producen ilusiones visuales que abren nuevos caminos. Hay que jugarlo para maravillarse.

Digamos que este juego en cuestión es un juego de culto. A la vieja usanza. No tiene micropagos, no requiere conexión a internet permanente y es un concepto de juego original con un único defecto: Excesivamente corto. Es un juego de pago, no es gratuito. Durante muchos meses ha estado en las listas de Android como uno de los juegos más vendidos. Sin embargo.. hoy leo esta noticia:

" Sólo el 5% de los jugadores de Monument Valley en Android compraron el juego. "

Realmente es un panorama desolador. Un juegazo indie como éste, teniendo un éxito increible, pero que debería ser muchísimo más grande en conceptos de beneficios para el desarrollador. Pero si le damos la vuelta a la tortilla y leemos sobre los juegos gratuitos con micropagos:

"Sólo el 5% de los jugadores gastan dinero real en juegos con micropagos". Otra patada en la boca. Es imposible triunfar sino eres un Rovio o un King, teniendo índices tan bajos de compra. Puedes tener muchos jugadores, pero conseguir que realmente consigas vivir desarrollando videojuegos sigue siendo igual de complicado. Conozco gente que odia los juegos con micropagos, pero que nunca ha comprado nada en Google Play. Digamos que es el pez que se muerde la cola. No se pueden hacer desarrollos exclusivos de juegos buenos, sabiendo que nadie los va a comprar.

En Iphone e Ipad sin embargo el panorama es distinto. Sobre un 40% de los jugadores compraron Monument Valley, e incluso han tenido de forma gratuita una expansión con nuevos niveles. Pero la base de usuarios de Iphone respecto a sistemas Android también está bajando (la cuota de mercado del sistema de google está creciendo año tras año).

El tercero en discordia es Windows Phone. Una tienda pequeña, pocos usuarios, pero con poca competencia. He leído artículos sobre juegos vendiendo 1000-2000 unidades mensuales, estando los desarrolladores sumamente contentos.

¿Cúal es el camino a seguir entonces? ¿Se puede hacer algo diferente? ¿Toca adaptarse a los nuevos tiempos y caer en la red de los juegos gratuitos con micropagos? Son preguntas que nos hacemos y que esperamos poder responder con alternativas que sobre todo beneficien al jugador y que nos permitan seguir soñando, creando juegos, aquí en Mechanic Moon.

Fuente: http://www.joystiq.com/2015/01/06/monument-valley-dev-5-of-android-players-paid-to-play/