El negocio de los juegos para móviles (Parte 2)

Como ya vimos en la primera parte del artículo el diseño y la promoción de un juego son la clave del éxito.

Conseguir que una juego triunfe no sólo depende de la jugabilidad del juego, su diseño, sus funciones, ... Además si queremos que rentabilizar el coste en tiempo y dinero de su creación debemos tener en cuenta cuestiones que quizá nunca te habrías planteado.



Si utilizamos un sistema de monetización por anuncios debemos saber que no todos los anuncios se pagan del mismo modo, dependiendo de la temática, el país de visualización, el tipo de anuncio. 

Por lo cual las ganancias de un juego dependen de que estrategia de despliegue hayamos definido así como de los anuncios y del tipo de anuncios que hayamos implementado en nuestro juego. No es lo mismo 100 usuarios activos en Estados Unidos que 100 en España ya que las ganancias potenciales en un país u otro son muy distintas. 

Para ello debemos tener en cuenta cuando distribuimos nuestra aplicación, creamos campañas para la obtención de instalaciones, nos implicamos en redes sociales para promocionar nuestro juego donde ponemos el esfuerzo y la energía. 

Pero vayamos poco a poco y empecemos por el principio. 


1.- Temática de la aplicación

Siempre se dice que el negocio de los jugos móviles es un negocio de volumen, pero erramos a la hora de pensar que el volumen se refiere al volumen de descargas. 

Para pequeñas empresas de juegos o desarrolladores indies es muy difícil ir por volúmenes brutales de descargas, sino que es mas fácil ir a los nichos que mejor pagados están en AdMob, que vendría a ser el modelo que se utiliza en la web de “voy a montar un nicho de algo super especifico que sé que no me va a dar mucho volumen de visitas o de tráfico, pero sé que está muy bien pagado ese tráfico”. 

Entonces sí, se pueden montar nichos, micro-nichos y macro-nichos en forma de app y a nivel de rentabilidad se puede decir que son bastante más rentables que las webs.

Por ejemplo Unity definie 8 grandes nichos de mercado en el mundo de los juegos:
  1. 2D Action, arcade, Rhythm, Time management, Fighting
  2. 2D Adventure, RPG, RTS Strategy
  3. 2D Card, Board, Dice, Puzzle, Trivia, Hidden object
  4. 2D platfform
  5. FPS, Sandbox, Open world, (MMO)RPG, Strategy
  6. Hyper casual, Instant
  7. Platform, Adventure
  8. Sports, Racing, Simulation, Arcade
Pero dentro de cada segmento hay nichos, micro nichos que son mejor remunerados que otros. Por lo tanto esta claro que conocer las demandas del mercado y cuales son de ellos los mas bien pagados influirá decisivamente en los beneficios obtenidos. Son apps para las que es muy complicado conseguir volumen de descargas, pero con poco volumen haces una buena suma de dinero.


2.- Los anuncios

Basicamente consiste en ofrecer la juego gratis y monetizarlo mediante publicidad en la App tanto de otras Apps como de cualquier otro tipo de producto o servicio que tenga que ver lógicamente con el motivo para el que se creó la App.



In App Purchase Freemium
Consiste en ofrecer la App gratis y luego cobrar por ciertos servicios, nuevas funciones y niveles (juegos), versión Premium… dentro de la App. Es la estrategia más usada ahora y se puede dividir en distintos tipos según las limitaciones que se impongan para la misma: 



  • In App Purchase por contenido (ofrecer contenido extra con el que no cuenta la versión gratuita) 
  • In App Purchase por funcionalidad (ofrecer nuevas funciones que no tiene la versión gratuita) 
  • In App Purchase por servicio (ofrecer nuevos servicios con los que no contaba la versión gratuita) 
  • In App Purchase por suscripción (es raro de ver, suele darse en apps de revistas especializadas para profesionales y cosas así, ya que conlleva un coste periódico a los usuarios y eso es algo poco frecuente a día de hoy, que todo el mundo quiere descargarse todo gratis). 

Apps Patrocinadas
Consiste en vender tu App a una empresa (es decir prever las necesidades de una empresa que va a desarrollar una campaña publicitaria y venderles la App) o crear una App patrocinada por encargo. Rara es la ocasión en que coincide la función de tu aplicación con las necesidades y especificaciones de una empresa que va hacer promoción de sus productos y/o servicios a través de una App (aunque quién sabe, siempre puede darse el caso).


Gestión de Bases de Datos
Una buena gestión de bases de datos (monetización directa e indirecta de los datos obtenidos con la App), puede suponer oportunidades de mejora en la App, de inversión, de venta de los estudios, mediciones y análisis que lleves a cabo (cuando tengas un cierto volumen de usuarios).


Premium o de Pago
El usuario paga un importe determinado por descargar la App. Es la fuente de ingresos más directa para monetizar tu App, pero cada vez está más en desuso, ya que la mayoría de usuarios prefieren descargar una App de forma gratuita que pagando, salvo que éste les ofrezca alguna ventaja diferencial que haga que les merezca la pena el desembolso. Este tipo de App se suele dar más para iOS que para Android, ya que los usuarios del primer sistema operativo, están más acostumbrados a pagar por las App.


Estas distintivas estrategias son la forma de monetización del mismo, ya que por esta vía se pueden conseguir distintas fuentes de ingresos y además son formas de publicidad muy específicas para App que se deben conocer para promocionarla. Por ello a continuación presento los dos tipos básicos de publicidad In App para monetizar y promocionar proyectos App:

Banner Ad
Funcionan mediante el sistema coste por clic y conversión, por impresión o por tarifa plana (cobros recurrentes durante un periodo de tiempo concreto). Su característica principal es que cupan un pequeño espacio dentro de la App. Esto se puede ver como un aspecto positivo, puesto que no interrumpe completamente la experiencia de usuario (UX), pero también tiene su parte negativa. Al ser de un tamaño reducido y visualizarse desde dispositivos móviles (que ya de por sí tienen pantallas bastante pequeñas) se verán peor que otros formatos de anuncio.

Interstitial Ad o Anuncios Modales
Este tipo de anuncio para App utiliza los mismos formatos de monetización que los Banner Ad. Su característica fundamental es que ocupan la pantalla del dispositivo completamente (son más rentables y causan un mayor impacto, pero molestan más al usuario).

Dentro de estos tipos de anuncios podemos destacar la siguiente estrategia de monetización de tu App:
  • La monetización por Afiliación por venta de productos de otras empresas desde tu App con enlaces desde los banners, aunque también se puede crear una App para tu e-commerce o una guía o directorio dentro de la aplicación con la función de ofrecer productos de otras empresas y venderlos actuando como intermediario.
  • También decir, que estos anuncios pueden ser nativos. Los anuncios nativos In App se integran con el contenido y el contexto para el que fue creada la App con el objetivo de crear una mejor y más satisfactoria experiencia de usuario (UX) sin interrupciones ni contratiempos molestos para el usuario. Esto se consigue, combinando los anuncios entre los contenidos que se muestran en la App (siempre informado de que es publicidad). De esta forma, no se interrumpe el uso ni la experiencia del usuario. Este tipo de anuncio es usado por las redes sociales. Ejemplos de ello es Facebook y Twitter.


3.- Despliegue de la aplicación

Una vez el juego terminado debemos decidir donde vamos a publicarlo y si queremos introducir publicidad de quien va ser esta. La tienda más conocida en Android es Google Play, pero ya hemos comentado en otros artículos hay muchas otras. Así miso pasa con la publicidad. AdMob es el servicio de publicidad para aplicaciones móviles de Google y también la mas conocida en el mercado occidental.

Por ejemplo si queremos entrar en el mercado chino, debemos pensar seriamente publicar nuestra aplicación en tiendas específicas de ese país ya que Google Play casi no tiene cuota de mercado. Así mismo pasa con la publicidad. Hay playaformas sobre temáticas específicas donde seguramente el CPC (coste por click) es mucho mejor que en la plataforma de Google o incluso dependiendo del mercado que queremos profundizar.


4.- La visibilidad

El objetivo final de cualquier equipo de desarrollo de aplicaciones es aumentar las ventas y aumentar las descargas de sus productos. Para llegar a esta etapa, una aplicación debe tener una alta visibilidad en la tienda de aplicaciones, que atraiga a miles de usuarios nuevos, quienes encontrarán la aplicación más fácil cuando estén en la parte superior de la lista.

¿Y cuáles son los rankings de tu aplicación? Si su aplicación aún no está en la parte superior de la lista, puedes recurrir a ayuda de empresas externas para generar la visibilidad y los beneficios deseados. 

Puedes utilizar las redes sociales para dar a conocer tu aplicación o utilizar influencers que hagan ese trabajo por ti. 

Otra opción es comprar publicidad para nuestra propia aplicación en los diferentes modelos que podemos encontrar (CPI, CPC...) y crear una campaña para que Google o cualquier otra empresa promocione nuestro juego dentro de su red de influencia.

El problema de estos sistemas es sin duda el coste. A veces es tan importante hacer buenos juegos como cuidar y aplicar nuestra base social en las redes ya que nos serán de gran ayuda para dar a conocer nuestros juegos.

Glosario


1. CPC – Cost Per Click
Incent CPC campaigns charge per rewarded click, prompting users to install your app to receive their rewards. CPC campaign has the lowest cost but you need to know that the expected installation rate varies usually around 40% - 80%. Because you pay for click not for install. 

CPC campaign is an efficient and often used method but keep in mind to consider “accidental” clicks, too. It will happen more often for this kind of mobile media pricing.


2. CPI – Cost Per Install
This model of mobile media pricing is special for mobile apps where you only pay for completed installs. This type of advertising is a proven tool for generating a lot of installs in a short time and the most cost efficient one.


But the problem is: Users might only install your app to get the reward and not interact with it at all and can uninstall your app on the first day. So, you can use High Retention campaigns that require users to keep your app for 3 days. Such campaigns have more value in Google Play Store rating.


Search (or Keyword) CPI campaign is a method of advertising on Google Play search engine using keyword research. Keyword installs are very important because about 65% downloads are result of simple app store searches. You need to find best keywords for your app to use in organic searches.

3. CPA – Cost Per Action
The publisher only rewards the user if he fulfills specific predefined actions. For the mobile advertising industry, this pricing type is more commonly used for setting actions like completing a tutorial, reaching a certain level, registering an account or subscribing for a newsletter. The defined paid action for this type of mobile media pricing can be as specific as needed.

Project manager: De Noob a Rookie

Ayer en la IndieDevDay 2018 tuvimos el placer de escuchar desde la cercanía los consejos y vivencias de Albert Espinosa (@DeveloBert) de la empresa Impressive Entertainment donde nos habló de su experiencia sobre el rol del Project Manager en una pequeña empresa Indie de videojuegos.

En su charla nos hablo de la comunicación del equipo de trabajo, el análisis de los proyectos, las dinámicas de grupo, la importancia de los plazos y lo importante que la flexibilidad, los roles del equipo y la importancia de la asunción de responsabilidades.



Como comentó Albert Espinosa la base de que un equipo funcione es la comunicación que te permite tener clara la realidad del equipo de trabajo, sus fortalezas, sus debilidades, la situación actual en reuniones de máximo 10 minutos diarios para que todo el equipo tenga constancia del estado del proyecto... la importancia de tener visiones diferentes de la realidad con personas que dudan y se cuestionan las decisiones pero que respetan los éxitos y fracasos como logros o debilidades del grupo y no individuales.

  • Objetivos reales (corto plazo)
  • Definir prioridades
  • Conocer nuestros tiempos

Nos habló de lo importante que es analizar la realidad de los proyectos que nos proponemos, ser capaces de hacer un grafo DAFO de un proyecto. Proponerse objetivos a largo, medio y corto plazo y lo importante que es apreciar la evolución de los proyectos. Saber escuchar y saber diferenciar lo que es urgente y lo que es importante.


Sin duda una charla productiva que aunque en muchos conceptos sean obvios, es importante que se digan en público para que alguna vez todos aquellos que tienen el rol de Project Manager oigan en en voz alta.

Crack Egg, el mejor clicker del mundo

Durante estas semanas junto a NicoleAina Games hemos desarrollado un clicker para Android con un claro objetivo formativo. Durante las ultimas entradas del bloc he desgranado elemento a elemento todas las fases de diseño y de programación de la forma más amena posible para orientar a todos los que empiezan sobre como se debe desarrollar un juego para móviles aunque este sea sencillo.


Este artículo sólo tiene el objetivo de indexar todas las entradas para poder seguir el desarrollo de esta juego para móviles desde el inicio hasta su publicación. Sólo te pedimos que si lo has encontrado interesante, pruébalo, compártelo y déjanos una buena valoración en la tienda de aplicaciones

Muchas Gracias.

Enlace de descarga



Artículos relacionados:
  1. Monetarización de aplicaciones móviles: The Egg, Tamago y Tap The Easter Egg!
  2. Prototipo de juegos móviles en Unity 2018 (Parte 1)
  3. Prototipo de juegos móviles en Unity 2018 (Parte 2)
  4. Trabajando en equipo con Unity (opcional)
  5. Crack Egg, como hacer juegos móviles (Parte 1)
  6. Crack Egg, como hacer juegos móviles (Parte 2)
  7. Como configurar Unity para publicar en Google Play
  8. Criterios publicitarios de Google

Criterios publicitarios de Google

Google es muy estricto en cuanto a la publicidad que ponemos en nuestros juegos para monetizarlos. No es la primera vez que Google Play Console bloquea momentáneamente una aplicación por infringir sus criterios de publicidad. 


Normalmente las limitaciones y las normas de buena conducta son lógicas y las dicta el sentido común para no crear juegos con publicidad engañosa. Google lo define así:
  • Obtener ingresos a través de la pantalla de bloqueo
  • Anuncios perturbadores
  • Interferir en aplicaciones, anuncios de terceros o funciones del dispositivo
  • Anuncios inadecuados
  • Uso de Id de publicidad de Android

Por ejemplo: 
Los anuncios no deben mostrarse de forma que den lugar a clics involuntarios. Está prohibido obligar al usuario a que haga clic en anuncios o envíe información personal con fines publicitarios para utilizar una aplicación de forma completa. 
Los anuncios intersticiales solo se pueden mostrar dentro de la aplicación que los publica. Si tu aplicación muestra anuncios intersticiales u otros anuncios que interfieran en el uso normal, deben ser fáciles de ignorar sin sufrir penalizaciones.


Pero a veces el criterio es mas ambiguo y lo que nosotros creemos correcto puede ser penalizado por Google y deberemos publicar una nueva versión con los cambios requeridos. Esto es exactamente lo que ha pasado con Crack Egg. En la pantalla de herramientas había  botones para a través de un video reward obtener monedas a cambio de ver un vídeo publicitario. 



En principio el concepto es correcto, pero Google considera que al no haber ninguna indicación puede confundir al usuario. Después de presentar dos propuestas a Google, se ha aceptado la versión definitiva. Incluso en las verificaciones, en este caso, se ha comprobado que si la recompensa por la visualización del vídeo eran 12,000 monedas, esta se cumplía escrupulosamente.



Esta claro que Google se toma la publicidad muy en serio y nosotros como desarolladores de contenido  debemos vigilar en entender los criterios de la tienda implicada, ya que sino podemos ser expulsados y perder todas nuestras ganancias.

Como configurar Unity para publicar en Google Play

Una vez terminado el juego móvil querremos publicarlo en alguna de las tiendas de aplicaciones del mercado. En este artículo os presentaré los pasos previos que hay que hacer con Unity para generar nuestra aplicación para Android y después publicarla en Google Play. El ejemplo está basado en Google Play pero una vez tenemos el archivo APK podemos publicarla en cualquier tienda de aplicaciones móviles para Android que hay en Internet.



Tiendas de aplicaciones Android:


Mundo
China


Cada una de ellas establece sus requisitos, pero es importante que nuestra juego pueda llegar al máximo público posible, así que es bueno dedicar el tiempo necesario para maximizar la distribución del juego en diferentes mercados.

Crack Egg, como hacer juegos móviles (Parte 2)

En la primera parte de este artículo vimos los pasos básicos para la implementación de un clicker utilizando las herramientas más comunes que comparten muchos de los juegos casual que podemos realizar para dispositivos móviles.

En esta segunda parte del artículo vamos a presentar todas aquellas características que tienen los juegos y que le dan un aspecto más acabado. Para ello tendremos que implementar los efectos, imágenes, efectos sonoros, diferentes escenas de apoyo, los menús de opciones y demás características que queremos darle al juego.


En primer lugar queremos definir el espacio de diseño del juego, teniendo en cuenta que habrá que dejar espacio para la posterior inserción de publicidad sin que esta repercuta en el aspecto del juego. Para darle más opciones al juego tenemos diseñado 3 opciones adicionales que permiten dar profundidad al gameplay.

  • Objetos que afectan al proceso del clicker.
  • Cambio del skin del huevo para adaptarlo al gusto del jugador.
  • Exposición de las criaturas que han aparecido en los diferentes huevos.

Estas opciones están implementadas en la misma escena principal a través de una pantalla lateral que se desliza de derecha a izquierda a través de una animación. Sólo la escena final de la apertura del huevo y la aparición de la criatura forman parte de escenas adicionales. Todas las imágenes se han creado a partir de imágenes con licencia de la librería FreePik.

En el vídeo podéis ver como se han implementado estas funciones y que elementos básicos se han utilizado para su creación.



Las funciones más interesantes del juego y que pueden ser de utilidad para juegos genéricos son aquellas que podremos reutilizar.

Acceso a GameObjects no visibles
   //Encontrar un GameObject aunque este enable(false)  
   public static GameObject FindObject(this GameObject parent, string name)  
   {  
     Transform[] trs = parent.GetComponentsInChildren<Transform>(true);  
     foreach (Transform t in trs)  
     {  
       if (t.name == name)  
       {  
         return t.gameObject;  
       }  
     }  
     return null;  
   }  

Obtención de las medidas de un sprite
 //Get and adjust sprite size  
       Sprite spriteEgg = eggSkin.GetComponent<Image>().sprite;  
       Vector3 itemSize = spriteEgg.bounds.size;  
       float pixelsPerUnit = spriteEgg.pixelsPerUnit;  
       itemSize.y *= pixelsPerUnit;  
       itemSize.x *= pixelsPerUnit;  
       //Egg rescale if its too big  
       if (itemSize.y > 600f)  
       {  
         Vector3 newScale = new Vector3(0.34f, 0.40f, 0f);  
         Vector3 hatScale = new Vector3(1.4f, 1.23f, 0f);  
         Egg.transform.localScale = newScale;  
         Hat.transform.localScale = hatScale;  
       }  


Easy Mobile: Monetización con Unity

Cuando diseñamos un juego móvil con la intención de monetizarlo y obtener unos ingresos hay que tener en cuenta elementos de diseño así como tener las herramientas para implementar la campaña publicitaria en nuestra aplicación.



En la Unity AsseStore hay varios  productos que nos permiten gestionar de una manera fácil los servicios externos que nos permiten socializar nuestro juego. Hay algunos que sólo permiten gestionar los anuncios otros que además permiten utilizar los servicios de juegos de Google Play, las recompensas, guardar configuraciones en la nube, etc.



Easy Mobile es uno de los productos mas completos para Unity y permite tener una gestión completa de los servicios en la nube tanto para iOS y para Android. 

Para utilizar la parte de Advertising (anuncios) en primer lugar debemos decidir que plataforma queremos utilizar para crear nuestra campaña publicitaria. En el mercado existen muchas plataformas diferentes, con tipos de anuncios diferentes, enfocados a diferentes mercados o a tipos específicos de aplicaciones. Los mas usuales son:


donde cada una puede mostrar determinados tipos de anuncios. Otro aspecto a tener en cuenta es la rentabilidad de cada red. No todas las redes pagan igual por cada clic (CPC) ni por la muestra de cada mil anuncios (RPM). Algunas redes se han especializado en mercados específicos (USA, China, Korea, el mundo) o tipos de aplicaciones específicas (juegos, gestión, ...). Dependiendo a que mercado queramos acceder o gestionar podemos utilizar unas o otras redes.

En nuestro ejemplo voy a utilizar AdMob, la red publicitaria de Google, que permite crear campañas genéricas para aplicaciones de una manera fácil. En primer lugar necesitamos registrarnos a AdMob a través de nuestra cuenta google y definir una nueva aplicación con Admob. A partir de aquí podemos crear bloques de anuncios parametrizables. Cada vez que creamos un bloque de anuncio Admod nos crea un identificador del anuncio (ID) que tiene este formato: 

ca-app-pub-3940256099942544/6300978111

Este ID será el que utilizaremos para referenciar en nuestro proyecto de Unity nuestro bloque de anuncio y así indicar a google que anuncio debe mostrar en nuestra aplicación.

Easy Mobile simplifica mucho el trabajo de crear este enlace y aporta multitud de opciones para ajustar los anuncios a nuestras necesidades.


Así mismo la manea más fácil de manejar los anuncios en Unity es la llamada y visualización a través de código:

Inicialización
   void Awake()  
   {  
     if (!RuntimeManager.IsInitialized())  
       RuntimeManager.Init();  
   }  

Banner
     //Load Ad Banner;  
     Advertising.ShowBannerAd(BannerAdPosition.Bottom);  

Interticial
       //Ad Insterticial  
       Advertising.LoadInterstitialAd();  
       bool isReady = Advertising.IsInterstitialAdReady();  
       if (isReady)  
       {  
         Advertising.ShowInterstitialAd();  
       }  
       Advertising.LoadInterstitialAd();  

Vídeo reward
   void OnEnable()  
   {  
     Advertising.RewardedAdCompleted += RewardedAdCompletedHandler;  
     Advertising.RewardedAdSkipped += RewardedAdSkippedHandler;  
   }  
   private void Start()  
   {  
     fileName = Path.Combine(Application.persistentDataPath, "data");  
     fileName = Path.Combine(fileName, configFileName + ".txt");  
   }  
   // Unsubscribe events  
   void OnDisable()  
   {  
     Advertising.RewardedAdCompleted -= RewardedAdCompletedHandler;  
     Advertising.RewardedAdSkipped -= RewardedAdSkippedHandler;  
   }  
   // Event handler called when a rewarded ad has completed  
   void RewardedAdCompletedHandler(RewardedAdNetwork network, AdPlacement location)  
   {  
     Debug.Log("Rewarded ad has completed. The user should be rewarded now.");  
      // Action...  
   }  
   // Event handler called when a rewarded ad has been skipped  
   void RewardedAdSkippedHandler(RewardedAdNetwork network, AdPlacement location)  
   {  
     Debug.Log("Rewarded ad was skipped. The user should NOT be rewarded.");  
   }  
   public void RewardVideo()  
   {  
     bool isReady = Advertising.IsRewardedAdReady();  
     if (isReady)  
     {  
       Advertising.ShowRewardedAd();  
     }  
   }  

Crack Egg, como hacer juegos móviles (Parte 1)

Crack Egg es un proyecto personal junto mi colega de NicolAina Games que pretende ser un ejemplo real de un juego a partir de la base de proyecto que presente en los dos artículos anteriores sobre "Prototipo de juegos móviles en Unity 2018 (Parte 1)" y "Prototipo de juegos móviles en Unity 2018 (Parte 2)". 


El juego se basa en el juego para móviles The Egg, juego analizado en el articulo anterior. Un juego fácil de diseñar y programar pero que permite exponer las bases de los elementos de los juegos casual que podemos encontrar en las tiendas de aplicaciones. 

En este primera parte explicaré la gestión del fichero de configuración, el sistema de detección de clicks sobre sprites en la escena, la gestión de la carpeta resources, efectos fáciles sobre sprites. 

Desde un principio no he pretendido hacer un tutorial sobre un juego en concreto sino mas bien una exposición de los procesos genéricos que tienen estos tipo de juegos. Muchas veces es mejor conocer mejor la base de estos procesos que después te permitirán ganar tiempo en este tipo de aplicaciones que conocer al detalle como hacer un juego tipo The Egg o cualquier otro donde podemos encontrar centenares de tutoriales en Youtube que nos pueden ayudar.




Al cargar la escena del título. debemos cargar y almacenar en nuestra clase serializada los datos de la configuración del juego.

 using UnityEngine;  
 using System.IO;  
 public class LoadConfig : MonoBehaviour {  
   public string configFileName;  
   private string fileName;  
      // Use this for initialization  
      void Awake ()  
   {  
     fileName = Path.Combine(Application.persistentDataPath, "data");  
     fileName = Path.Combine(fileName, configFileName + ".txt");  
     if (!File.Exists(fileName))  
     {  
       PlayerInfo saveData = new PlayerInfo();  
       saveData.eggType = 0;  
       saveData.eggClicks = 0;  
       //Save data from PlayerInfo to a file named players  
       DataSaver.saveData(saveData, configFileName);  
       GlobalInfo.gameFirstTime = true;  
     } else  
     {  
       PlayerInfo loadedData = DataSaver.loadData<PlayerInfo>(configFileName);  
       if (loadedData == null)  
       {  
         return;  
       }  
       //Display loaded Data  
       Debug.Log("Egg num: " + loadedData.eggType);  
       Debug.Log("Egg clicks: " + loadedData.eggClicks);  
       GlobalInfo.gameFirstTime = false;  
     }  
   }  

Por lo tanto cuando cargamos la escena principal debemos cargar la información del fichero de configuración y establecer los elementos del la escena en funciona de los datos del juego.

GameManager.cs
 using UnityEngine;  
 using UnityEngine.UI;  
 using System.IO;  
 public class GameManager : MonoBehaviour {  
   public string configFileName;  
   public Text TextEggClicks;  
   public SpriteRenderer spriteEgg;  
   private string fileName;  
   private string spriteNames = "Egg";  
   private Sprite[] sprites;  
   // Use this for initialization  
   void Start ()  
   {  
     fileName = Path.Combine(Application.persistentDataPath, "data");  
     fileName = Path.Combine(fileName, configFileName + ".txt");  
     sprites = Resources.LoadAll<Sprite>(spriteNames);  
     float eggsCount = sprites.Length;  
     Debug.Log(eggsCount);  
     int eggSelect = 0;  
     if (GlobalInfo.gameFirstTime == true)  
     {  
       if (File.Exists(fileName))  
       {  
         //Choose and init random egg  
         PlayerInfo saveData = new PlayerInfo();  
         saveData.eggType = Mathf.RoundToInt(Random.Range(0f, eggsCount - 1));  
         eggSelect = saveData.eggType;  
         saveData.eggClicks = 999999;  
         //Save data from PlayerInfo to a file named players  
         DataSaver.saveData(saveData, configFileName);  
         //Update egg information  
         TextEggClicks.text = saveData.eggClicks.ToString("#,#");  
       }  
     } else  
     {  
       if (File.Exists(fileName))  
       {  
         //Load information  
         PlayerInfo loadedData = DataSaver.loadData<PlayerInfo>(configFileName);  
         //Update egg information  
         TextEggClicks.text = loadedData.eggClicks.ToString("#,#");  
         eggSelect = loadedData.eggType;  
       }  
     }  
     Debug.Log(eggSelect);  
     spriteEgg.sprite = sprites[eggSelect];  
     GlobalInfo.shakeEnabled = true;  
   }  
      // Update is called once per frame  
      void Update ()  
   {  
      }  
 }  

Así mismo el ClickManager nos permite saber si hemos pulsado sobre algún elemento de la escena utilizando Raycast y detectando si ha colisionado con algún elemento.

ClickManager.cs
 using System.Collections;  
 using System.Collections.Generic;  
 using UnityEngine;  
 public class ClickManager : MonoBehaviour {  
   public GameObject shakeEgg;  
   void Update()  
   {  
     if (Input.GetMouseButtonDown(0))  
     {  
       Debug.Log("Click");  
       Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);  
       Vector2 mousePos2D = new Vector2(mousePos.x, mousePos.y);  
       RaycastHit2D hit = Physics2D.Raycast(mousePos2D, Vector2.zero);  
       if (hit.collider != null)  
       {  
         Debug.Log(hit.collider.gameObject.name);  
         if (hit.collider.gameObject.name == shakeEgg.name)  
         {  
           Debug.Log(hit.collider.gameObject.name);  
           shakeEgg.GetComponent<EggControl>().EggClick();  
         }  
       }  
     }  
   }  
 }  

En caso de que pulsemos sobre el huevo, debemos simular la vibración y actualizar el fichero de configuración.

EggControl.cs
 using System.Collections;  
 using System.Collections.Generic;  
 using UnityEngine;  
 using UnityEngine.UI;  
 using System.IO;  
 public class EggControl : MonoBehaviour {  
   public string configFileName;  
   public Text TextEggClicks;  
   public float shakeAmt;  
   private string fileName;  
   private bool shaking = false;  
   private void Start()  
   {  
     fileName = Path.Combine(Application.persistentDataPath, "data");  
     fileName = Path.Combine(fileName, configFileName + ".txt");  
   }  
   public void EggClick()  
   {  
     if (File.Exists(fileName))  
     {  
       //Load information  
       PlayerInfo loadedData = DataSaver.loadData<PlayerInfo>(configFileName);  
       int clicks = loadedData.eggClicks;  
       clicks--;  
       TextEggClicks.text = clicks.ToString("#,#");  
       loadedData.eggClicks = clicks;  
       DataSaver.saveData(loadedData, configFileName);  
       ShakeMe();  
       if (clicks == 0)  
       {  
         // Open Egg  
       }  
     }  
   }  
   public void ShakeMe()  
   {  
     StartCoroutine("ShakeNow");  
   }  
   IEnumerator ShakeNow()  
   {  
     Vector3 originalPos = transform.position;  
     if (shaking == false)  
     {  
       GlobalInfo.shakeEnabled = false;  
       shaking = true;  
     }  
     yield return new WaitForSeconds(0.2f);  
     transform.position = originalPos;  
     GlobalInfo.shakeEnabled = true;  
     shaking = false;  
   }  
   private void Update()  
   {  
     if (shaking)  
     {  
       Vector3 newPos = Random.insideUnitSphere * (Time.deltaTime * shakeAmt);  
       newPos.y = transform.position.y;  
       newPos.z = transform.position.z;  
       transform.position = newPos;  
     }  
   }  
 }  

Ahora nos falta configurar las animaciones y elementos decorativos del juego y terminar las funcionalidades que queremos implementar. Nos vemos en el próximo artículo...

Trabajando en equipo con Unity

Cuando pensamos en trabajo cooperativo y compartir código a todos nos viene a la cabeza las plataformas de referencia como GitGitHub, Bitbucket, Sourcetree ..., però para pequeños grupos de trabajo para los que desarrollan con Unity se puede utilizar la misma herramienta para compartir código y sincronizar el proyecto entre los diferentes componentes del equipo.


A través de Unity podemos activar la opción Collab para empezar el proceso de sincronización y autorización de las personas que tendrán acceso al proyecto a través de un asistente.



Una vez seleccionada la opción Collaborate, podemos definir el grupo de trabajo a través de la página web del proyecto (Unity Dashboard) dentro de tu perfil de usuario de Unity.


Una vez configurado el equipo de trabajo los permisos de acceso al proyecto, podemos mandar el proyecto para que el resto del sincronice su información. Cada vez que una persona del equipo actualiza la versión compartida, el resto de personas recibirán una notificación advirtiéndoles que existe una versión mas actualizada con la posibilidad de re-sincronizar el proyecto. En caso que dos mismas personas hayan actualizado el proyecto y se produzca un conflicto entre los archivos del proyecto podemos resolverlo con la elección de que versión de cada archivo damos por valido.




Además el sistema de colaboración de Unity dispone también como todos estos tipo de productos un historial de modificaciones donde podemos restaurar una copia anterior del proyecto por si tuviéramos que hacerlo.


Sin duda es una alternativa interesante para pequeños proyectos y equipos pequeños, ya que además de estar integrada en la interfaz del producto nos abstrae de productos muchos mas potentes pero a la vez mucho más complejos.

Monetarización de aplicaciones móviles: The Egg, Tamago y Tap The Easter Egg!

The Egg, Tamago y Tap The Easter Egg! son juegos clásicos para entornos móviles. Cada cierto tiempo se pone de moda este tipo de juegos que sin ninguna pretensión lúdica mantienen a miles de jugadores realizando una actividad repetitiva donde el factor de recompensa es la curiosidad.


Este tipo de juegos puedes ser remunerados o no con la inclusión de publicidad, banners, acciones de compras in-app o vídeos remunerados, pero el éxito o el fracaso de este tipo de aplicaciones se basa en tener al jugador con la curiosidad suficiente para que un tarea que se supone será larga nos haga proponerlos terminarla y mantener al usuario dias y dias o incluso meses con la apliacación instalada en su dispositivo.



Este tipo de aplicaciones de baja interactividad pero de largo recorrido hay de muchas temáticas diferentes que podemos explorar en Google Play o App Store. Romper burbujas de un papel en 15 segundos, acariciar un perro, son algunos de los ejemplos de estas Tap Fun Games que nos pueden hacer perder la cabeza.


Monetarización de aplicaciones móviles: Knife Hit, Happy Glass y Helix Jump

Knife Hit, Happy Glass y Helix Jump son juegos de moda para móviles. Aunque sean de temáticas muy distintas y de compañías diferentes comparten un elemento en comun: la pùblicidad.



Como vimos en el anterior artículo dedicado al análisis de juegos móviles los elementos publicitarios muchas veces son exportados y replicados en diferentes juegos. Los tres juegos comparten banners, anuncios remunerados, dos tienen moneda propia del juego para poderla canjear por opciones o complementos del juego, la posibilidad de pagar una cantidad de dinero para evitar la aparición de publicidad y la de regalos en forma de mejoras, monedas o la capacidad de continuar el juego a cambio de ver un anuncio en formato de vídeo largo.


Teniendo en cuenta que las primeras semanas son cruciales para una aplicación y el primer día es crucial para la relación entre el juego y el jugador, la publicidad en los primeros estadios del juego cunado las partidas son cortas debido a la inexperiencia del jugador y su aprendizaje es muy importante para monetizar un juego en dispositivos móviles ya que obtendremos la máxima tasa de impresiones del jugador.

Otro aspecto muy importante es la auto promoción. Es un aspecto que no habíamos visto hasta ahora y que permite a medida que nuestra base de juegos es más amplia poder auto promocionar nuestros propios juegos a través de los mismos. Si tuviéramos que comprar la publicidad auto generada a plataformas como Google Adwords o otras plataformas el coste por instalación (CPI) seria mucho mayor de lo que las grandes compañías invierten en publicidad.

Pueden ver el vídeo para analizar el gameplay y las técnicas publicitarias utilizadas.

El negocio de los juegos para móviles (Parte 1)

Si sólo haces juegos para divertirte o simplemente quieres ser una parte del engranaje de la industria del vídeojuego quizá este artículo no te interese demasiado, pero si piensas entrar en esta mundillo o rentabilizar tus juegos móviles espero ofrecerte una visión más amplia para entender como funciona este negocio.


Supongamos que hemos diseñado un gran juego y hemos tenido en cuenta los aspecto de monetarización explicados en el anterior artículo de diseño... y ahora que?

Las opciones mas comunes que tenemos a nuestro alcance serian publicar nuestra aplicación en alguna de las tiendas virtuales más importantes que hay en el mercado. Hay que tener en cuenta que la licencia para publicar en Google Play es de 25$ USD (una sola vez) y la licencia para Apple Store es de 100$ USD anuales debemos escoger que camino seguir. Publicar nuestro juego no es garantía de éxito ni de recuperación de la inversión ni de obtener cuantiosos beneficios.

Teniendo en cuenta que los usuarios descubren 7 de cada 10 apps en los propios buscadores de las tiendas de aplicaciones hay que tener clara que estrategia queremos seguir parar posicionar bien nuestra aplicación. De esto se encarga ASO (App Store Optimization) y SEO (Search Engine Optimization) para apps.  Aunque antes de contratar servicios profesionales recomiendo tener las ideas claras y aprender a enfocar correctamente la publicación y promoción de nuestros juegos. Hay que tener en cuenta que los usuarios tienen varias maneras de descubrir nuestro juego y maximizar estas búsquedas son la clave de un buen comienzo.


Veamos ahora algunas de las características que hay que tener en cuenta cuando publicamos nuestro juego en Google Play o Apple Store.




ASO en Google Play

Título

Utiliza un nombre corto, que se puede leer directamente en la búsqueda e incluye la palabra clave que desea posicionar. Google Play permite añadir en el título hasta 50 caracteres. Dado que la tienda Google Play no te da la opción de añadir palabras clave, es en el título y en la descripción donde se deben incluir, para poder posicionarnos

Descripción

La descripción debe ser de, al menos, 350 palabras, y con la palabra clave repetida varias veces: se recomienda una vez cada 100-150 palabras.El número máximo de palabras que permite Google Play en la descripción es de 4,000 palabras así que mientras más uses, mejor. Sin embargo, a primera vista, los usuarios sólo pueden ver las tres primeras líneas equivalentes a unos 80 caracteres. Si la APP tiene premios, citas en los medios de comunicación o influencers, este es el lugar para referenciarlos.



Icono
El icono no afecta directamente al posicionamiento sino al número de personas que descargan tu aplicación. Crea un icono atractivo y evita utilizar un fondo blanco, ya que no se diferenciará del fondo de Google Play.

Categoría
Elige la categoría que mejor se adapte a tu aplicación, para que tus usuarios te encuentren más rápidamente si filtran por categoría.

Screenshots

Crea imágenes atractivas de tu aplicación y añade un vídeo para asegurarte de que todo el mundo puede ver la aplicación funcionando antes de descargarla.
Reviews
Cuantas más críticas positivas y puntuaciones altas, mejor se posicionará tu aplicación. Si no los recibes de forma natural, siempre puedes animar a otras personas a que lo hagan a cambio de dinero o pedir a tus colaboradores que te valoren.
Descargas
Cuanto mayor sea el número de descargas de tu aplicación, mejor posición ocupará en Google Play. Sí, ten cuidado porque si animas a mucha gente a descargarla y desinstalarla inmediatamente después, el efecto será el contrario y ambas tiendas lo penalizan.
Antigüedad del desarrollador
Google Play confía en los desarrolladores que han subido otras aplicaciones antes. Por lo tanto, si tú eres un nuevo desarrollador tienes una pequeña desventaja con respecto a los que ya llevan meses o años registrados.



ASO en la App Store

Título

El título de la app es de los factores más importante de todos. Aquí tiene la ventaja de que el título puede tener hasta 30 caracteres de longitud, por lo que todo por debajo de esa escala y que contenga la palabra clave estará bien.

Descripción

En la App Store intentaremos hacerlo de una forma diferente a la de Google Play. El objetivo no será tanto escribir muchas palabras y poner la palabra clave varias veces, sino fomentar la descarga. Es más aconsejable hacer una breve descripción y hacer que desee descargar la aplicación que llenes el texto de palabras clave en todas partes. Repite la palabra clave varias veces, pero concéntrate en hacer una descripción atractiva.


Icono
El criterio es similar al uso en Google Play. Una vez más, evita usar un fondo blanco ya que tu aplicación no destacará en los resultados de búsqueda.


Screenhots
Muestra toda la aplicación a través de capturas de pantalla o elige un vídeo. Con las imágenes puedes crear un juego con ellas, creando una especie de mosaico con continuidad. Siempre se recomienda el uso de material visual para atraer a los potenciales clientes.
Categoría
Puedes incluir una categoría principal y una secundaria, aunque la primera será la más importante. Tal vez pienses que nadie busca aplicaciones por categorías, pero te sorprendería saber que es algo muy común entre los usuarios.

Reviews
Aparte del título, las reseñas también es de los factores de clasificación más importantes en la App Store. Cuantas más críticas y comentarios positivos, tu aplicación volará de abajo hacia arriba en el ranking.
Keywords
Ten cuidado de incluir muchos o algunos no recomendados como nombres de marca. Utiliza aquellos que estén relacionados con tu aplicación y que encajen con las búsquedas que se realizan en la App Store, y sobre todo nunca hagas SPAM.

En un sector con tanta competencia, la gestión del tiempo es la clave del éxito. Ser rápido, efectivo y eficaz sólo es posible si te planteas pequeños objetivos y concentras todos tus esfuerzos en el momento del Lanzamiento. El primer mes de vida de tu aplicación es vital para su futuro éxito.

Estudia tu aplicación y aplica mejoras gradualmente para que todo el trabajo para llegar hasta aquí no sea un tiempo mal invertido. Por ejemplo, actualmente el algoritmo de Google cambia mensualmente. Con la nueva actualización del algoritmo, el mundo de las apps está tomando más relevancia y protagonismo. Poco a poco vas a ir comprobando que cuando realizas consultas en el buscador desde tu dispositivo móvil, van a aparecer aplicaciones relacionadas con las búsquedas en las primeras posiciones de Google.


Más allà de Google Play y App Store

Mas allá de las tiendas de aplicaciones necesitamos tener estrategias de marketing para posicionar nuestro juego. Podemos utilizar multitud de herramientas que nos pueden ayudar en esta labor. 



Hay desarrolladores que tienen 200, 500, 600 o más juegos para Google Play Store por ejemplo y cada vez que lanzan un juego nuevo lo recomiendan desde todo el resto de juegos, y el crecimiento de ese nuevo juego es impresionante.

A nivel de ASO tu app puede tener visibilidad en la búsqueda pero también puede tener visibilidad por que Apple o Google han decidido que tu app o juego son lo suficientemente buenos como para destacarlo en la portada, y esto es lo que más descargas orgánicas puede generar con diferencia, pero también tenemos los Top Charts que son los rankings de apps más descargadas, Top 100 Juegos Árcade mas descargados… o Top app de estilo de vida. Esa sería otra forma en la que nuestra app o juego pueden tener visibilidad

Para posicionarte muy alto en los Top Charts, tu juego tiene que recibir un alto volumen de descargas en el menor tiempo posible, es decir, a más descargas y mayor velocidad, mayores posiciones en el Top Chart, y para aparecer por app similares o juegos similares,

Para obtener estos efectos existen herramientas y servicios que nos pueden ayudar a conseguir nuestros objetivos:

Sensor Tower: esta es una de las herramientas más completas. Ayuda a mejorar el rendimiento de una app dentro de las tiendas. Sensor Tower permite elegir las keywords y monitorizar cómo aparece tu app en App Store o Google Play. Busca también las palabras clave por volumen o por el número de apps que compiten con esa keyword. También analiza las opiniones de los usuarios y filtra las reviews por las keywords.





Mobile Dev HQ: esta herramienta también realiza una búsqueda exhaustiva de las keyword en los resultados de búsqueda en las diferentes tiendas de apps. Algunas de sus funcionalidades son las sugerencia de palabras clave, análisis de la competencia, descarga de informes. También tiene acceso al Algorithm sonar: cuando cambian los algoritmos de los rankings de los resultados de búsqueda, nos avisa.

App Annie: esta herramienta permite ver el rendimiento de la app y el tráfico desde que un usuario hace una búsqueda hasta que descarga la app. También realiza búsquedas de las keywords más relevantes.

Otra opción es publicar el juego en múltiples tiendas, que nos permitiran multiplicar la presencia de nuestro juego en múltiples entornos. Algunas de ellas són:




o webs de descargas:

Podemos buscar la colaboración de influencers por medio de plataformas de intermediación como:

o el pago por recomendaciones en medios reconocidos del sector:
  • Apploide: Medio reconocido sobre Apps
  • AppsFlyer: partner de publicidad y marketing web que cuenta con red publicitaria propia.
  • Andro4all: medio bastante reconocido sobre el mundo App.
  • ElAndroideLibre: medio muy reconocido sobre el mundo App.
  • TheAppDate: medio muy reconocido sobre el mundo App.

Otro método para obtener un gran numero de descargas en poco tiempo y así contabilizarlo con descargas reales a través de los Top Charts consiste en la contratación de instalaciones por empresas de marketing especializadas:

En este enlace puedes ver el coste por instalación (CPI) para cada país con AppBrain.


Seguramente uno de los métodos mas utilizados por los desarolladores es la compra de publicidad directamente a Google a través de su plataforma Google Adwords. A través de Google se pueden diseñar campañas de aplicaciones donde podremos definir las palabras claves, el tipo de anuncio, países, ciudades, temporalidad y coste para a través de un coste por clic (CPC), obtener un coste por instalación (CPI) de nuestro juego.

hay que tener en cuenta que los anuncios contratados funcionan con pujas y un mercado variable, por lo que el CPI varia según el país de la campaña. Saber el coste de cada país en cada momento por un tipo determinado de aplicación es difícil de saber, pero orientativamente esta es la lista de los países mas caros para publicar anuncios de nuestra aplicación, pero a la vez son aquellos de los cuales podemos obtener mas beneficios por publicidad en nuestras aplicaciones:
  1. USA
  2. Canada
  3. Australia
  4. New Zealand
  5. United kingdom
  6. Germany
  7. Netherlands
  8. Ireland
  9. Spain
  10. Sweden
  11. East Asian Countries like UAE,Saudi Arabia & Qator

El número de desinstalaciones es otro aspecto determinante para el ASO App ya que cuentan más las desinstalaciones que las propias instalaciones. Es decir, es más importante conseguir pocos usuarios y retenerlos por que estos estén realmente interesados en la App que conseguir muchas descargas y tener un ratio salvaje de desinstalaciones.

Esto es debido a que cuanto mayor sea el número de desinstalaciones que se producen, peor considerada estará ésta por los motores de búsqueda de las tiendas de aplicaciones. Es decir, si una aplicación se desinstala muchas veces en poco tiempo, los buscadores entenderán que la App no funciona, no cumple las funciones que ofrece o no gusta. Esto conlleva una penalización a nivel de ASO App, que se traducirá en un descenso de las posiciones e incluso la práctica desaparición de la aplicación


Para aquellos interesados en una información más exhaustiva del mundo del posicionamiento de apliacaciones móviles y juegos en particular, no os perdáis la guía que publica la web de servicios de marketing Pikaso donde encontrareis información detallada del tema.

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