Prototipo de juegos móviles en Unity 2018 (Parte 1)

Cuando nos plateamos desarrollar juegos como profesionales y estamos empezando yo recomiendo hacer un prototipo todas aquellas funcionalidades que utilizaremos repetidamente. Cunado tu grupo es reducido o unitario no debemos perder tiempo en aquellas cosas que tenemos hechas en proyectos anteriores y podríamos reutilizar.


La mayor parte de los juegos móviles se componen en un inicio de una pantalla de splash con el logotipo de la compañía donde seguidamente veremos una pantalla de título de juego para mientras muestra un "cargando" se carga la primera escena del juego, ya sea un pantalla de configuración o el menú principal del juego.


Este hecho nos hace pensar que si en vez de empezar un nuevo proyecto a partir de un proyecto en blanco empezamos a partir de un prototipo que ya contenga estos elementos, configuración para móviles nos ahorraremos un tiempo valioso cada vez que los utilicemos. En este vídeo os muestro a modo de tutorial como hacer un prototipo de aplicación con las tres pantallas básicas. 


Este primer prototipo solo tiene una rutina en C# que controla la gestión del fadeIN i el fadeOUT del salto entre escenas. Os dejo el código para que no tengáis que copiarlo si os interesa.

 using System.Collections;  
 using System.Collections.Generic;  
 using UnityEngine;  
 using UnityEngine.SceneManagement;  
 using UnityEngine.UI;  
 public class FadeScene : MonoBehaviour {  
   public string sceneName;  
   public float waitSeconds;  
   public Image black;  
   public Animator anim;  
    // Use this for initialization  
   void Start ()  
   {  
     if (sceneName!="")  
     {  
       StartCoroutine("ExitToNewScene");  
     } else  
     {  
       StartCoroutine("EnterToNewScene");  
     }  
   }  
   IEnumerator ExitToNewScene()  
   {  
     yield return new WaitForSeconds(waitSeconds);  
     anim.SetTrigger("FadeIN");  
     yield return new WaitUntil(() => black.color.a == 1);  
     SceneManager.LoadScene(sceneName);  
   }  
   IEnumerator EnterToNewScene()  
   {  
     yield return new WaitForSeconds(waitSeconds);  
     anim.SetTrigger("FadeOUT");  
     yield return new WaitUntil(() => black.color.a == 0);  
   }  
 }  

Aprender de los juegos clásicos

El mundo retro sin duda es una excelente fuente de inspiración parar cualquier programador Indie. Cuando a partir de los años 80 del siglo XX. aparecieron los primeros ordenadores personales hubo una explosión de juegos realizados para todo tipo de ordenadores personales de aquella época. Las imágenes de 8/16 bits hacían que los juegos tuviesen muchas limitaciones gráficas, y la escasa memoria (16/48/128k) requerían de un esfuerzo de programación para diseñar con tan pocos recursos juegos memorables. 


Estas circunstancias hicieron que si por alguna cosa se caracterizaban los juegos de aquella época era su originalidad. Claro está que tener todo un mundo inexplorado es por una lado una ventaja, pero por el otro lado los escasos recursos técnicos disponibles hacían que el ingenio se agudizara al máximo. De esta época hay grandes juegos donde destacan por su jugabilidad y originalidad.

Actualmente una buena fuente de inspiración es el análisis de los juegos clásicos. Teniendo en cuenta que actualmente podemos mejorar los gráficos, hacer juegos más grandes, mapas enormes, animaciones complejas, shaders, efectos con partículas muchas veces lo que falla es la originalidad. 


Actualmente cada cierto tiempo tenemos un producto con alguna dinámica original, un escenario nuevo donde no tardan en aparecer copias con la esperanza de subirse a la estela de un éxito, en aquella época el porcentaje de dinámicas originales era mucho mayor que ahora. Algunas de ellas se han perpetuado en el tiempo, otras han caído en el olvido sobrepasadas por el arte de atraer a los jugadores con efectos especiales que esconden sencillamente... un mal juego. 

Yo recomiendo a los nuevos diseñadores de videojuegos que se lancen a buscar un buen emulador y prueben algunos de los clásicos de MSX, Spectrum, Amstrad CPC o los primeros PC. Con una mirada crítica se pueden sacar buenas ideas, temáticas, dinámicas que utilizando la tecnología moderna puede ser un buen punto de lanzamiento o avance de la carrera en el mundo de los videojuegos.

Otro enfoque es la copia o actualización de los grandes clásicos. Desde los años 80/90 algunos de los grandes clásicos de han clonado a nuevas plataformas mas moderas o nuevas en el mercado. Veamos algunos ejemplos:

La abadía del crimen es un videojuego realizado por Opera Soft en 1987, basado en la novela El nombre de la rosa de Umberto Eco, y diseñado por Paco Menéndez y portado a MSX, Spectrum, Amstrad CPC y PC. Unos años mas tarde apareció otra versión para PC ampliada aprovechando las mejoras del hardware pero siguiendo la misma estética y dinámicas que el original.











Abadia del crimen en versión ZX Spectrum.  













Abadia del crimen en versión MSX.  


Otro ejemplo de aquellos años podría ser el juego de puzzle y plataformas de Micro-gen de 1984 Pyjamarama; una aventura que consta de una serie de pantallas en las que encontraremos una serie de plataformas, deberemos esquivar los peligros que encontramos en las salas y recoger los objetos que nos encontremos en ellas. Es un juego difícil sin efectos de sonoros, colorido pero muy entretenido. Unos años mas tarde (2004) se hizo una versión para PC y Machintosh que es exactamente igual que el original de los años 80.













Pyjamarama de ZX Spectrum
(1984)











Pyjamarama de PC
(2004)


Ahora que esta de moda los juegos retro, veremos algún día juegos inspirados en estos clásicos portados para tabletas o teléfonos inteligentes? Yo creo que si.

El mundo Indie ante el espejo

El mundo de los juegos Indie es grande y complejo. El ambiente entre desabolladores en redes sociales es esplendida pero esto no nos debe hacer perder la realidad de vista. La competencia es feroz. En la plataforma Steam, en 2017, se publicaron 7000 juegos indie, 21 juegos cada día. Esto nos debería hacer reflexionar sobre la realidad de nuestros proyectos.



Supongo que todos los que nos dedicamos a esto antes de empezar el desarrollo de un juego buscamos la temática, hacemos un diseño, analizamos la competencia y planteamos los recursos disponibles y la viabilidad del proyecto. No hacerlo es un suicidio. Yo personalmente antes prefiero dedicar horas a pensar que tendrá mi juego de plataformas que no tengan los otros 10.000 juegos de plataformas que hay en mi tienda virtual favorita. 



Si analizamos los mejores juegos Indie o al menos los mas conocidos por el publico nos daremos cuenta que todos ellos tienen un punto fuerte que los hace resaltar sobre los demás. Todos estaremos de acuerdo que un juego excelente como Undertale no tiene unos gráficos envidiables, pero si una gran originalidad. Stardew Valley tiene gráficos pixelados pero el nivel de jugabilidad es amplísimo y tiene millones de jugadores en todo el mundo. Tener un documento de diseño (GDD) es muy importante, pero tener las ideas claras aun más. 

Todos tenemos aquel juego que llevamos en el corazón y querríamos programar, mejorar y actualizar.. y, si se puede, vivir de ello. Pero a veces ese componente emocional no nos hace ver la realidad. Busca siempre los elementos que hacen fuerte tu diseño, compáralos con la competencia, analiza sus resultados, captura sus pantallas, analiza los comentarios de las tiendas de compra,  escribe las conclusiones y entonces estarás preparado para tomar la decisión. Cunado has analizado los elementos externos es cunado podemos empezar a escribir el GDD, analizar los costes, etc.  

Para ayudar un poco he recopilado las páginas web que utilizo para estar al día de las novedades del mundo Indie en dos categorías: las páginas de información y las tiendas de compra.

Información

Compra


Aprendiendo de los errores: Simón

En febrero de 2017 publiqué en Google Play mi segunda aplicación para Android. Después de 4 meses de desarrollo estaba y aun lo estoy orgulloso del trabajo realizado. En el desarrollo había puesto en práctica todo lo aprendido en mi primer juego y tenia la esperanza en hacerme un hueco en la tienda. Un año y medio más tarde el juego tiene 7 descargas activas de las cuales 2 son mis dispositivos de trabajo y el resto mi familia. 

Algunos podríais pensar que hice un mal juego, malos gráficos o demasiado fácil o demasiado difícil, pero no, hice un mal diseño. En ese momento me dejé llevar por lo que quería hacer sin preocuparme demasiado en pensar en el público a quien iba dirigido o en el modelo de juego que estaba haciendo.

Después de pensar muchas horas en mis errores y leer algún que otro libro de diseño tengo mas o menos claro que no debería volver a hacer si pudiese rehacer el proyecto. Simon, color vs. color es un jugo casual, de partidas rápidas para jugar en cualquier lugar y cualquier momento.

Este tipo de juego debe tener un acceso rápido, reglas fáciles de entender y seguir, niveles de dificultad y recompensas para aumentar el porcentaje de retención. Como dice el late motiv, facil de jugar pero difícil de dominar

En el juego original, la primera vez que accedes a él te pregunta tu nombre, edad, país, en resumen demasiadas cosas. En su momento no utilicé Google Games, así que el tema de los rankings estaba programado a mano utilizando un base de datos en la nube y un archivo MySQL en el interior del juego. Una vez accedemos al juego la pantalla principal tiene demasiadas opciones. En todo caso la opción principal que debería ocupar más del 50% del espacio debería ser jugar y el resto de opciones deberían ser presentadas sutilmente. Tantas opciones en el menú principal sugieren complejidad, y eso es lo último de buscas en un juego casual. 



Una vez empiezas el juego, aun no empiezas a jugar, primero te expone las diferentes etapas y después de la primera etapa te propone el primer nivel. Está complejidad es innecesaria. El juego se inspira en el clásico juego Simón donde hay que repetir la secuencia de colores que te propone y la subdivisión en niveles y etapas no es necesario. Se propria entrar a jugar directamente donde cada vez te propone una color más y ver hasta donde el jugador es capaz de llegar.



Además en el mismo juego había 4 modalidades de juego que confundían al jugador ya que en el tercer nivel ya aparecían las diversas modalidades.
  • Modo secuencial (el clásico) 
  • Modo inverso (hay que marcar los colores en el sentido inverso al propuesto) 
  • Modo único (sólo te muestra el siguiente color y no toda la secuencia completa) 
  • Modo aleatorio (a cada nuevo color cambia los colores de los botos de posición)
Esta complejidad tendría un sentido útil si configurara los niveles de dificultada del juego. Un jugador que quiere jugar en el modo fácil seguramente sólo debería utilizar el modo secuencial y no seria en el modo de juego intermedio o difícil que  aparecerían los otros tipos de juego.

Otro error de diseño está en la terminación del nivel. En el juego hay dos pantallas que son mostradas al terminar un nivel. Una pantalla felicitándote por el logro conseguido y otra de error. Un juego siempre debiera mostrar la información en positivo. En caso de error.. porque el juego sólo puede desembocar en error ya que el único contrincante es el propio jugador debería reflejar el avance respecto él mismo... y animarle a superarse a si mismo.



Además el juego plateaba un modo de juego multijugador. Para el diseño de este modo utilicé el protocolo MQTT que permite suscribir una aplicación o un dispositivo a un servidor de datos que todos los subscritos comparten. El problema es que este sistema requiere una código único entre los dos jugadores, con lo que jugar en  modo multijugador no es pulsar un botón y jugar... sino que requiere un proceso entre los dos jugadores que elimina esta de modalidad a todo un segmento de jugadores que quieren hacer partidas rápidas para superarse a si mismo o a sus amigos. 

Como os podéis suponer programar el modo multiplicador fue complejo y me llevó muchas horas de trabajo... pero seguramente nunca ningún jugador ha utilizado esta opción del juego.

Además en el modo multijugador los jugadores podían utilizar escudos para ayudarse en la secuencia, atacar al otro jugador con propuestas de modos difíciles. Esto para un juego de PC podría estar bien, pero para un juego casual es del todo innecesario. 

Un planteamiento nuevo del juego podría funcionar, con un modo directo de juego, partidas rápidas, modo de ayuda (comodines) si no te acuerdas de algún color de la secuencia, puntos por rapidez y numero de colores pulsados y un ranking en Google Games. En juegos como este donde desmotivarse es fácil es muy importante el sistema de recompensas para ayudar al jugador cuando ya no puede mas.. permitiendole "comprar" comodines con la visualización de un anuncio o con regalos a modo fidelización si entra varias veces en el juego.

Seguramente hacer un juego así, con mas efectos visuales, simple, de acceso rápido, con elementos de fidelización, siempre en positivo motivando al jugador a superarse y a superar a otros jugadores seria mucho más fácil de programar y tendría más éxito. 

Este será mi próximo proyecto, veremos los resultados.


IndieGames: Unsung Warriors

Unsung Warriors
"Unsung Warriors es un juego de acción y aventura 2D ambientado en la Europa de la Edad de Hierro. Lucha contra enemigos y trampas mientras exploras los secretos de una antigua cripta."


Actualmente en fase beta y con una demo en Internet nos encontramos con un juego de plataformas desarrollado en Unity donde se han cuidado todos los detalles para crear un producto solido y profesional. Como podéis ver en el vídeo del gameplay los aspectos gráficos están muy cuidados y la jugabilidad bien equilibrada. El juego dispone de dos modos de juego, uno para un solo jugador y parar dos jugadores para compartir el juego con un amigo. 



A nivel de juego, está a nivel para poder ser distribuido en varias plataformas ya que el nivel de equilibrio y calidad son altos. Este juego ha sido desarrollado por Mikel Fick y Ramon van Schaik que conforman el equipo de Osarion y Mountaineer.

Elementos destacados del juego

  • Modo cooperativo de un jugador 
  • Explora un hermoso mundo artesanal en 2D 
  • Batalla contra enemigos feroces 
  • Equipa diferentes tipos de armas y artículos 
  • Compra o vende equipamiento en una tienda (no compras en la aplicación) 
  • Descubre varias áreas secretas 
  • Desafiantes batallas contra jefes 
  • Usa tus habilidades y reflejos para sobrevivir 
  • Soporte para teclado, pantalla táctil y controlador (ruido incluido) 
  • Múltiples terminaciones (en la versión final del prólogo) 

Ficha técnica

Nombre: Unsung Warriors
DesarrolladorOsarion y Mountaineer.
Fecha de lanzamiento: 18 de setiembre de 2018
Disponible en: Itch.io
Plataformas: Windows, Mac OSX, Linux
Género: Plataformas 2D
Página web desarollador: http://osarion.com/http://mountsoft.nl/
Redes sociales: DiscordTwitterPinterest


IndieGames: Back to bed

Back to bed
"Back to Bed logra ser simultáneamente predecible y sorprendente, soñoliento y animado, aterrador y reconfortante -Como cualquier buena pieza de arte surrealista"


Back to Bed es un juego artístico de rompecabezas 3D con un toque surrealista. Cuenta la historia de Bob, un hombre que tiene una tendencia a quedarse dormido en su oficina aburrida y luego a entrar en sonámbulos en los peligros de la gran ciudad. Afortunadamente, Bob tiene un guardia subconsciente llamado Subob, que surge de la mente de Bob y cuyo trabajo es proteger al sonámbulo de cualquier peligro y guiarlo de regreso a la seguridad de su cama.

Inspirado en el mundo de Salvador Dalí y René Magritte este juego pausado nos propone un conjunto de puzzles para llevar a Bod a su cama. En el juego la estética es importante, así como la capacidad de movimientos de Subob que mas allá de sus funciones se integra en el cuadro surrealista con movimientos imposibles que forman parte del gameplay.



Aunque actualmente podemos encontrar similitudes entre este juego y muchos otros juegos de puzzle como Monument Valley (2014) conforman un tipo de juego que van más allá de la jugabilidad ya que incorporan el arte como elemento transmisor del juego como fuente de inspiración de sus niveles con un elegante, delicioso y relajante mundo por descubrir. Puedes seguir el desarrollo del juego mirando el Artbook del juego con los bocetos originales y los diseños de los niveles y personajes. 

Ficha técnica

Nombre: Back to bed
Desarrollador: Bedtime Digital Games
Fecha de lanzamiento: 6 de agosto de 2014
Disponible en: SteamHumble, Itch.io
Plataformas: Windows, Mac OSX, Linux, Android, iOS
Género: Puzzle
Página web desarollador: https://www.bedtime.io/
Redes sociales: Discord, Facebook, Twitter, Instagram

Unity Assets: XML Localization

Uno de las cosa más importantes cunado se realizan juegos es tener en cuenta el factor de localización. Un factor de retención y adquisición de usuarios se basas en hacer que el juego esté en el idioma del jugador. La localización es un factor que es clave diseñar al principio del proyecto y en todo caso tener un sistema abierto para que la adición de nuevos idiomas sea un proceso mas o menos automático.

Para mis aplicaciones en Unity utilizo XML Localization, un asset de la tienda oficial que permite generar un archivo xml que contenga todas sus cadenas e imágenes dependientes del idioma directamente en la carpeta, luego sólo hay que agregar un prefab a su escena. Los elementos de UI Text y UI Image que contienen un nombre de cadena cambiarán su contenido al idioma apropiado.



Las cadenas e imágenes también son accesibles desde el código. Puede preestablecer un idioma para mostrar o usar la detección automática del idioma del sistema en el dispositivo que está ejecutando su reproductor. Además el cambio en el lenguaje de tiempo de ejecución también es posible. Podéis ver el vídeo adjuntado como demo del uso del asset en Unity 2018.

IndieGames: Wayward

Wayward
"Wayward es un desafiante roguelike de supervivencia basado en turnos. Explora, construye y, lo más importante, sobrevive en estas tierras implacables."


Con este late motiv se autodescribe la producción indie Wayward. Este juego indie creado en 2016 por Vaughn "Drathy" Royko, Gary "Spacetech" Wilber, Mackenzie "Yuudaari" McClane, Dusty "Goaticide" Melling, Austin Dhillon y Frank "Sassafrass" Sasto que ya tiene un recorrido importante en el mundo indie.


Ficha técnica

Nombre: Wayward
Desarrollador: Unlok
Fecha de lanzamiento: 22 de abril de 2016
Disponible en: Steam, Humble
Plataformas: Windows, Mac OSX, Linux, HTML
Género: Roguelike
Página web: www.waywardgame.com
Página web desarollador: www.unlok.ca
Redes sociales: Discord, Facebook, Twitter, Reddit


En Wayward, el principal enfoque está la simulación y la supervivencia. No hay clases; no hay niveles. La progresión de tu personaje depende de las habilidades individuales y las ganancias de las estadísticas por tus interacciones con objetos u objetos en el mundo. Eres libre de jugar y explorar el juego de la forma que desees.

Wayward continuará creciendo, expandiéndose y evolucionando con el tiempo para abrir nuevos modos de juego, agregar profundidad y complejidad, agregar contenido y refinar aún más los sistemas presentados. 


 Características


  • 5 tipos de ambiente distintos para explorar, todos generados procedimentalmente.
  • Más de 400 elementos para crear, descubrir e interactuar.
  • Más de 30 criaturas y animales para combatir y cosechar.
  • Mecánica del juego Sandbox combinada con un juego de estilo Roguelike y una gran gestión de inventario.
  • Sistema de habilidades profundo y multifacético con más de 25 habilidades.
  • Juego abierto y de mundo abierto. Modo multijugador en línea con modo PVP opcional.
  • Sistema diurno y nocturno.
  • Soporte de Modding y Steam Workshop.
  • Juega en modos por turnos (predeterminado) o en tiempo real. 
  • Personalización de personaje. 
  • Sistema dinámico de reputación y dificultad.

Referencias


AssetForge: 3D modeling studio

AssetForge es una herramienta para Windows, Mac i Linux creada y diseñada por Kenney (ケニー) que permite crear assets a partir de bloques simples como primitivas de dibujo. Esta herramienta puede ser de gran utilidad para aquellos que queremos hacer nuestros propios diseños para nuestros juegos pero no tenemos las habilidades o el tiempo para trabajar con programas de diseño de elementos 3D o 2D.





Además con AssetForge puedes exportar tus trabajos como sprites 2D o como objetos 3D para luego utilizarlos en el game engine que prefieras. Actualmente tiene una comunidad bastante activa y además de los bloques que vienen por defecto en la aplicación puedes descargarte otros bloques realizados por el mismo desarrollador así como usuarios que los comparten parar la comunidad.

Aunque sea una herramienta de pago (Assetforge: 19.95$ USD, AssetForge Deluxe: 39.95$ USD), sin duda es una de las mejores inversiones que se pueden realizar parar crear escenarios y objetos sin tener unos conocimientos en diseño de objetos 3D. En el siguiente vídeo podéis ver las principales características de la herramienta así como el proceso de inserción de bloques adicionales, diseño de escenarios y exportación a Unity.



Página webAssetForge
Twitter: @KenneyNL

Assets Stores

Uno de los problemas principales de todo desarrollador es la creación de los assets (sprites, UI, música, etc.) que se necesita para crear un juego. Una de las opciones es crearte tu mismo los elementos que necesites y otra comprar elementos de las diferentes tiendas donde puedes comprar los assets que necesites.


En Internet puedes encontrar plataforma donde comprar o descargar gratuitamente assets de todo tipo para tus aplicaciones. En entradas anteriores ya me he referido a alguna de estas páginas web de referencia, pero he decidido hacer una entrada con todas los espacios mas relevantes parar tenerlos todos en un mismo lugar. 

En estas páginas encontrareis todo tipo de assets (de pago, gratuitos) donde tanto como comprador o como vendedor puedes publicar o descargar las herramientas y recursos que encuentres más interesantes. 




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...