iOS: Desarrollo de juegos y Extensibility

Este fin de semana he mantenido una interesante conversación con un desarrollador de juegos para iOS bastante interesante al respecto de cómo llevar adelante un juego, qué ofrecer a los usuarios para que este resulte interesante y qué elementos del mismo pueden ser determinantes para su compra y sobre todo, para la fidelización del comprador para convertirlo en usuario y que además de ese juego, considere otros juegos del mismo desarrollador.

Y es que el problema es que un posible comprador se puede sentir atraído por la temática, arquitectura y jugabilidad, pero casi siempre esto ocurre con un único título y no con otros títulos del mismo desarrollador. Evidentemente, un desarrollador no puede estar sacando juegos parecidos (salvo, quizás, King o Rovio) porque al final, por mucho que cambie la ambientación, la gente se acaba cansando de la misma mecánica. Incluso aún cuando eres una de estas empresas, al final el aburrimiento ante una mecánica que podríamos llamar reincidente acaba malogrando una empresa.

Más allá de esto, ¿existe una forma de buscar la fidelización de un comprador, convertirlo en usuario ante otros posibles juegos? La respuesta es sí. Y se llama Extensibility.

Extensibility

Uno de los anuncios más interesantes realizados por Craig Federighi durante la WWDC de 2014, al hablar de iOS 8 pero también de OS X 10.10 Yosemite, fue Extensibility. 

Permitir que las aplicaciones hablen entre ellas aunque sea a través del sistema operativo es un gran avance, pero Apple ha puesto limitaciones a los tipos de comunicación que pueden establecerse entre aplicaciones, de forma que por ejemplo, no puedes reemplazar una de las aplicaciones por defecto de iOS 8, como Mail, por otro cliente de correo usando Extensibility. De hecho, las opciones disponibles no cubren todas las posibles interacciones que a desarrolladores y usuarios nos gustaría.

Extensibility cubre las siguientes interacciones:

  • Extensiones del día (Today extensions): más conocidas como Widgets, están destinadas a mostrar información en la pestaña Hoy en el Centro de Notificaciones.
  • Extensiones para compartir (Share extensions): permiten la publicación de fotos, enlaces u otros archivos desde una aplicación a un servicio en línea. Esto permite por ejemplo publicar fotos en Pinterest o subir archivos a Dropbox o OneDrive desde cualquier aplicación. Las versiones anteriores de iOS limitaban la publicación de este tipo de información a Facebook y Twitter, pero ahora daremos un paso de gigante pudiendo enviar información desde cualquier aplicación a un servicio, siempre que éste servicio cree una extensión para iOS 8.
  • Extensiones de acción (Action extensions): permiten manipular o visualizar contenido dentro del contexto de otra aplicación. Explicado para humanos, permiten utilizar ciertas capacidades de una aplicación dentro de una segunda aplicación. Por ejemplo, puedes estar trabajando con un texto que tiene una parte o palabras en un idioma que no conoces y puedes acceder a los servicios de traducción de una aplicación de terceros directamente desde la aplicación, sin la necesidad de copiar las palabras, llevarlas a la aplicación, traducirlas y luego volverlas a copiar y traerlas de nuevo a la aplicación con la que estabas trabajando.
  • Extensiones de fotografía (Photo extensions): permiten acceder desde la aplicación Fotos (pero por extensión, también otras aplicaciones) a aplicaciones de terceros para editarlas, corregirlas o manipularlas.
    Por ejemplo, si estás trabajando con una imagen dentro de un documentos de Pages y necesitas corregirla, reenfocarla y ajustar su color o recortarla, podrás hacerlo aprovechando las capacidades de una aplicación de terceros que dispone de una extensión que permite comunicar a Pages con la misma. No es un caso real, porque para que una aplicación pueda usar Extensiones, debe estar preparada para ello (y deberemos ver nuevas versiones de muchas aplicaciones que advertirán que escuchan u ofrecen servicios de Extensión) y ser capaz de escuchar que opciones hay disponibles en el sistema para poder trabajar con ellas, pero sí es un escenario muy explicativo de lo que vas a poder encontrar a la hora de trabajar con iOS 8.
  • Extensiones de proveedores de almacenamiento (Storage Provider extensions): El Santo Grial de los que trabajamos en la Nube con diferentes proveedores. Permitirán que una aplicación, cualquiera, sea capaz de acceder a diferentes servicios de almacenamiento en la nube. Así, directamente podrás guardar desde Pages Numbers o Keynote documentos en Dropbox (o recuperarlos de allí), permitiendo una flexibilidad a la hora de trabajar muy importante.
  • Extensiones para teclados personalizados (Custom keyboard extensions): que permitirán reemplazar el teclado de Apple por teclados de terceros con sus propias características y formas de trabajo.

¿Cómo vamos a instalar Extensiones de terceros?

Las extensiones, para empezar, se desarrollan dentro de Xcode como si fueran una aplicación más para iOS 8 y se descargan desde la App Store, pero no se descargan como Extensiones. Deben ser aplicaciones que ofrecen un servicio y la conexión para que otras aplicaciones accedan a ese servicio además de algún tipo de funcionalidad al usuario.
Al contrario que Android, los desarrolladores no podrán ofrecer un Widget o un Teclado que se comportan única y exclusivamente como tales, sino que habrá una aplicación con cierta funcionalidad en medio.

Esta funcionalidad, sin embargo, no tiene por que ser una “gran funcionalidad” sino que por ejemplo, podría ser una demostración de las capacidades de la Extensión manipulando archivos o realizando las mismas tareas en documentos nuevos. Por supuesto, la Extensión estará dentro de la aplicación de forma que otras aplicaciones puedan acceder a ella y usarla para manipular la correspondiente información.

Hay una serie de recomendaciones que hace Cupertino al respecto de Extensibility pero que no son obligatorias: las Extensiones deben estar diseñadas para complementar el software incluido en iOS 8 por Apple y además, retener el interfaz y funcionalidades básicas. Así un Widget debe parecer un Widget o las extensiones que permitan manipular fotografías deben tener un interfaz que no sea radicalmente diferente a las normas que se establecen para la creación de interfaces dentro de iOS , etc. pero al no haber por parte de Apple una obligación en esta parte del acuerdo con los desarrolladores es factible que veamos para iOS 8 un buen montón de extensiones que permiten realizar lo mismo “de forma diferente”.

La gestión de Extensiones

Otro problema es la gestión de las Extensiones y las aplicaciones que las engloban. Lo que está claro es que si una aplicación contiene una Extensión y la borramos, esa extensión dejará de estar disponible en el sistema en cualquiera de sus categorías.
La gestión de los Widgets se activan y desactivan adicionalmente desde el Centro de Notificaciones, mientras que los teclados se activarán y desactivarán desde la sección Teclados, donde activas teclados de diferentes idiomas o el teclado emoji, en la aplicación Ajustes.

Las Extensiones para fotos o de servicios de almacenamiento solo funcionarán en condiciones específicas, generalmente cuando el usuario acceda a las opciones de abrir o guardar archivos, mientras que las Extensiones para compartir o acciones podrán ser invocadas prácticamente por casi cualquier aplicación, pero los desarrolladores deberán añadir reglas de activación para especificar qué tipos de datos van a poder utilizarse usando la Extensión.

Como funciona una Extensión

Aunque las Extensiones van empaquetadas dentro de una aplicación, funcionan por separado de la aplicación misma. Esto quiere decir que no es necesario abrir la aplicación para que la Extensión sea funcional, sino que las aplicaciones accederán a la Extensión dentro de la aplicación y solo será ésta la que se ejecute.

También, en parte por limitaciones de la memoria disponible en el dispositivo, las Extensiones no se ejecutarán de forma perenne y será purgadas de la memoria de forma muy agresiva. Así, por ejemplo, si hace un rato que no utilizas una Extensión para realizar una tarea, se interrumpirá su ejecución y será purgada de la memoria para evitar, por ejemplo, que una Extensión residente sea el motivo de un consumo excesivo de la batería del dispositivo.

Al respecto de la seguridad

Apple pone mucho interés en la seguridad y especialmente en iOS todo está compartimentalizado de forma que una aplicación sea incapaz de acceder a los datos de otra para modificarlos. Esa ha sido hasta ahora la política de Apple pero con Extensibility cambia: ahora es factible que una Extensión (que es por defecto, una aplicación aunque esté encerrada dentro de una cáscara que simula – o es – una aplicación) acceda a los datos de una segunda aplicación, si ésta reclama el uso de una Extensión.

¿Cómo funciona entonces? Cada Extensión es un paquete separado (bundle) dentro de la aplicación principal y contiene un ejecutable independiente. Sin embargo, las Extensiones con su ejecutable dentro de un paquete no es una aplicación para el sistema sino que su funcionamiento y los datos que gestionan se realizan a través de System Frameworks, un sistema que define un espacio separado para la ejecución de la Extensión de forma que la manipulación de la información con el ejecutable de la Extensión no se realiza en el mismo espacio de memoria de la aplicación que la ha invocado. A todos los efectos y para el modelo sandboxed de Apple, las Extensiones son pequeñas sandboxes entre sandboxes mayores que son las aplicaciones y la comunicación entre ellas está reglada, filtrada y securizada.

¿Cómo aplicamos Extensibility a la hora de hacer juegos?

Es sencillo: cada juego porta una extensión y esta extensión ofrece una serie de datos al respecto de otros juegos del mismo desarrollador en modo conversión, de forma que es factible poder utilizar objetos de un juego en otro o acceder a elementos o personajes del juego que estamos ejecutando si han sido “ganados” en otro juego, de forma que creamos una red de dependencias que resulta muy interesante al respecto de la promoción de otros títulos del desarrollador, que en ocasiones es mucho más importante que añadir contenidos descargables extras de pago.

Es, sobre todo, una excelente herramienta de marketing para promover un juego, añadiendo al nuevo título características de algunos de los ya disponibles en el mercado en, además, una doble dirección: si ya tienes un juego y el desarrollador lanza un nuevo título en el que puedes aprovechar las armas del juego anterior, ganadas en duras horas de partidas, se puede ver motivado a comprar la novedad ya que parte desde un punto en el que no tiene que pasar un cierto número de horas ganando  ese armamento.

De la misma forma, es factible que si no ha adquirido el juego anterior, piense que para ciertas armas exclusivas sea interesante acceder a ese segundo juego anterior y jugarlo para complementar ese primer juego comprado. Incluso es factible introducir minijuegos extraidos de otra aplicación.

Lo mismo se puede hacer con otros elementos como personajes, cantidad de dinero o recursos ganados… El asunto es interconectar ambos (o más) juegos con extensiones para que el jugador se vea atrapado en una red de dependencias que le ofrezca un mayor contenido y aprovechar los logros obtenidos desde y entre varios juegos.

Porque no todo han de ser extensiones para el Centro de Notificaciones.

0 0 votos
Article Rating
Subscribe
Notify of
5 Comments
Oldest
Newest Most Voted
Opiniones Inline
Ver todos los comentarios
wenmusic
9 years ago

Muy currado e interesante el post.

Alquimista
Alquimista
9 years ago

Mmmmmm, y ¿veremos un Imprimir a PDF y guardar ese PDF en, por ejemplo, Dropbox? ¿Desde cualquier aplicación? [-o<

wenmusic
9 years ago

#2 Faltaria lo de imprimir en PDF (algo que adoro que haga de forma nativa OS X desde hace ya tanto tiempo), pero lo que si tenemos ya es poder abrir PDFs y demas en Dropbox y cualquier otro que haga uso de las extensiones.

Yo odiare iOS 8 por su rendimiento pesimo y bugs hasta hartar, pero reconozco que seguramente es el punto de partida de cosas interesantes para los proximos años en lo que a iOS se refiere. A ver si se cumplen los rumores y iOS 9 va centrado solamente (o principalmente) en el rendimiento y la optimizacion. Vamos, tener un iOS finalizado y no la beta que es iOS 8.

Alquimista
Alquimista
9 years ago

Gracias Carlos. No entiendo cómo algo tan básico no está incluido en iOS desde la primera versión.

5
0
Me encantaría saber tu opinión, por favor, deja un comentariox
()
x