Entrando en el mercado chino (4)

Una vez traducido el juego vamos por el segundo problema. En el correo verificación se nos indica que:
  • (Issue Code: ASI-0008) Overseas game analytics/ foreign embedded files are banned in China. Action: REMOVE any Overseas game analytics and files embedded in your app then resubmit updated App File.
En el correo de aclaración especifican que además de tener que desactivar el Unity Analytics también es necesario desactivar los botones que enlazan con Google Play ya que sino la aplicación no sería aceptada.


De momento he anulado estos botones a nivel de código y he ocultado los botones para que no sean visibles para el usuario. 

Respecto al sistema de monetización, también en el correo de soporte se me pide que no utilice sistemas de  banners y anuncios occidentales y que instale su SDK para Unity para poner anuncios locales en el juego.


SuperSDK

SuperSDK es el SDK de Apptutti para el uso de anuncios chinos para Unity. 


Después de contestar un breve cuestionario sobre que SDK específico necesito me ha dirigido al enlace de descarga.

Una vez descargado, copiad la carpeta descomprimida en cualquier sitio. Con vuestro proyecto de Unity hay que abrir el  SuperSDK_AD_Unity.unitypackage que encontrareis en la carpeta SDK. Una vez instalado tenéis que buscar el archivo AndroidManifest.xml que está en la carpeta

./Plugins/Android/GoogleMobileAdsPlugin/

En le documento tenéis que poner los datos de vuestro juego en los 4 sitios tal y como indica la documentación.


Ahora ya podéis volver a Unity para seguir con las modificaciones a nivel de código para llamar al nuevo sistema de anuncios de AppTutti.

He substituido el antiguo código por este:

   public void Start()  
   {   
     APPTUTTiAds.getInstance().setlistener();  
     APPTUTTiAds.getInstance().init();  
   }  
   public void Banner()  
   {  
     APPTUTTiAds.getInstance().BannerAds();  
   }  
   public void LoadAdInterticial()  
   {  
     APPTUTTiAds.getInstance().interstitialAds();  
   }  

Una vez aquí ya sólo nos queda firmar el juego con la nueva clave pública que AppTutti nos proporciona para generar el APK con su sistema integrado.


Según la documentación, ahora debemos cargar el APK que hemos generado substituyendo el APK inicial que subimos a su plataforma para que ellos puedan verificar todo el proceso. He de decir que hacer este proceso ha sido más complejo de los que imaginaba ya que he tenido que borrar a conciencia los assets que utilizaba para ver los anuncios de Google AdMob para que todo funcionase.

En el próximo artículo os cuento como sigue esta historia.

Entrando en el mercado chino (3)

Después de publicar el primer juego y esperar un par de días recibí un correo con las siguientes sugerencias para publicar el juego en la plataforma AppTutti:

  • (Issue Code: ASI-0004) App content NOT in Simplified Chinese. Action: Translate your app contents into Simplified Chinese and resubmit updated App File. Free Professional Translation service order available at your Dashboard.
  • (Issue Code: ASI-0008) Overseas game analytics/ foreign embedded files are banned in China. Action: REMOVE any Overseas game analytics and files embedded in your app then resubmit updated App File.
  • (Issue Code: ASI-0011) Overseas URL/Website informations and Gmail addresses banned in China. Action: REMOVE Overseas URL/Website informations and Gmail addresses and resubmit updated App File.

El primer punto parece fácil de cumplir ya que con el servicio de traducción de la propia plataforma puedo obtener la traducción de los textos del juego. El segundo punto quiero suponer que es el sistema Analyics de Unity, así que puedo desactivarlo de la aplicación. Para resolver el tercer punto debería hacerme un correo en un dominio aprobado e redirigir los correos que allí reciba a mi cuenta habitual.

Chino simplificado 

Por suerte, para mis proyectos, utilizo el asset I2 Localization que me permite añadir nuevos idiomas de manera dinámica y substituir una fuente en función del idioma seleccionado. En primer lugar necesitava encontrar una fuente para añadirla al juego para los textos en chino simplificado. Para ello podeis utilizar la web https://www.freechinesefont.com/ donde concentrareis fuentes en chino de diferentes estilos para vuestras aplicaciones.


Una vez descargada y puesta en la carpeta fuentes de mi juego sólo he tenido que añadir el nuevo lenguaje (chino simplificado) y añadir todas las traducciones. Además la plataforma pide que el chino simplificado sea el idioma por defecto y así lo he establecido en la configuración.


A nivel de código sólo he tenido que añadir la asignación del idioma al pulsar el botón del idioma para guardar la configuración al fichero de configuración del juego. A nivel de interfaz he creado un nuevo termino Fonts de tipo fuente y he asignado la fuente para cada idioma, personalizando de este modo la fuente específica para cada idioma.

   public void SelectChinese()  
   {  
     GlobalInfo.language = "zh-CN";  
     StartCoroutine(SaveLangConfig());  
   }  
   IEnumerator SaveLangConfig()  
   {  
     yield return new WaitForSeconds(0.1f);  
     PlayerInfo loadedData = DataSaver.loadData<PlayerInfo>(GlobalInfo.configFile);  
     loadedData.language = GlobalInfo.language;  
     DataSaver.saveData(loadedData, GlobalInfo.configFile);  
     CloseLanguagePanel();  
   }  

Interfaz:


Ahora es necesario a cada termino del juego que queramos traducir con varias fuentes añadir en las opciones secundarias el termino Fonts que hemos definido previamente.



El el siguiente artículo hablaremos de como resolver los otros puntos que debemos sortear antes de poder publicar nuestra aplicación.


Entrando en el mercado chino (2)

En este segundo artículo querría mostrar el proceso realizado para subir mi primer juego para el mercado chino y mi experiencia personal.


Tal y como expliqué en el artículo anterior, una vez registrados en la plataforma de AppTutti y esperar a ser aceptado podemos empezar a publicar nuestros juegos. La publicación consiste en un gran formulario donde nos pedirán los datos del juego, como si se tratase la ficha de Google Play (descripción corta, descripción larga, icono, capturas del juego, etc.). El proceso es bastante fácil ya que si tenemos publicado el juego en Google Play, introduciendo la URL el sistema capturará la mayor parte de información necesaria.

Así mismo hay algunas peculiaridades... deberemos adjuntar una carta (hay platilla para ello) Partner Authorization Letter donde autorizamos a AppTutti a comercializar nuestro juego en China, además hay que especificar como vamos a monetizar nuestra aplicación. 


Aquí es cuando debemos empezar a plantearnos si queramos hacer algunos cambios importantes en nuestro juego. Tal como explica el tutorial, no podemos utilizar sistemas occidentales de publicidad, ni sistemas de validación sociales, ni siquiera un enlace a una dirección Gmail de contacto.


Eso conlleva plantearse algunos cambios importantes. Por suerte AppTutti tienen una SDK que podemos integrar fácilmente en Unity para el tema de la monetización y el resto es cuestión de tener sistemas alternativos para cumplir los requisitos del gobierno chino.

Por otro lado es condición básica tener traducida el juego a chino tradicional. Yo personalmente he utilizado varios traductores de Internet para traducir los aspectos básicos del juego, así mimo Apptutti tiene un servicio de traducción gratuito para las primeras 1000 palabras donde para mis juegos es mas que suficiente.


Así mismo este proceso no es inmediato. He tenido que esperar dos días a que aprobaran la aplicación para poder acceder a los servicios de la plataforma. Una vez aceptado el juego, he accedido al servicio de traducción y he mandado un fichero MS Excel para que ellos traduzcan los textos del juego.

En el correo de validación, además se me advierte que debo hacer cambios específicos para poder publicar el juego. Hablaremos de ello en el próximo artículo.

Entrando en el mercado chino (1)

Ahora con varios juegos publicados me ha surgido la oportunidad de publicar mis juegos para el mercado chino. Sin duda que es es una oportunidad comercial importante por el volumen de posibles jugadores que tienen el mercado asiático, pero también constituye un reto, ya que publicar en china es toda una aventura.



Hace unos días vi en Twitter este anuncio que me llamo la atención. Teniendo juegos publicados pensé que era una oportunidad para ampliar mi mercado y hacer que mis juegos llegaran a China. Después de una exploración me decanté por AppTutti donde esta plataforma de Honk Kong ofrece entrar al mercado asiático a través de 3 tiendas virtuales con su plan gratuito.





Una vez en la página web inicié el proceso de registro. Este proceso consiste en 5 formularios con información detallada de tu organización así como los datos personales y bancarios. La información es exhaustiva y debe rellenarse para poder seguir con el proceso. Una vez realizado el registro pasaran unos días, 2 en mi caso, hasta que tu cuenta quede aprobada y puedas seguir adelante.


Mientras esperas a la aprobación de tu cuenta me estuve documentando sobre el sistema chino. Después de ver este vídeo esta claro que tendré que cambiar algunas cosas en los juegos que quiera publicar aquí ya que entre las restricciones del gobierno chino y los temas de localización no podría publicar los juegos tal y como están creados actualmente.

Attila. El final del camino

Hace unos días que publiqué Atila, Tierra quemada en al @IndieDevDay 2019 en Barcelona. Aproveché los dos días de la feria para recoger impresiones del juego para poder aplicar las buenas ideas a la versión definitiva del juego. 


Tengo que decir que el juego recibió una buena acogida y saqué algunos interesantes y sabios consejos. Pruébalo!

El sistema de combate

En un primer lugar, el sistema de combate diseñado consistía en un modo parecido a los que tienen los juegos de estrategia. El número de tropas, unos dados y el azar decidían el resultado de la contienda.


A la práctica, este sistema que en un juego de mesa es suficiente bueno demostró en la fase de testeo que era ineficiente ya que la mayor parte de los jugadores se mostraban indiferentes al modo de batalla ya que no tenían poder de decisión en el resultado.

En una segunda versión propusimos a los jugadores un sistema donde ellos debían decidir que estrategia querían utilizar en el combate (cargar, marchar o esperar) y la IA del ejercito romano escogía la suya aleatoriamente. Este sistema respetaba el sistema clásico de los juegos de estrategia añadiendo un factor humano, pero los jugadores seguían sin entender la dinámica del proceso y lo veían como una molestia al proceso del juego.


En una tercera propuesta el jugador decidía que estrategia quería utilizar en función de la estrategia que utilizaba la IA del jugador romano que funcionaba en modo automático y era mostrado en pantalla. Este sistema convertía las batalla en un mini juego. En la fase de pruebas el sistema parecía funcionar en las primeras batallas, pero paulatinamente nos dimos cuenta que finalmente el jugador pulsaba una opción al azar o vejaba que el proceso fuera aleatorio.


Finalmente decidimos hacer un cambio radical y transformamos las batallas en un mini juego de acción. Actualmente sólo tienen un sistema de batalla (golpear), así mismo el sistema tiene mas posibilidades de interacción que se pueden implementar.


Aunque este sea el sistema finalmente implementado, en la feria recibimos criticas de jugadores que les gustaba más el sistema tradicional de los wargames, aunque mayoritariamente tubo una buena acogida.

Comercio y espías

El juego se tiene como principales mecánicas la gestión del movimiento a través del juego del caballo de ajedrez, pero también la gestión de recursos para mover el ejercito de Atila. En las primeras versiones del juego sólo se podía comerciar al final de cada nivel forzando al jugador a reiniciar el nivel si se quedaba sin recursos. Este modelo hacia el juego con un curva de dificultad muy grande para un juego de dispositivos móviles, así que decidimos incluir la posibilidad de comerciar varias veces al medio de cada nivel. 


Este sistema, aunque satisfactorio necesitaba algún factor límite para equilibrar la dificultad del juego. En la siguiente versión se añadió el límite de 10 acciones comerciales en toda la partida, aunque como veremos podemos romper este límite en algunas circunstancias.


Finalmente al dotar de los recursos de una importancia crucial también encontramos interesante añadir otra opción interesante para jugadores más experimentados. En muchos niveles hay múltiples caminos para llegar a completar el circuito necesario para completar el nivel. Aquí es donde entra en marcha la opción de espionaje en el juego. Con esta opción podemos ver que recursos obtendremos de una determinada casilla aunque no estemos encima de ella. Esto nos permite en determinadas circunstancias determinar que estrategia queremos utilizar para completar un nivel.



Recompensas

Como ya he explicado en otros artículos, uno de los mayores problemas de los juegos gratuitos para dispositivos móviles es la retención de los usuarios. Al no ser un juego casual, sino de estrategia perderemos muchos usuarios  confundidos buscando un tipo de juego que en realidad no es lo que ellos esperaban. Así mismo, se han plantado algunas estrategias de retención que implementaré en las próximas semanas.
  • Premios diarios. Aprovechando las limitaciones en el modo de espionaje y el comercio dentro de un nivel, podemos ofrecer aumentar los límites de estas funciones como regalos diarios a la fidelidad de los jugadores.
  • Premios. Podemos ofrecer recursos a través de compras in-app o a cambio de la visualización de publicidad para no dejar al jugador sin recursos para seguir con su partida.
  • Guardar la partida. Aunque inicialmente no estaba contemplada, la opción de guardar y cargar una partida permite asegurar un estado inicial en el caso que debamos reiniciar el juego porque no disponemos de recursos necesario para seguir. 


PixelPerfect en Unity 2D

Si os poneis manos a la obra en haver un proyecto con estética de los años 80 del siglo pasado lo mas probable es que opteis por una de las 2 opciones, o modificais la escala de vuestros assets gráficos con un editor externo o trabajais con gráficos de la época (16x16 pixeles o 32 x 32 pixeles) y utilzais el propio Unity para escalar el gráfico al tamaño deseado.


Para ello es necesario preparar los gráficos para que no os queden distosionados al aplicar el algoritmo de antialiasing al escalar el gráfico desde su tamaño original (16x16 pixeles en este ejemplo) a la escala deseada en nuestro juego.


Cuando importamos una imagen Unity configura de manera predeterminada algunos filtros para suavizarla cuando la muestra en la pantalla. Esta puede ser una buena idea para otro tipo de juegos, pero no para los PixelArt.

Al importar los graficos del juego debemos configurar Unity para que el escalado será correcto debemos modificar el filter mode a Point (no filter).


y seguidamente el modo de compresion a None.


Tambien es necesario modificar el valor del Pixel per Unit (PPU). Puede encontrar esta configuración también en Sprite Mode del Sprite. Es 100 por defecto. Cámbielo a su tamaño de mosaico en píxeles (por ejemplo, en nuestro caso tenemos mosaicos de 16x16).

Ahora que hemos configurado nuestra PPU, necesitamos decirle a la cámara qué tan grande queremos que se base en esa PPU para que un píxel en pantalla corresponda con un píxel en nuestro juego.

Para obtener ese tamaño solo necesitamos hacer una fórmula simple:

Tamaño ortográfico de la cámara = resolución vertical / PPU / 2
Una vez que tenga ese tamaño, haga clic en el objeto Cámara principal y coloque ese valor en la configuración Tamaño:


En nuestro caso tenemos 180px como resolución vertical y 16px PPU así que:

180/16/2 = 5.625

Es importante mencionar que en nuestro caso renderizamos todo en una resolución pequeña y luego escalamos. No coloque la resolución vertical deseada (en nuestro caso 720p) sino la que está renderizando.

Finalmente para garantizar que el movimiento pixelado de Sprites sea coherente entre sí, configure Spans settings para establecer el ajuste adecuado para el proyecto. 

Abra la Configuración de ajuste (menú: Edición> Snap Settings...)
Para Mover X / Y / Z, establezca sus valores en 1 / PPU (en nuestro ejemplo 1/16 = 0.0625)
 

La configuración de ajuste no se aplica de forma retroactiva. Si hay GameObjects preexistentes en su escena, seleccione cada uno de ellos y haga clic en Ajustar todos los ejes para aplicar la configuración del Snap.

El mundo a través de 1bit

Una de las cosas que admiro es la capacidad que tienen algunos diseñadores y artistas para crear un mundo con personalidad a través de imagenes a 1bit.


Unos de los ejemplos más aclamados son juegos como Gato Roboto o 1-Bit Rogue. Juegos donde los gráficos a 1bit son parte de la identidad del propio diseño del juego.


Para todos aquellos que os gustaria provar de hacer un juego con este estilo tan especial me gustaria compartir los recursos que he encontrado que podrian ser de gran utilidad. Para ello la mejor página de recursos es Itch.io.

Aquí podeis ver un conjunto de recursos de 1bit que pueden ser interesantes:

1 Bit-Game Assets Pack



CanariPack 1BIT TopDown

 


CanariPack 1BIT TopDown1700+ 1Bit Game Assets & PixaTool


75 Free 48x48 1-Bit Fantasy Sprites


16x16 1-bit RPG Forest Tile Set
 

1-Bit RPG Tileset 32x32 Pixels



1-Bit Icons

1 bit Sci Fi Pixel Art Tileset (16x16)


16x16 1-bit Church Interior Tile Set

Entrando en el mercado chino (4)

Una vez traducido el juego vamos por el segundo problema. En el correo verificación se nos indica que: (Issue Code: ASI-0008)  Overseas ga...