Mejores efectos en Unity con Shaders Graph

Un elemento que tiene un gran potencial en Unity es el uso de shaders en nuestros juegos. A muchos diseñadores les da miedo enfrentarse a los shaders ya que hasta ahora la su programación era un trabajo manual y podía ser muy complejo. Desde hace unas versiones Unity incorpora una herramienta muy útil para la creación de Shaders a través de una herramienta visual llamada Shader Graph. 

De hecho, cuando hacemos juegos para dispositivos móviles hay que tener en cuenta los recursos que necesitamos para ejecutar estas porciones de código que modifican los pixeles que mostramos en pantalla. Unity tiene dos Pipelines para gestionar el renderizado de los shaders, uno llamado Universal Render Pipeline (URP) que podemos utilizar en nuestros juegos para móviles y uno (High definition) que usaríamos en juegos para PC o consolas.

Para utilizarlos debemos crear una aplicación con la URP activado o High Definition o una aplicación normal y añadir manualmente los componentes necesarios para su uso.

Si debemos hacerlo manualmente necesitamos acceder al Package Manager e instalar el Universal RP. Una vez instalado podemos crear el Pipeline Asset y assignarlo a configuración del proyecto. 


Una vez instalado el paquete debemos activarlo en la configuración de nuestro proyecto para acceder  él a través del Shader Graph. Para ello sólo crear un pipeline en nuestro proyecto y después en el apartado Graphics de la configuración del proyecto asignar el asset como Scriptable Render Pipeline Settings.




Ahora si, ya podemos crear shaders usando el Shader Graph y usarlos en nuestros juegos. A partir de aquí yo recomiendo empezar con algunos tutoriales sobre shaders de blogs que estén bien explicados, son interesantes y no son muy complejos y así ir aprendiendo como se utilizan y podamos sus posibilidades. Evidentemente siempre podemos ir a Youtube y seguir algún tutorial, pero personalmente prefiero utilizar páginas especializadas donde puedo mirarme el gráfico con tiempo e ir aprendiendo a través de los ejemplos.


Uno de los recursos que he encontrado más interesante es el blog de CYAN. Es un blog especializados en shaders donde explica diferentes tipos y te muestra todo el proceso de creación del gráfico para poder utilizar en nuestros proyectos.

Otro blog que vale la pena poner atención es el blog de Daniel Ilett, donde a través de ejemplos bien explicados podemos crear todo tipo de efectos e ir aprendiendo las mejores técnicas par mejorar el aspecto visual de nuestros juegos. 


Enlaces

CYAN blog: https://www.cyanilux.com/

Daniel Ilett blog: https://danielilett.com/



Tipos de juegos móviles (1): Consigue y gasta recursos

Hoy empiezo una seria de artículos sobre diferentes nichos de juegos para dispositivos móviles poniendo atención en las mecánicas y sistemas de recompensas que usan. 

Uno de los más fascinantes y más exitosos son aquellos que el jugador debe conseguir un recurso... y simplemente gastarlo. A partir de este concepto se abre un mundo de posibilidades. A veces es más complejo entender porque un tipo de juegos funcionan aunque el desarrollador no comparta el gusto por el nicho de juegos que esta desarrollando. Un buen diseñador de juegos debe por encima de todo debe entender al jugador. 


En este tipo de juegos hay un recurso limitante que pueden ser monedas, joyas, gemas, bolas, billetes o cualquier cosa que se nos ocurra. A partir de aquí hay 2 variables a tener en cuenta: como los conseguimos y en que nos los podemos gastar.


Como conseguir y gastar nuestro recurso

Juegos como MasterCoin tenemos un juego de slots o una ruleta para conseguir monedas de manera prioritaria. Otros como Island King o Prirate King tenemos un spin. El jugador tira y puede ganar premios (monedas y/o recompensas) para poderlas gastar en acciones para conseguir más monedas e invertirlas en la construcción de su entorno virtual. Una vez completado nuestro entorno se nos desbloqueara otro nuevo para volver a empezar. 


El problema es que una vez decorado nuestro entorno virtual (ciudad, isla, pueblo, castillo...) nos hemos quedado sin monedas y debemos conseguir más para poder continuar. A partir de aquí se abre un mundo de posibilidades que combinan recompensas y compras en la aplicación para poder avanzar más rápido en el proceso. 


Ganar más monedas con el juego consiste en esperar un tiempo a recuperar un número de tiradas. Aunque podemos acelerar el proceso comprando tiaras con dinero real (compras directas o a través de ofertas). También podemos ganar más tiradas como parte de un premio en el juego al combinar un slot o que te toque en la rueda de la fortuna. 


La parte social consiste en atacar o robar monedas a otros jugadores ya que uno de los puntos fuertes es enlazar el juego con nuestras redes sociales para customizar la interacción con otros jugadores reales... dicho de otra manera cuando atacamos o robamos lo hacemos a otros jugadores.


Así mismo cuantas mas monedas tengamos más podemos gastar y aquí es donde se produce el punto de inflexión entre el tiempo que debemos esperar para seguir jugando con la necesidad cada vez de más recursos para seguir construyendo nuestro mundo virtual. 


Esta necesidad se complementa con retos, comparativas con otros jugadores, capacidad de revancha contra otros jugadores que nos han robado u atacado. Todo pensado para que no dejemos el juego o juguemos el máximo tiempo posible.


Para poder cambiar de escenario debemos hacer cada vez un número mayor de construcciones donde cada una cada vez tiene un coste mayor. Además podemos combinar este objetivo primario con objetivos secundarios a partir de proponer al jugador retos que le reportaran mas recursos para seguir en el juego. 

Como podéis ver las mecánicas de este tipo de juegos son muy simples. Pero viendo los datos de las diferentes tiendas de aplicaciones móviles, simplemente funcionan.


Energy Up: Como hacer un juego sin recursos para no iniciados

Todos los que nos dedicamos al mundo de los juegos nos preguntamos alguna vez cual es el objetivo de nuestro trabajo. Evidentemente el primer objetivo es hacer un producto lúdico que sea divertido, pero detrás de estas palabras creo que hay mucho más.

Es demasiado fácil hacer la secuencia de acontecimientos mental pensando que si lo conseguimos una cosa llevará a la otra… si es divertido los jugadores se lo descargan,  tendremos buenas críticas, el boca oreja nos hará conseguir más descargas... y más usuarios significará más ingresos… y los que llevamos un tiempo en esto sabemos no es así. 

Hacer un juego es una cuestión de equilibrio… y hacer un juego en solitario o con un grupo pequeño de personas aún más. Es muy importante saber dosificar los esfuerzos y ser consciente que aunque nos saltemos algunos pasos, que los estudios si hacen y tienen recursos para ello, lo que hagamos vaya en la dirección correcta… dicho de otra manera, se pueden obviar pasos pero se debe ser consciente de ello… 

Como podéis imaginar el primer paso es hacer una buena planificación y diseño. En resumidas cuentas, ser capaz de cuantificar el volumen de trabajo para estar seguros que terminaremos el proyecto. A partir de ahí hacer dibujos, esbozos, mapas y definir las mecánicas.

En general es bueno poner objetivos cada cierto tiempo para ir cerrando cada etapa del desarrollo. Los estudios usan SCRUM u otras metodologías Agiles para trabajar en equipo e ir visualizando el trabajo etapa a etapa. Haced algo parecido adaptado a vuestra realidad. Yo utilizo Trello para apuntarme todas las acciones que tengo que hacer.  

En segundo lugar hacer un prototipo. Podemos poner cubos en vez de personajes e implementar las mecánicas básicas. Sólo eso… no intentéis ir más allá. Si probamos el prototipo y creéis que funciona… Adelante… y no os de pereza rectificar… mejor ahora que más adelante.

Si el prototipo funciona… haced el motor del juego con las demás mecánicas. Pensad bien en las estructuras de datos que vais a necesitar. ¿Cómo guardaremos los datos (PlayerPref, XML, JSON…)? ¿Las guardaremos en local o en un servidor externo?

Es muy importante que sepáis definir en valores numéricos los niveles o avances del jugador en el juego. Números, números y más números… esto nos permitirá balancear el juego más adelante. Un estudio tiene gente especializada para ello… pero aunque sea a pequeña escala es muy importante ya que afecta a la sensación lúdica del jugador… ya sabéis… fácil de jugar, difícil de dominar.

Después de trabajar en ello haced una buena UI/UX. El jugador debe sentirse a gusto con nuestra interfaz. Aunque de pereza… poned brilli, brilli… a los jugadores les gustan estos efectos que refleja que la interfaz ha sido trabajada. 

Definid bien las recompensas. Si lo habéis hecho bien seguro que las habréis definido en la fase de diseño, sino no avancéis más y ponedle atención a ello. A los jugadores les gusta ser recompensados por sus avances en el juego. Además es un elemento muy importante en la economía interna del juego. ¿Usareis algún tipo de moneda interna? ¿Podéis comprar/vender con dicha moneda? ¿Recompensas a cambio de ver anuncios? ¿Podéis comprar objetos o power ups? ¿Regalos al volver al juego para fidelizar al jugador? Estos elementos deberían estar integrados dentro de las mecánicas del juego si es que deben existir y no ser un elemento añadido artificialmente para retener o ganar algo más de dinero, porque a la larga no funcionan. 

La economía del juego también consiste en poner valor a las cosas con las que interactúa el jugador y tiene mucho que ver con el diseño económico del juego en general y el balance del juego. Podremos definir una buena economía si previamente hemos puesto números a los avances del jugador en las etapas del juego. Lo he dicho hace unos párrafos más arriba… combinado con las recompensar y los coste de cada etapa del juego. Aunque parezca mentira habrá que trabajar en MS Excel y hacer algunos cálculos.

Una vez definidos los elementos clave os propongo definir los niveles, haceros una herramienta para genéralos y poder hacer cambios con facilidad si lo necesitáis y en todo caso definid las estructuras de datos para que sean fácilmente flexibles por si tenéis que retocar aspectos que hasta ahora no habíais tenido en cuenta. Con la experiencia uno aprende a definir las estructuras de datos lo más modulares posibles, clases abstractas, herencia, polimorfismo y estas cosas del mundo de la programación… y a poder ser pensadas en la etapa de diseño para ahorrarnos tener que rehacer código.



Con los datos de balanceo del juego y la definición económica del juego deberíamos poder hacer los niveles compensados, divertidos y con dificultad ajustada para tener al jugador en el área diversión el máximo tiempo posible.


Una vez terminado el juego… invertid un poco de tiempo a poner algo más de efectos a todas las partes del juego… aquellos pequeños detalles que el jugador no ve, pero si se perciben y dan al juego un aspecto profesional. Cuidad los detalles, son la diferencia entre un buen trabajo y un trabajo excelente. Haced buenos tutoriales integrados en el juego y aseguraros que le jugador entiende que tiene que hacer.

Probad, probad y probad vuestro juego… y a poder ser por gente ajena a vosotros. Escuchad las críticas y aprended a diferenciar lo que es una opinión a lo que es una crítica objetiva. Estas últimas son las importantes.

Añadid algún sistema de obtener KPI’s de vuestro juego. GameAnalytics, Google Firebase… son buenas herramientas para saber más de User flow de los jugadores y aprender de como usan el juego. Que no os de pereza invertir unos días a diseñar un buen sistema de análisis ya que en el futuro os servirá para aprender mucho de cómo han salido las cosas.

Por ultimo dejad descansar el juego unas semanas… si, lo que habéis leído. Yo recomiendo dejar el proyecto terminado un par de semanas y retomarlo con la energía renovada. Cuando uno ha hecho tantas cosas es muy fácil sentirse abrumado por el esfuerzo realizado y perder la perspectiva. Dejad el proyecto en fase beta y centraros en recoger la opinión y apuntad lo más relevante. Una vez pasado el tiempo… rectificad todo lo que consideréis esencial y lanzad vuestro proyecto.

Una vez lancéis vuestro juego sólo habéis llegado a la mitad del proceso. Haced un lanzamiento suave (pocos países y analizad los datos estadísticos), haced cambios y analizad los resultados de los mismos y cuando estéis seguros lanzad vuestro juego a lo grande… bueno, tan grande como un desarrollador indie puede permitirse… pero con el orgullo de haber hecho las cosas bien. 

Una vez lanzado el proyecto analizad los KPI’s y haced los cambios que puedan mejorar la retención de usuario, aumentar las ventas internas del juego o aumentar el tiempo de juego. Localizad el juego a varios idiomas y si es necesario añadid contenido. En un estudio las LiveOp son muy importantes y tienen un equipo para ello, vosotros pensad si os sale a cuenta en función de la relación coste/beneficio o si el objetivo del proyecto era sólo económico, formativo o para haceros un portafolio. 

Una vez lanzado el juego debemos centrar nuestros esfuerzos en diseñar una campaña de lanzamiento, usar las redes sociales, decidir si queremos invertir en publicidad o no y gestionar las opiniones de los usuarios... ver los resultados, leer las opiniones y aprender de todo el proceso para que el próximo proyecto sea mejor… 

Proyecto: Energy UP
Plataforma: Android
Descarga gratuita: Goole Play

Tipos de juegos móviles (2): Hipercasuales

Más del 40% del mercado de los juegos móviles está compuesto por los juegos llamados hipercasuales . La característica mas destacable de est...