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

Recursos gráficos de Craftpix.net

Para todos los que nos dedicamos a hacer juegos indie uno de los mayores retos es como optimizar los pocos recursos que tenemos. Estos días he encontrado uno de estos sitios donde podemos encontrar todo tipo de assets 2D y algunos 3D para utilizar en nuestros proyectos.


En esta web podemos encontrar todo tipo de assets con el foco puesto en gráficos 2D y efectos para la UI que muchas veces son necesarios para dar una capa de calidad a nuestros juegos. Estos son los principales activos de este recurso: 
  • Game kits
  • Sprites & Characters
  • GUI
  • Backgrounds
  • Icons
  • Tilesets
  • Objects
  • Text effects


Además, ahora podemos encontrar una oferta de subscripción que pienso que es interesante para aquellos estudios que necesitan gráficos de todo tipo para varios proyectos a un precio muy competitivo. Para aquellos que empiezan también tienen un apartado con assets gratuitos que no por eso no dejan de ser gráficos de calidad para proyectos indie o juegos para plataformas móviles. Dadle un vistazo... nunca se sabe. 

Datos 




Recursos de Unity3D.college

No por ser un sitio conocido no debemos prestarle atención. Unity3d.college es un sitio de referencia obligado para todos los desarrolladores en Unity. Aquí podemos encontrar en pequeño formato lecciones de todos los niveles sobre las principales competencias que un desarrollador de videojuegos debe conocer. 




Jason Weimann es el impulsor de este proyecto que se ramifica en un canal de YouTube, cursos online, grupo de Facebook y otras redes sociales.




Si no lo conocías te recomiendo que te pases por allí y le eches un vistazo desde seguro encontraras algún recurso que nos permita mejorar, profundizar o aprender buenas prácticas.

Datos 
Canal de YouTube
: https://www.youtube.com/channel/UCX_b3NNQN5bzExm-22-NVVg
Facebook: https://www.facebook.com/groups/1819196398409858/
Twitter: https://twitter.com/Unity3DCollege


Recursos de Rayos el Dev

Hoy os traigo un canal de YouTube con un conjunto de tutoriales de nivel principiante e intermedio con conceptos específicos para Unity, diseño de videojuegos y optimización y experiencias del propio desarrollador dentro de la industria que pueden resultar interesantes para todos los públicos. 


Los vídeos están bien explicados y tocan todos los aspectos del mundo del videojuego que todo desarrollador tiene o ha tenido que trabajar en algún momento u otro. 


Datos 
Canal de YouTubehttps://www.youtube.com/channel/UCFtMYSIqMlSxiypC9aKLizw

Compra o vendre tu código: Un juego casi tuyo

 Este fin de semana en un grupo de WhatsApp que soy miembro explicaban un modelo de negocio que no deja de ser controvertido. Una de las muchas opciones que tenemos los desarrolladores de videojuegos es vender íntegramente nuestro proyecto para que otra persona lo publique, monetice y se atribuya el proyecto.


Esta forma de trabajar tiene dos perspectivas diferentes que podemos analizar y pone de manifiesto una realidad dentro del negocio de los videojuegos:

Desarrollador y vendedor

Este modelo puede ser una solución valida para desarrolladores que sólo les preocupe la fase de diseño y desarrollo, pero no quieran invertir tiempo y dinero en la publicación y seguimiento de una aplicación. Al fin y al cabo, como ya sabemos rentabilizar la inversión como desarrollador indie es muy complicado y puede ser una opción válida si queremos recuperar nuestros costes vendiendo nuestro código.

Así mismo también es una opción valida si queremos darnos a conocer como desarrollador freelance y conseguir una base de clientes para los que podamos trabajar libremente en diferentes tipos de proyectos.
  • Gana hasta un 90% de comisiones por la venta de los códigos fuente de tus aplicaciones y haz crecer tu reputación y tu audiencia!
  • Cuanto más contribuyas, más ganas. Nuestros niveles de ventas te dan la libertad de impulsarte a ti mismo a la cima en términos de ingresos y reconocimiento.

 Si conseguimos vender nuestro proyecto a través de una plataforma de compra/venta de código y proyectos podemos obtener mas dinero que con un sistema de monetización basado sólo en anuncios sin invertir un céntimo en publicidad.

Comprador y Publisher

La otra perspectiva es mirar la posibilidad de hacer negocio con la compra de proyectos y código desarrollado por otras personas y publicarlo con nuestro nombre. Como modelo de empresa puede ser interesante en el sentido que no deja de ser una relación contractual entre empresa y desarrollador freelance.

En este caso podemos poner la atención en el publishing, programación de DevOps, análisis de datos, localización y todos los trabajos que hay que hacer una vez publicamos un juego con el objetivo de rentabilizar la inversión por la compra del código fuente y arte del proyecto.

Personalmente como modelo de negocio puede llegar a ser interesante a pequeña escala como si fuéramos una empresa de publicación de juegos como muchas que existen en el mercado. Así mismo como desarrollador indie no es muy ético dar a entender que un proyecto es tuyo cuando en realidad has comprado el código, ¿no?

Plataformas

Lo veáis como lo veáis os invito a conectaros a las plataformas mas importantes de internet y ver se cuece por allí. Podéis sacar ideas, ver que precios y condiciones usan y analizar por vuestra cuenta si os interesa vender vuestros proyectos o comprar vuestro próximo proyecto.

 


Un Game publisher en casa (parte 3)

Como expliqué en el la primera parte del artículo el objetivo es hacer una prueba real de nuestro juego para analizar su viabilidad económica a partir del análisis del la tasa de retención de usuarios en el día 1, 3 y 7 de la prueba ya que muchos publishers analizan la relación entre el D3 y D7 para a partir de un test de pocos días tener una visión real del potencial de un juego. La clave está en que la relación D3/D1 de al menos 70%. Este era nuestro objetivo.


Como vimos en la segunda parte del artículo creamos una campaña de Facebook Ads para obtener los datos y además ver la aceptación del arte del juego y obtener una primera idea de como es la audiencia del juego. 



Aunque la campaña sólo ha durado 3 días ya arroja algunos datos interesantes sobre la loa audiencia del juego por lo que refiere al grupo de edad y al genero de los jugadores. Si miramos el gráfico siguiente podemos observar como la franja de edad de los mas interesados en el juego pertenecen al grupo de personas de entre 13 y 17 años y en todas las franjas de edad con un mayor porcentaje de mujeres que de hombres. 


Una vez realizada la campaña debemos esperar unos días a tener los resultados ya que las plataformas de datos (Firebase Analytics en este caso) nos den información sobre los usuarios adquiridos y los usuarios activos los días posteriores a la instalación del juego.

Una vez nos arrojan datos podemos calcular la retención de usuarios para cada día y analizar los resultados. En nuestro caso obtuvimos 400 jugadores repartidos mas o menos homogéneamente y la siguiente retención en los días posteriores.


Como podemos observar los datos nos son buenos. Si nuestro objetivo era acercarnos a un 70% no hemos conseguido despertar el interés de nuestros jugadores.


A partir de aquí podría entrar en una depresión o aprender alguna cosa. Yo apuesto por el segundo camino. Si queremos mejorar este resultado debemos mejorar diferentes aspectos del juego, especialmente la experiencia de usuario en las primeras partidas. Aumentar las recompensas, equilibrar mejor la dificultad del los primeros niveles, incentivar al jugador para que vuelva al día siguiente...

En Internet hay mucha literatura sobre como potenciar la retención del usuario en este proyecto deberé trabajar estos aspectos y con una nueva versión repetir la prueba para ver si hemos mejorado los resultados. De todo se aprende.


Como hacer copias de tu código de Unity con GitHub

Podriamos escribir un libro entero de las bondades de Git para el trabajo colaborativo y la gestión de versiones en un entorno como Unity. D...