Football Quiz: Primer app con Xamarin
Luego de mi salida de Infor en el año 2018, donde cumplía un horario de 9 a 18 de forma presencial en las oficinas, me encontré con mucho tiempo libre que quería utilizar principalmente para dos cosas: emprender y aprender. Fue entonces que comencé a proyectar una idea que involucre en parte a ambas: desarrollar un videojuego para dispositivos móviles.
Nacimiento de la idea
Mi interés no era hacer un juego de personajes y escenas, sino más bien algo de preguntas y respuestas con alguna idea original como la propuesta en la diplomatura de gestión de negocios. Evalué desarrollar esa idea utilizando Unity con el fin de exportar el juego en Android e iOS, pero me percaté de la importancia de encuestar a usuarios para la generación de enunciados, algo que me iba a llevar tiempo y dinero, y me iba a quitar foco para desarrollar y aprender sobre Unity. En su lugar, prefería comenzar desarrollando algún juego de preguntas que no sea multijugador, que pueda crear los enunciados de antemano sin necesidad de hacer encuestas ni nada complejo, y que sea fácil de mantener.
Fue así que di con una idea de juego del estilo “Logo Quiz”, pero donde en lugar de adivinar un logo, el usuario deba adivinar un jugador de fútbol, y la información brindada para adivinarlo sea la trayectoria del jugador, es decir, los clubes en los que jugó. En las tiendas de aplicaciones ya existían algunos juegos de este estilo, pero daban la sensación de que no estaban siendo bien promocionados: no hacían buen uso de los metadatos y las imágenes eran muy caseras. Además algunos contaban con una buena cantidad de descargas, lo que implicaba una buena oportunidad en caso de lograr posicionar una aplicación mejor que ellos. De esta forma nació lo que llamé “Football Quiz“, o en español “Adivina el jugador“.
Elección de la herramienta de desarrollo
Durante el proceso de exploración de la idea, fui pensando en paralelo cómo podría desarrollar un videojuego del estilo “quiz”. Una posible idea era comprar el código fuente ya desarrollado y agregar la funcionalidad necesaria encima. Existían varios disponibles en los sitios de venta de scripts, pero sentía que iba a necesitar bastante retrabajo, e iba a saltear algunas cosas en el proceso de aprendizaje.
Otra posibilidad era retomar Unity como motor del juego y hacer un desarrollo desde cero, pero no me terminaba de convencer ya que parecía una herramienta muy potente para juegos en 2D y 3D, mientras que lo que necesitaba en realidad era disponer imágenes y letras. En Unity existen escenas, cámaras, y otros objetos que son muy potentes para juegos con movimientos y personajes, pero parecía que para desarrollar el Fooball Quiz era como matar moscas a cañonazos.
Entonces comencé a averiguar sobre otras herramientas cross-platform que no sean orientadas a videojuegos. Cross-platform significa que el framework en cuestión permita desarrollar la aplicación una vez, y esta pueda exportarse para diferentes plataformas, en mi caso era necesario que soporte Android e iOS. Durante esta investigación me encontré con Xamarin, una plataforma de código abierto que fue adquirida por Microsoft recientemente, y que permitía escribir aplicaciones con c# y utilizar ese código para exportar luego la aplicación a Android, iOS y Windows. Es decir, la mayoría del código desarrollado es compartido para las diferentes plataformas, ya que finalmente ese código se compila y se exporta para obtener una aplicación nativa.
Luego de probar unos días la herramienta, me resulto bastante intuitiva y fácil de utilizar, además de tener mucha potencia gracias a la utilización del framework .NET, y el respaldo de Microsoft para el soporte y continuidad de la misma. Parecía ser la herramienta más acertada para el juego que se quería desarrollar, por lo que tomé la decisión de aprender sobre la herramienta y utilizarla para el desarrollo del juego.
Desarrollo de la aplicación
Ya elegida la tecnología, comencé con el desarrollo de las funcionalidades claves de la aplicación
Vista de un nivel
La sección más importante era la vista de un nivel. En esta vista se debía mostrar la trayectoria de una forma fácil de visualizar, junto con la posibilidad de cargar la respuesta. También quería que la carga de la respuesta sea a través de una selección de letras posibles, ya que me parecía mucha mejor la experiencia que tener que tipear en el celular, a demás de representar una ayuda adicional para el usuario.
En la vista de un nivel se muestra:
- Trayectoria del jugador: en la parte superior se listan los escudos de todos los clubes de su trayectoria en orden cronológico. Al hacer click en un escudo, se muestra más detalles en la parte central de la aplicación
- Detalles del paso por un club: al seleccionar un equipo de la trayectoria, se muestra en el centro de la pantalla el logo del club en mayor tamaño, así como el nombre y los años en los que el jugador estuvo jugando en dicho club
- Respuesta: debajo del detalle ya mencionado, se muestran casillas correspondientes a las letras de la respuesta, es decir, del nombre del jugador. Esta es una pista adicional ya que se sabe de antemano cuantas letras tiene la respuesta.
- Conjunto de letras disponibles: en la parte inferior, se muestra una grilla con letras, dentro de las cuales están las necesarias para formar la respuesta. Al presionar en una letra, se coloca dentro de la respuesta, y también es posible quitarla de la respuesta haciendo clic sobre la letra dentro de la respuesta.
Sistema de monedas
El usuario cuenta con una cantidad de monedas inicial, que puede incrementar de diferentes maneras. Por ejemplo, al avanzar un nivel, el usuario recibe 10 monedas. Estas monedas pueden ser utilizadas para obtener pistas adicionales sobre un nivel.
Es por esto que la vista del nivel también muestra dos botones en las laterales de la parte central de la pantalla, cuya función es abrir un popup que cuenta con la siguiente funcionalidad:
- Pistas: El usuario puede canjear sus monedas por diferentes tipos de pistas que tienen distintos valores. Es posible consultar por la nacionalidad o la posición del jugador, conocer la primera letra de la respuesta, o inclusive pedir la respuesta completa en caso de estar muy desorientado.
- Tienda: También es posible comprar monedas por dinero. Estas monedas se venden por paquetes, siendo más conveniente comprar un paquete con una mayor cantidad de monedas.
Navegación de la aplicación
La aplicación cuenta con cuatro grande categorías para jugar:
- Clásicos: los jugadores más populares que están jugando en algún club en la actualidad
- Estrellas: jugadores populares retirados durante el siglo 21.
- Leyendas: incluye los jugadores más emblemáticos del siglo 20
- Entrenadores: incluye a los directores técnicos más populares del mundo
Cada una de estas categorías cuenta con diferentes grupos, que a su vez cada uno cuenta con una cierta cantidad de niveles dentro.
El usuario puede jugar en cualquiera de las categorías, pero debe comenzar siempre por el primer nivel del primer grupo, y puede ir desbloqueando el siguiente nivel a medida que adivina la respuesta correcta. Sin embargo, puede desbloquear un grupo al llegar a una determinada cantidad de niveles superados entre todos los grupos, sin necesidad de haber completado ninguno de los grupos anteriores.
Esto puede sonar algo bloqueante para el usuario, pero está motivado por la implementación del sistema de pistas para ayudar al usuario cuando esté trabado, y a su vez para incentivar la compra de monedas.
En la barra superior, el usuario puede ver el título de la sección en la que se encuentra, volver a la sección en la que se encontraba anteriormente, y ver la cantidad de monedas disponibles. A demás, al cliquear en las monedas, se abre el mismo popup de compra de monedas visto anteriomente.
Monetización
Como se puede ver en las capturas de pantalla ya compartidas, la app cuenta con anuncios de Admob dentro de la aplicación. Estos anuncios se muestran en la parte inferior de la pantalla, en la parte superior en algunas secciones de la navegación, y también en formato de anuncio de pantalla completa luego de una determinada cantidad de navegaciones dentro de la aplicación.
A su vez se implementó el sistema de anuncios recompensados, donde el usuario puede ver un anuncio de forma voluntaria, y recibir una determinada cantidad de monedas a cambio como recompensa.
Los llamados a esta acción se disponían luego de completar un nivel, y también dentro de la sección de compra de monedas. Cabe mencionar que este botón se muestra sólo cuando ya se cargo un anuncio y está disponible para su visualización inmediata, y sólo se entregan las monedas al usuario al finalizar la visualización del mismo.
Por último, se implementó el ya mencionado sistema de monedas, donde el usuario también puede adquirirlas mediante compras dentro de la aplicación. Para esto fue necesario configurar diferentes paquetes en ambas tiendas de aplicaciones, que le permite al usuario pagar directamente a través de la plataforma correspondiente, y adquirir de forma inmediata las monedas compradas dentro de la aplicación.
Pantalla de inicio
Una vez implementadas las funcionalidades anteriores, comencé a pulir una pantalla de inicio para que el usuario pueda configurar las funcionalidades restantes.
Esta pantalla muestra las siguientes opciones:
- Jugar: para comenzar a jugar
- ¿Cómo jugar?: abre un popup con un mini tutorial sobre cómo jugar a Football Quiz.
- Compartir: permite compartir rápidamente el enlace de la aplicación en la tienda por alguna de las redes instaladas en el celular
- Valorar: permite valorar la aplicación en la tienda de aplicaciones
- Silenciar: permite silenciar o darle sonido al juego. Al navegar, al presionar las letras del nivel, al completar con éxito un nivel o al introducir una respuesta incorrecta, se escucha un sonido que puede ser silenciado.
- Idioma: se muestra el idioma actual, y se abre un popup con los diferentes idiomas disponibles. Al cambiarlo, toda la aplicación comienza a mostrarse en el nuevo idioma seleccionado.
Base de datos y generación de contenido
La aplicación almacena determinada información del usuario dentro del almacenamiento local, como por ejemplo la cantidad de monedas disponibles o el idioma seleccionado.
Toda la información relacionada a los niveles (respuestas, pistas, letras disponibles y trayectoria con años y equipos) y al progreso del usuario sobre qué niveles fueron completados, se almacenan en una base de datos local SQL. De esta forma es posible determinar si el usuario ya puede acceder a un determinado nivel o grupo, y también permite hacer actualizaciones que requieran alguna migración sin corromper el avance del usuario.
En cuanto a la información de cada nivel, se recopiló la trayectoria de más de 250 jugadores y 50 directores técnicos, para que el juego cuente con más de 300 niveles disponibles. Este fue un trabajo manual, en el que se armo un listado de jugadores candidatos, y luego se buscó información de su trayectoria en Wikipedia, además de la posición y la nacionalidad que eran necesarias para las pistas.
También se recopilaron los escudos de todos los equipos presentes en todas las trayectorias de los jugadores. Este trabajo parece ser bastante extenso, pero por suerte ya contaba con una carpeta que incluía a la gran mayoría de estos escudos debido a que tuve que realizar este trabajo para Mobabet, el sitio de apuestas que lancé en 2017.
Para el diseño de la aplicación, fui recopilando los iconos necesarios de diferentes fuentes. Los iconos de la página de inicio, las banderas y otros iconos de este estilo son muy comunes y se encuentran muy fácil en internet. En cuanto a los dibujos de las cuatro categorías disponibles, fue algo que encontré en un sitio particular de ilustraciones.
Por su parte, el logo de la aplicación fue la única inversión inicial, algo de $20 dólares, ya que le pedí a un diseñador que me muestre algunas propuestas en base a una serie de indicaciones, de forma que la aplicación cuente con un logo presentable.
Exportación para Android e iOS
Durante el desarrollo de la aplicación, el emulador que tuve en cuenta siempre fue el de iOS, ya que estaba programando en una MacBook. Sólo tuve que agregar código específico para cada plataforma (Android e iOS) para la implementación de los anuncios de Admob, ya que debía utilizar diferentes librerías para cada uno, y para algunos detalles puntuales. Pero podría decirse con seguridad que más del 90% del código de la aplicación está compartido para exportar a ambas plataformas.
Publicación en las tiendas
Una vez testeada la app en los dos sistemas operativos, procedí a exportarlos y publicarlos en las tiendas.
Tuve algunos debates internos luego de algunas exploraciones en Google Trends, hasta que finalmente decidí publicarla con el nombre “Football Quiz 2019”, pero con su traducción al español “Adivina el Jugador de Futbol”, con la idea de posicionar esas palabras claves que tenían una demanda considerable. También fue traducido tanto el nombre como la descripción al francés, italiano, alemán y portugués.
Para la publicación en la tienda de Google Play, utilicé capturas de pantallas originales, pero hice un mínimo trabajo de edición en una de las imágenes para que se muestre cómo se puede ir seleccionando los diferentes clubes de la trayectoria y así obtener más información de la misma.
Para el App Store de iOS, pude publicar unas imágenes similares pero debí cambiar los logos de los equipos por unas imágenes de camisetas genéricas, ya que las fotos con los escudos fueron rechazadas debido a que tienen derechos de autor.
También me tomé el trabajo de armar un video casero usando el iMovie, donde agregué algunos textos y ediciones con el fin de intentar transmitir el mecanismo del juego. Este video fue agregado también a la publicación en ambas tiendas de aplicaciones.
Promoción de la aplicación
Una vez publicada la aplicación, y conforme con el producto final, me puse en campaña para promocionar la aplicación de forma que la misma tenga más visibilidad y descargas.
Posicionamiento en las tiendas
Una de las estrategias que adopté, fue la de posicionar “orgánicamente” en las tiendas, considerando el uso acertado de las palabras claves, y principalmente la cantidad y calidad de valoraciones.
Una decisión que puede parecer intrascendente, pero que considero que realmente fue muy importante para el posicionamiento dentro de las tiendas, fue la de agregar la opción de recibir monedas al valorar la aplicación, algo que puede verse en la imagen del popup de pistas donde el usuario puede pedir diferentes tipos de ayudas.
Este botón redirecciona al usuario de forma directa a valorar la aplicación en la plataforma correspondiente, dando a entender también que se recibirán 70 monedas por hacer la valoración. La realidad es que no he encontrado (ni creo que exista) una forma de validar que la persona haya hecho una valoración, por lo que en la implementación simplemente se le entregan las monedas al usuario por haber hecho click en el botón para abrir la sección de valoraciones. Esto se hizo de todas formas de esta manera, ya que considero que la inmensa mayoría no conoce esta limitación, y se toma el tiempo de dejar la valoración de la aplicación para poder recibir las monedas.
Esta funcionalidad es algo que tiene algunos grises, ya que las políticas de Google Play indican que no esta permitido incentivar a los usuarios a valorar positivamente una aplicación, y si bien en este caso sólo se pide que se valore y no se exige que se pongan 5 estrellas, puede considerarse que el usuario está siendo incentivado a valorar de forma positiva al existir una recompensa. Por este motivo, al momento de conocer estos grises y ver que a otros desarrolladores les han suspendido su aplicación por algo similar, decidí retirar esta funcionalidad de la aplicación para Android, aunque todavía sigue existiendo para iOS.
Con esta funcionalidad, la aplicación logró recolectar más de 1.000 reseñas en Google Play durante el período en el que permaneció disponible, y más de 500 reseñas en la tienda de iOS, con un promedio de 4.6 estrellas de valoración (el promedio y la cantidad de valoraciones visibles en el App Store puede variar ya que sólo muestra segmentado por el país del usuario). Si bien es imposible medir el impacto de estas valoraciones en el posicionamiento, considero que fueron de suma importancia para que la aplicación sea visible en los primeros resultados de búsqueda de la tienda.
Otra acción tomada para el posicionamiento, fue la de conseguir algunas reseñas en blogs. Además de publicarlo en mi sitio Celudescarga, lo que hice fue simplemente pedirle a algunos conocidos que tienen sitios de tecnología que publicaran una reseña redactada previamente por mi. Algunos ejemplos de estas reseña son los siguientes:
- https://colgadosporelfutbol.com/las-mejores-app-de-futbol-del-mercado/
- https://celudescarga.com/adivina-el-jugador-de-futbol-android-ios/
- https://neet-descarga.net/adivina-el-jugador-de-futbol-para-android-e-ios/
- https://okdescargas.com/juego-de-adivinar-el-jugador-de-futbol/
Promoción en Youtube
Ya habiendo tenido la experiencia de Mobabet, sabía que existía un potencial enorme en conseguir que usuarios de Youtube promocionen el juego. Inclusive antes de comenzar a programar el juego, me tome un tiempo para identificar algunos canales con potencial para solicitarles la promoción.
La forma de identificar los canales fue buscando en Youtube palabras clave del estilo “Adivinar el jugador de fútbol”. Al ver los resultados, me percato de que una versión similar del juego que estaba diseñando también existía en formato de video: algunos canales publicaban un video con diferentes trayectorias y un temporizador, de forma que quien mire el video intente adivinar el jugador en el tiempo dado. También existían algunos videos similares donde se mostraba una alineación y el usuario debía adivinar el equipo.
Identifiqué y contacté a aproximadamente 10 canales de youtube con potencial, de los cuales pude cerrar un acuerdo con 4 de ellos.
A diferencia de Mobabet, donde todo el video promocionado hablaba sobre la plataforma, la promoción para esta aplicación consistía en que el youtuber suba un video con su propio contenido, donde se muestran diferentes trayectorias y el usuario debe adivinar el jugador, pero sumando una sección de alrededor de 40 segundos al inicio del video hablando sobre Football Quiz.
Esta estrategia buscaba que el video pueda posicionar bien en Youtube y pueda alcanzar una gran cantidad de visualizaciones, ya que el contenido era bueno y acertado, y a su vez se pueda presentar mi aplicación que estaba sumamente ligada al interés de la persona que mira esos videos.
El video para promocionar la aplicación fue creado por mi utilizando iMovie nuevamente. También realicé la redacción de lo que se debe decir por encima de la presentación, pero cada youtuber debía grabar ese contenido con su voz, para que luego yo me encargue de sumarlo al video. A continuación comparto un ejemplo del video promocional.
Los acuerdos con los youtubers eran por un monto fijo, salvo un caso donde se debía pagar algunos montos adicionales en caso de que el video supere determinada cantidad de visualizaciones. Igualmente, la inversión promedio por cada video rondaba los 50 dólares, ya que si bien el canal tenía mucho alcance, no se trataba de youtubers reconocidos que reciban muchas ofertas de promoción de anuncios.
Los videos publicados fueron en los siguientes canales:
diSandro10:
El canal cuenta con 686.000 suscriptores al día de la fecha, y el video todavía esta publicado, alcanzando las 460.000 reproducciones. El enlace es https://www.youtube.com/watch?v=KcEnx0n07qs
JoeSports:
Revisando los correos, el acuerdo aparentemente fue por 4 publicaciones, pero sólo encontré que se hable de la aplicación en 2 de ellas. El canal tiene 204.000 suscriptores y los videos que todavía estan publicados hasta la fecha tienen 276.000 y 37.000 visualizaciones. Los enlaces son los siguientes:
- https://www.youtube.com/watch?v=FEALeEDZewo&ab_channel=JoeSports
- https://www.youtube.com/watch?v=Rw9eM-EBEU8&ab_channel=JoeSports
AFGameplays:
Este es un canal brasilero, con contenido en portugués, que actualmente tiene 700.000 suscriptores. El video publicado ya no está disponible, pero no he contactado al youtuber para preguntarle las causas. Tampoco recuerdo el impacto que tuvo su publicación en su momento. El enlace del canal es https://www.youtube.com/@afgameplaysoficial. Lo que puedo compartir y que tengo subido a un canal propio, es el video promocional de Football Quiz con las voces de este youtuber en portugués.
Para mejorar la conversión de usuarios con estas promociones, cree una landing para cada Youtuber, de forma que puedan compartir dicho enlace en la descripción de los videos.
Esta landing brinda información concisa sobre la mecánica del juego, y cuenta con dos botones que permiten al usuario elegir la plataforma para la cual desean descargar el juego. A su vez permitían hacer un seguimiento del rendimiento de cada publicación, aunque desconozco por qué no todas tienen los scripts de Analytics. Se hizo una landing en español y una landing en portugués.
Resultados y conclusiones
Al día de la fecha, Febrero del 2023, la aplicación para Android cuenta con más de 144.000 descargas, y la aplicación para iOS con más de 35.000 descargas.
Entre los datos relevantes sobre estas descargas, se puede decir que si bien el español es el idioma predominante, también hay muchas descargas de usuarios en portugués, inglés, francés e italiano, lo cual podría estar relacionado con la decisión de traducir la aplicación a dichos idiomas. También hay varias descargas de Brasil en ambas plataformas, lo que supone que la promoción del Youtuber portugués ha causado un impacto interesante.
También se puede decir que se logró posicionar de forma aceptable las palabras claves deseadas, ya que el reporte de Android sobre los términos de búsqueda incluyen mayoritariamente “football quiz” y “adivina el jugador de futbol”.
En cuanto a los ingresos monetarios, sin dar números se podría decir que no alcanzaron las expectativas, aunque inicialmente estas eran muy ambiciosas ya que se esperaba superar el millón de descargas. De todas formas se pudo recuperar todo lo invertido en dinero e incluso en tiempo, ya que si bien me llevo bastantes horas, los ingresos en los posteriores años se encargaron de pagar esas horas e incluso algo más de ganancia.
Si bien hubo ingresos por ventas dentro de la aplicación, estos ingresos fueron muy pobres y no alcanzaron las 4 cifras todavía, por lo que la principal fuente de ingresos fueron definitivamente los anuncios dentro de la aplicación.
Por fuera de lo monetario, esta experiencia con Xamarin fue la base que me permitió luego desarrollar aplicaciones nativas para dispositivos móviles con mayor velocidad y calidad, y dejar de publicar las aplicaciones con WebViews. Estas nuevas aplicaciones es algo que hablaré en otro artículo, ya que hasta la fecha son apps que siguen generando ingresos importantes de forma pasiva.
También me resulto sumamente gratificante revisar los comentarios de los usuarios, donde además de agradecer por la aplicación, se han tomado el tiempo de dejar sugerencias y puntos de mejora. El poder ver a personas agradecidas por el resultado de un trabajo propio es algo que todavía me sigue movilizando a la hora de encaminar nuevos proyectos.
Discontinuidad
Una vez publicada la aplicación, le di mucho seguimiento a los comentarios de los usuarios con el fin de ir corrigiendo los posibles errores que iban apareciendo. Luego de promocionarla por los medios que se me ocurrieron en ese momento, y ya habiendo arreglado todos los errores, dejé de darle seguimiento a esta aplicación.
Esta decisión fue motivada en parte porque estaba con intereses de retomar un trabajo en una empresa grande, ya que sentía que los 9 meses en Infor no fueron suficiente experiencia en dicho mundo. Ese interés me llevó a entrar a trabajar en Globant a principios del 2020.
Pero otro de los limitantes para seguir mejorando la aplicación, fue que tras un intento de actualizar la app para iOS con el fin de mejorar algunas cosas, la actualización fue rechazada por la tienda debido a que incluía contenido de terceros, haciendo referencia a los logos de los equipos.
Esto fue algo que me desmotivó bastante para continuar mejorando la aplicación, ya que anteriormente no había tenido problema por utilizar esas imágenes dentro de la app, y ahora implicaba tener que quitar o cambiar todas las imágenes, algo que no tenía ganas de hacer y que considero que también iba a afectar a la experiencia de los usuarios. Si bien no pude actualizar la versión para iOS, la versión anterior sigue publicada, y no la he intentado modificar desde entonces.
De hecho, la aplicación sigue disponible en ambas tiendas, aunque ya bastante desactualizadas las trayectorias de los jugadores, y con muchas nuevas figuras que no aparecen en el juego. De todas formas hay usuarios que lo siguen encontrando entretenido, así que en caso que sea de tu interés descargarla, dejo adjuntos los enlaces de descarga:
Descargar Football Quiz para Android
Descargar Football Quiz para iOS