Energy Up: Cuando el pasado encuentra el futuro

Una vez me dijeron que la inspiración llega cuando menos te lo esperas. Después de terminar mi ultimo proyecto Simón, color vs. color, que quería actualizar de Delphi a Unity quería hacer un proyecto inspirado en algún juego retro. Jugando con mi ZX Spectrum descubrí un juego que me inspiro mucho por su mecánica mas allá de sus gráficos de 8 bits.


Zenji es un juego de rompecabezas diseñado por Matthew Hubbard y publicado por Activision en 1984. Fue lanzado para Atari 5200, Atari 8-bit family, ColecoVision, Commodore 64, MSX y ZX Spectrum. El juego consiste en un personaje que se mueve a través de bloques que pueden girarse en partes de 90 grados. En la red de túneles hay una fuente de energía que ilumina de amarillo los trozos conectados. Cuando conseguimos conectar todos los bloques antes de que se termine el tiempo pasamos de nivel.

Actualmente el juego no tiene recorrido comercial, pero personalmente encuentro que las mecánicas del juego son muy interesantes como base de un juego actual para dispositivos móviles. A partir de esta fuente de inspiración he diseñado un juego donde un aguerrido arqueólogo debe encontrar los ídolos sagrados en un templo perdido en la selva.


Para conseguir el ídolo de cada nivel debemos conectar todas las plataformas con una antigua fuente de energía que permite girar las plataformas en giros de 90 grados. Ademas en nuestro recorrido encontraremos power up, objetos, trampas y enemigos que harán mas emocionante y arriesgada las misiones de nuestro personaje.


Al ser un sistema modular de objectos, podremos crear múltiples laberintos a través de un conjunto de prefabs y un array con la distribución inicial de plataformas y objetos en cada nivel. Para los niveles usaremos una class con la estructura y cada objeto en una posición del Array.

 public class Cell  
 {  
   public string code = "0";  
   public bool energyFont = false;  
   public bool player = false;  
   public int enemyCode = 0;  
   public int itemCode = 0;  
 }  

A partir de esta clase, podemos crear un array para almacenar los diferentes bloques donde cada tipo es un prefab.

 public static Cell[,] actualLevel = new Cell[10, 10];  


Me encanta ver como mecánicas olvidadas en el cajón de los recuerdos cobran de nuevo vida en un nuevo proyecto. En los próximos artículos iré explicando la evolución del proyecto y las partes más importantes del mismo.

Entrando en el mercado chino (9)

Por fin he recibido el correo donde se validaba la aplicación final y el juego era apto para publicarse en tiendas de aplicaciones chinas. 


A partir de aquí ya sólo debemos esperar  a que paulatinamente se vaya publicando el juego en diversas tiendas y ver los resultados. Debemos fijarnos que formalmente nosotros no estamos publicando el juego, sino que es AppTutti quien lo hace en nuestro nombre. Como podéis ver en el  icono del juego han añadido una pequeña banda con su nombre. Será esta empresa la que percibirá las ganancias que se puedan generar y después de deducir su comisión nos ingresará los ingresos a nuestra cuenta. 



Desde la plataforma podemos analizar la evolución del juego desde el apartado de análisis del rendimiento donde podemos ver las variables típicas de instalación de una aplicación, los usuarios activos, sus dispositivos, la situación geográfica, etc.

  1. Tienda: 3839 Game
  2. Tienda: 9 Game


Mi opinión personal es que es un buen método para entrar en el mercado chino, ya que en este caso AppTutti es la primera que quiere que el juego en el mercado chino funcione ya que ellos obtienen beneficios si la app funciona y serán segundos los más interesados en hacer las cosas bien. El el siguiente artículo, y ultimo de la serie, veremos los resultados más relevantes después de la publicación.

Entrando en el mercado chino (8)

Bien, estamos a la espera a la aprobación del juego por parte de la tienda. Así mismo hay un problema intrínseco al mercado que no se hasta que punto me genera una decepción. Al empezar este proceso la idea era utilizar los servicios de AppTutti para entrar en el mercado chino. Como ya expliqué tienen una oferta gratuita que para los juegos no deja de ser "confusa".


En la página web pone que el servicio básico es gratuito para acceder a 3 tiendas del mercado chino. Tal como indican en la información de servicio: "RSPP (Register, Submit, Plug, Publish) está diseñado para desarrolladores y propietarios de aplicaciones y juegos para móviles que deseen entrar en China y en mercados inexplorados, este paquete cubre todos los requisitos básicos para ayudarle a lanzar sus creaciones en esos mercados. Perfecto para aquellos que desean probar nuestros servicios."


Así mismo hay una restricción imperativa para los juegos donde el gobierno chino obliga al registro de los juegos para la validación de la propiedad intelectual de los mismo.

"Entendemos la importancia de asegurar la certificación de su propiedad intelectual (PI) para sus creaciones. La protección de la propiedad intelectual (PI) es un tema de preocupación para los desarrolladores de aplicaciones/juegos móviles que desean entrar en China. En marzo de 2016, el Gobierno chino introdujo una nueva política sobre el proceso de registro digital de la propiedad intelectual. Este registro es obligatorio para los nuevos participantes en China, lo que le garantiza que China está comprometida con la protección y el mantenimiento de sus derechos de propiedad intelectual."

Esta aclaración no es complementaria, tal como indica, para los juegos es obligatoria:

"El registro de IP es estrictamente necesario para que las aplicaciones de GAMING se publiquen en las principales tiendas de aplicaciones de China. Para otro tipo de aplicaciones, es bueno tener para su protección básica y un lanzamiento más rápido en China."


El problema es que este servicio no es gratuito. Por lo que tendremos que rascarnos el bolsillo si queremos seguir con el proceso. Evidentemente aquí todo es una cuestión de la relación coste/beneficio ya que si no recuperamos la inversión con el juego o juegos que publiquemos, el proceso no nos interesa. 

En mi caso tengo 4 juegos que quiero publicar, así que voy a pasarme a RSPP Plus para poder seguir el proceso. A partir de aquí nos piden 3 cosas para validar la propiedad intelectual del juego:

  • Debo pasarles las primeras 1500 y las últimas 1500 líneas de los códigos fuente de la aplicación específica en formato de archivo MS Word para la verificación de los derechos de propiedad intelectual.
  • Una versión desbloqueada del archivo de aplicación en particular (archivo de aplicación de prueba) en formato de archivo zip.
  • Publicar una Carta de Autorización de Socios para autorizarles a Apptutti a hacer la gestión.

Hama Beads: Sir Fred

Uno de mis juegos preferidos, sin duda es Sir Fred. Este es un videojuego de plataformas producido por Made in Spain en España y por Mikro-Gen en el Reino Unido, en el año 1986. 


Sir Fred debe internarse en el castillo donde se encuentra secuestrada su amada. Para ello puede hacer uso de los objetos que encontrará en las diferentes localidades, así como de sus especiales habilidades. El personaje puede andar, correr, saltar, nadar, bucear, lanzar piedras y esgrimir espadas. Podía ser finalizado de diferentes formas, puesto que la localización de los objetos y de la princesa variaba según la partida, además de que el mapeado disponía de diferentes rutas posibles.


Esta tarde he hecho mi versión de SirFred para Hama Brads para poder decorar mi zona de trabajo. Quizá no sea un de los personajes del ZX Spectrum más conocidos, pero le tengo especial cariño.

Patrón de 26x17:

Entrando en el mercado chino (7)

Después de investigar un poco me parece que hay algun tipo de problema con la integración del SDK a partir de compilaciones Android API +29. Por ese motivo en móviles que son Android 7 y 8 me funciona perfectamente. 
  • (Issue Code: ASI-0012) Compatibility issues found on certain mobile devices and induced crash when loading. Action: Fix the issues for your app and resubmit updated App File. compatibility issues device: Huawei Honor V10, Android version 9



Que podemos analizar a través del logfile:

 FATAL EXCEPTION: Thread-3  
  Process: com.cocodroloapps.Numbers, PID: 4129  
 java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion;   
 at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:108)  
 at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:96)  
 at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112)  
 Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.ProtocolVersion" on path: DexPathList[[zip file "/data/app/com.cocodroloapps.Numbers-ll8BtORaUmUEAYfaV1cCxA==/base.apk"],nativeLibraryDirectories=[/data/app/com.cocodroloapps.Numbers-ll8BtORaUmUEAYfaV1cCxA==/lib/arm64, /data/app/com.cocodroloapps.Numbers-ll8BtORaUmUEAYfaV1cCxA==/base.apk!/lib/arm64-v8a, /system/lib64, /product/lib64]]  
 at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)  
 at java.lang.ClassLoader.loadClass(ClassLoader.java:379)  
 at java.lang.ClassLoader.loadClass(ClassLoader.java:312)  
 at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:108)   
 at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:96)   
 at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112)   

La mejor solución que he encontrado es modificar el archivo AndroidManifest.xml que está en la carpeta

./Assets/Plugins/Android/

y añadir esta entrada:

   <uses-library  
                android:name="org.apache.http.legacy"  
                android:required="false" />  

Una vez añadido el cambio he vuelto a mandar la nueva versión del APK para su evaluación.

Respuesta

Han pasado 2 días y finalmente mi juego ha sido aprobado. He recibido un correo con la confirmación.


Ahora toca esperar el siguiente paso del proceso. Según el correo de respuesta este proceso:

  • Le informamos que la revisión del contenido de la aplicación para su proyecto ha sido completada y que ahora estamos en el proceso de adquirir los ID y las claves de la aplicación. Recibirá una notificación por correo electrónico una vez que su aplicación esté lista para la integración con el SDK. Este proceso suele durar unos 7 días laborables. 

Os mantendré informados en el próximo artículo.

Recursos de Fertile Soil

Hoy navegando por Twitter he descubierto una página de recursos que he encontrado muy interesante. 



Básicamente se trata de una página de Assets para juego gratis para uso personal o comercial de una calidad excelente. La página está creada por a Fertile soil productions

Además los assets son compatibles con la aplicación AssetForge con lo que nos permitirá crear composiciones con otros assets de manera muy fácil para luego exportar el trabajo para Unity.



Datos 
Página webhttps://www.fertilesoilproductions.com/
Twitterhttps://twitter.com/SoilFertile

Entrando en el mercado chino (6)

Cuando pensaba que ya había terminado el proceso he recibido una notificación con mas problemas en el juego.

  • (Issue Code: ASI-0003) App title NOT in Simplified Chinese. Action: Change your app title into Simplified Chinese (2048极限组合) and resubmit updated App File. Free Professional Translation service order available at your Dashboard.
  • (Issue Code: ASI-0012) Compatibility issues found on certain mobile devices and induced crash when loading. Action: Fix the issues for your app and resubmit updated App File. compatibility issues device: Huawei Honor V10, Android version 9


El primer problema es un error de interpretación. La traducción que ellos me proponen es como si creyesen que el juego es un clone del famoso juego 2048. El problema es que el juego que estamos publicando no es el mismo juego. De hecho tiene mecánicas muy diferentes y sólo tienen en común el hecho que vamos sumando números. En nuestro caso los números aparecen automáticamente y el objetivo es no quedarte sin casillas vacías. He mandado un correo con la explicación. A ver que pasa.

El segundo problema que detectan no se como solucionarlo sin su ayuda. Yo no dispongo de un terminal con estas características para hacer las pruebas. Así que he pedido su ayuda para resolver el problema.

Respuestas

Han pasado 24 horas y ya tengo respuesta. El equipo de AppTutti me propone otro nombre en chino para el juego (数字极限组合) que vendría a ser "Combinaciones de límites digitales". Para el segundo tema, creo que el problema reside en la acumulación de versiones.


La versión para el mercado chino deriva de la última versión de producción de Google Play, así que  contenía todo el código para la gestión de anuncios en AdMob así como la configuración al Google Games que he tenido que suprimir.  La opción más fácil ha sido crear un proyecto de zero y volver a poner el codigo fuente de la carpeta Assets, reinstalar SDK de AppTutti, modificar otra vez el fichero Manifest y generar un nuevo APK.

Una vez generado he vuelto a mandar la actualización a la plataforma. Seguimos...

Hama Beads: Wally

Hace tiempo que quería pasar una tarde haciendo una de las cosas que más me relajan. Hoy presento mi colección del mítico Wally, uno de los personajes mas queridos de mi infancia cuando pasaba horas intentando resolver los puzzles de Everyone's Wally. 


Ahora portados a figuras de Hama Beads para pasar una tarde creando los personajes de la serie de juegos para ZX Spectrum. Me he divertido mucho haciendo las figuras, aunque he gastado muchas piezas amarillas, eso sí.


Automania (1984)




Pyjamarama (1984)




Everyone's a Wally (1985)




Three Weeks in Paradise (1986)



Entrando en el mercado chino (5)

Después de integrar el SuperSDK en la aplicación para poder tener anuncios locales chinos en el juego envié la nueva versión para revisión. Al cabo de 24 horas ya tenia las ultimas revisiones hechas y aun debía hacer mas cambios en el juego. Según las leyes chinas los juegos deben cumplir reglas adicionales que las aplicaciones comunes no son de obligado cumplimiento.


  • (Issue Code: ASI-0003) App title NOT in Simplified Chinese. Action: Change your app title into Simplified Chinese and resubmit updated App File. Free Professional Translation service order available at your Dashboard.
En resumen, me piden que el título del juego también esté traducido a chino simplificado aunque seá un elemento de diseño y no afecte a la jugabilidad. Además en el sevicio de soporte me informan que el SDK no permite desabilitar el banner en función de la escena que se está visualizando, con lo que me obligará a modificar un poco las escenas para que siempre el banner esté visible. No es como a mi me gustaría pero los cambios no afectan demasiado.


Antes de mandar la última revisión os dejo aqui los puntos más importantes sobre la ley de la propiedad intelectual que afecta a todos los juegos que queramos publicar en el mercado chino.

  • La aplicación presentada DEBE estar totalmente traducida al chino simplificado, incluyendo el título, la descripción y el contenido de la aplicación.
  • Se debe mandar el código fuente parcial de la versión de la aplicación con los requisitos anteriores cumplidos. Las primeras 1500 y las últimas 1500 líneas de los códigos fuente de la aplicación específica en formato Microsoft Word para la verificación de los derechos de propiedad intelectual.
  • Libre de cualquier contenido no relacionado con APP, es decir, sin banners y/o publicidad en vídeo, sin información del desarrollador y/o copyright (incluyendo nombre(s) o sitio(s) web(s), aviso de copyright, reconocimiento del personal) en las páginas del juego.
  • En caso de que la aplicación requiera que el usuario inicie sesión, DEBE proporcionar una cuenta de superusuario con código de acceso.
  • Proporcionar una carta de autorización para la aplicación específica.

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

./Assets/Plugins/Android/

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. 


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