El 13 de junio de 2022, Riot anunció una nueva asociación con Microsoft para ofrecer nuestros videojuegos más importantes en Xbox Game Pass. Este acuerdo reunió a dos de las empresas de videojuegos más grandes del mundo en torno al amor compartido por los juegos competitivos centrados en el jugador. Luego de seis meses, cumplimos con esa enorme promesa y lanzamos nuestros juegos más importantes en Game Pass con gran éxito.

En esta oportunidad, queremos enfocarnos en el trabajo detrás de escena que transcurrió en esos meses y hablar sobre un equipo que tal vez no conozcan: El equipo de Plataforma del jugador.

¿Qué es Plataforma del jugador?

Plataforma del jugador forja el contacto entre los juegos de Riot y nuestros jugadores para crear una comunidad y un ecosistema de múltiples videojuegos. Nuestro equipo crea una experiencia de juego conectiva que une tanto a los jugadores como al contenido en nuestros juegos. En otras palabras, Plataforma del jugador trabaja y colabora en casi todos los aspectos de los juegos de Riot, excepto la jugabilidad. Esto incluye todas las funciones compartidas por los juegos, como cuentas, ingreso al juego, elementos sociales, compras y otros, que llegan al jugador mediante plataformas, integraciones SDK y API directas. 

Ya que el equipo de Plataforma del jugador es responsable por todo lo que rodea a la experiencia de juego, gran parte de las tareas de desarrollo de Xbox Game Pass recayó sobre ellos. Esto requirió un espíritu colaborativo, una mente abierta y una gran determinación por parte de un equipo muy trabajador, que llevó a cabo esta tarea mientras proporcionaba soporte continuo para los videojuegos de Riot disponibles y los que estaban por venir.

Un comienzo... ¡rápido!

En un principio hubo muchas incógnitas debido a que Riot Games fue pionero en ofrecer videojuegos gratis en PC y dispositivos móviles con Xbox Game Pass. Además, queríamos mejorar la experiencia de juego otorgando recompensas en los juegos a todos aquellos que vincularan sus cuentas. Al trabajar en un proyecto de esta escala, tratamos de simplificarlo y dividirlo en flujos independientes para maximizar la autonomía y el enfoque, y así disminuir las reuniones sin objetivos en común.

Para lograr todo esto, el equipo de administración de programa trabajó en conjunto con Microsoft para planificar las entregas más importantes. Esta planificación garantizó que las personas correctas trabajaran en el proyecto en el momento preciso. El equipo de administración del programa de Plataforma del jugador organizó rituales y ceremonias tanto para Plataforma del jugador como para los equipos de juego, publicidad, soporte al jugador y otros grupos de interés de Riot. Crearon estrategias y escalaron problemas complejos entre varios equipos de juego y cientos de personas en Plataforma del jugador.

El diseño para Game Pass

Antes de crear sistemas nuevos o trabajar con los existentes, debe haber un entendimiento colectivo del problema y de cuál sería la mejor opción para los jugadores. Dentro de Plataforma del jugador, el diseño de experiencia de usuario (UX) es clave para crear experiencias de juego positivas, por lo que tuvo un papel importante en la asociación con Xbox Game Pass. Aunque el diseño suele asociarse con las interfaces finales bien pulidas, es aún más importante en la planificación de interacciones sin fricción entre los jugadores y los sistemas y productos complejos. Ahora bien, puede que se pregunten: ''¿Qué tan difícil es permitir que los jugadores vinculen sus cuentas de Xbox Game Pass?''. Pues, en realidad, ¡es muy complicado!

Al comienzo de la asociación entre Riot y Microsoft, los líderes de UX se comunicaron con otros líderes para crear escenarios ''mínimamente aceptables'' para los jugadores, con la información de varias áreas y disciplinas sobre el tiempo, los socios y los recursos necesarios para hacer de estos escenarios una realidad. Nos enfocamos en particular en los riesgos más grandes para la experiencia de juego, ya que una vez que acordáramos que un objetivo compartido complejo valía la pena, podíamos combinar nuestra experiencia para conseguir lo que parecía imposible (más detalles sobre el proceso inicial para definir los escenarios mínimamente aceptables en el artículo de Medium sobre la UX de Riot Games (contenido en inglés).
 

''La colaboración entre dos empresas siempre es un gran desafío. Se trata de terminologías, funciones y suposiciones distintas. Tuvimos que indagar para descubrir cómo funcionaba la experiencia de los sistemas de autenticación de Microsoft y de la instalación de Game Pass para tener en cuenta esos aspectos al desarrollar la experiencia de principio a fin y también al evaluar qué necesitaríamos exactamente para conseguir una experiencia mínimamente aceptable''.

- Cheryl Platz
 

Riot Games Xbox Game Pass UX

 

Con los primeros flujos terminados, el equipo de UX trabajó en descifrar los detalles respecto a qué necesitaría cada punto de contacto orientado al jugador para conseguir una integración fluida, sin importar quiénes fueran los jugadores o de dónde provinieran. El equipo se aseguró de que los jugadores veteranos de Riot pudieran vincular su membresía de Game Pass directamente desde dentro del juego o a través del cliente de Riot con una experiencia fluida, tal como si fueran jugadores de Riot nuevos que ingresan desde la aplicación de Game Pass por primera vez.

Asociar plataformas de dos empresas distintas por primera vez generalmente resulta en situaciones nuevas que tanto el equipo del Cliente de Riot como el equipo de Xbox nunca habían enfrentado y que debieron resolver para obtener una experiencia de juego increíble. Por ejemplo, el modelo de seguridad distintivo de Microsoft le otorgó una oportunidad interesante a Plataforma del jugador para explorar la estandarización de plataformas de autorización e identificación. Una comunicación abierta y una colaboración activa con Microsoft ayudaron a orientar los objetivos y garantizar un progreso sostenido en la dirección correcta.


''No es la primera integración que han hecho, pero creo que el método que usaron fue distinto, ya que estaban colaborando con nosotros, se asociaron para lograr el objetivo.  Fue algo colaborativo. Evolucionamos el código base en ambos extremos para poder tener el soporte que necesitaban. La funcionalidad lista para usarse de Microsoft no hubiera funcionado en este caso. No se hubiera podido por el factor temporal''.

- Luther Baker 
 

Con los documentos de descubrimiento iniciales (a veces llamados predescubrimiento), los diseñadores debieron identificar la situación del momento y resolver los prerrequisitos al preguntarse: ''¿Cómo alcanzamos el resultado que queremos obtener?''. A través de varios métodos, como la diagramación de escenarios y los flujos de usuarios, los diseñadores de Microsoft y Plataforma del jugador trabajaron en conjunto para desarrollar herramientas que se compartieron con las áreas de ingeniería, productos y control de calidad para garantizar flujos que cumplieran las expectativas. También se estableció un circuito de retroalimentación constante para evaluar los servicios y las capacidades disponibles para proporcionar la mejor experiencia posible.


''En ese caso, es mejor estar equivocados como UX que estar en lo correcto porque es probable que la gente note algún detalle y nos diga: 'Oigan, esto no es como debería ser'. Es mejor cometer errores al principio porque podemos discutirlo, en lugar de gastar tiempo en tratar de descubrir la respuesta correcta para luego crear algo''.

- Melody Seng
 

Las herramientas evolucionaron constantemente, incluso después de aprobarlas. Tuvimos algunos casos extremos que necesitaron más investigación e iteración para resolverse. Trabajar directamente con los equipos de ingeniería y tecnología fue fundamental para llegar a un entendimiento mutuo. 
 

Riot Games Xbox Game Pass User Flows


La creación de servicios casi en tiempo real

Para ofrecer la mejor experiencia de usuario posible con Riot y Xbox Game Pass, quisimos que los jugadores desbloquearan contenido nuevo dentro del juego de forma inmediata al vincular sus cuentas activas de Xbox Game Pass, lo cual requirió de mucho ingenio. El equipo de experiencia de contenido colaboró con el equipo de cuentas (dentro de Plataforma del jugador) y decidieron que este último mandara un mensaje al Bus de eventos de Riot (el método más nuevo de comunicación por mensajería de Riot) cada vez que un jugador vinculara o desvinculara su cuenta de Xbox. Al recibir el mensaje, el servicio que esperaba ese tema en particular podía reaccionar y procesar el evento. Ya que era posible que un jugador vinculara su cuenta de Xbox con Riot sin tener Game Pass activo, nuestro equipo necesitaba consultar la API de Xbox para obtener la información usando los datos suministrados por la vinculación de la cuenta, y el equipo de cuentas debía guardar esa información en otro servicio.  Sin embargo, eso solo resolvía parte del problema, ya que aún necesitábamos comprobar si el jugador tenía una cuenta de Xbox Game Pass activa.

El equipo de experiencia de contenido (parte de Plataforma del jugador) desarrolló el Servicio de suscripción de entrada (GSS), que funciona como una fuente de fidelidad dentro de Riot para verificar el estado de Game Pass de cualquier jugador. Esto significaba que cada vez que un servicio necesitara verificar cualquier contenido de suscripción podían hacerlo con GSS y así obtener una respuesta con baja latencia y alta fidelidad sobre los beneficios que debería tener un jugador. GSS consigue la información al procesar los eventos de vinculación de cuentas del equipo de cuentas y al usar la API de Microsoft para poder verificar si los jugadores tienen un estado de Game Pass activo. La información se transmite a otros servicios de Riot a través de una terminal HTTP API para que otros equipos puedan utilizarla en otras situaciones. Por ejemplo:

  • Plataforma de acceso al contenido: Añade contenido específico de suscripción al inventario del jugador

  • Martech: Muestra publicidad específica según el estado actual de Game Pass del jugador

  • Soporte al jugador: Los agentes de Soporte al jugador utilizan la información para procesar las solicitudes de jugador relacionadas con la suscripción de Xbox

  • Experiencia web (WebEx): Muestra el estado de suscripción del jugador en la página web de administración de cuentas de jugadores

Cuando un jugador vinculaba su cuenta de Riot con la cuenta de Xbox Game Pass, GSS consultaba la API de Microsoft Xbox para verificar el estado de Game Pass del jugador utilizando la información de vinculación de cuenta, luego guardaba esa información en una base de datos persistente y la actualizaba con regularidad, manteniendo su disponibilidad para consultas al dar acceso al cliente mediante la API. Suena bastante simple, ¿verdad? 

Un jugador podía activar el Game Pass en cualquier momento luego de vincular sus cuentas de Riot y Xbox. El servicio solo podía consultar con cierta regularidad la API de Xbox para verificar si un jugador tenía un estado activo. Para dar la mejor experiencia de juego posible, queríamos que los jugadores accedieran al contenido de suscripción de forma inmediata al vincular y activar su Game Pass, por lo que era necesario consultar el estado con frecuencia. Pero ¿cuál era la frecuencia necesaria? Una vez por minuto hubiera sido genial, pero no es una buena práctica realizar millones de solicitudes por minuto en una API solo para verificar el estado. En especial, porque el 99% de las veces el estado no cambia entre solicitudes.

El equipo se enfocó en aquellas situaciones que podrían reaccionar a las interacciones con jugadores del lado de Riot, como cuando un jugador iniciara el cliente del juego, pues ese sería el momento ideal para actualizar el estado de Game Pass. Sin embargo, actualizar es una solicitud externa de HTTP que requiere alrededor de 1 segundo, y el cliente principal de GSS, la Plataforma de acceso de contenido (CAP), necesitaba una respuesta en menos de 50 milisegundos, ya que era parte de la ruta de tiempo crítico que busca en el inventario del jugador. Era imposible reducir una solicitud externa de un segundo a 50 milisegundos, así que el equipo tuvo que ponerse creativo. Decidieron regresar los valores guardados en ese momento, que se habían obtenido de la actualización anterior u originalmente luego de vincular la cuenta, y provocar una actualización asíncrona en el sistema interno si el valor guardado tenía más de dos minutos de antigüedad. Si el servicio detectaba un cambio en el estado de Game Pass luego de la actualización asíncrona, enviaría un mensaje a través del servicio de mensajería de Riot al cliente del juego para que el juego obtuviera los privilegios desde CAP y así garantizar que el jugador recibiera el contenido de la suscripción sin tener que actualizar el cliente de forma manual.


''Nuestro objetivo principal era reducir la latencia al mínimo, ya que tenemos un requisito de tiempo bastante estricto. El tiempo es de 50 ms para que CAP consulte y verifique si un jugador tiene un estado activo o inactivo en Game Pass, lo que es un servicio casi en tiempo real en este sentido. Si no respondemos en ese tiempo, CAP finaliza la consulta, y esto podría significar que un jugador no obtenga el contenido que debería obtener''. 

- Vasily Katraev
 

Wild Rift no utiliza el sistema CAP para el inventario de jugador, así que necesitarían verificar directamente con el servicio de suscripciones si el jugador tiene una suscripción de Game Pass activa. Para cumplir con el requisito de latencia de 50 ms, el equipo de experiencia de contenido ubicó sus servicios, junto con CAP y administración de cuentas, en cuatro centros de datos repartidos por el mundo para acercarse tanto como fuera posible a nuestros jugadores.  

Prelanzamiento y solución de las limitaciones en la base de datos para el lanzamiento

Días antes del lanzamiento oficial, el equipo realizó un prelanzamiento para probar la vinculación entre las cuentas de Riot Games y Xbox Game Pass. En ese momento, encontraron varios errores críticos y los solucionaron antes del lanzamiento oficial.

Una de las preocupaciones era la cantidad de cargas de usuario en el servicio de privilegios, que es responsable de darles a los jugadores acceso a los objetos de todos los juegos de Riot. Este servicio recibe muchas solicitudes de lectura, y en algunos lugares, ¡hasta 800 000 solicitudes por minuto! Para desbloquear los beneficios de los jugadores, cada solicitud de privilegios desencadenaba una solicitud subsiguiente a otro sistema para verificar el estado de Game Pass antes de otorgar los beneficios al jugador. La carga y complejidad adicional que introdujo este flujo causaron riesgos de falta de confiabilidad y ralentizaron las respuestas, con una variedad de consecuencias en el proceso.

El equipo había probado muchos escenarios posibles, pero sabía que un prelanzamiento aumentaría la confianza y garantizaría un sistema sólido. Un prelanzamiento les permitiría ''encender el sistema'' por completo sin que el contenido de Xbox Game Pass se encontrara disponible para los jugadores. Podrían observar la carga que el sistema debería soportar y el comportamiento exacto que deberían esperar antes del lanzamiento oficial. En el prelanzamiento, observaron una mala configuración en un grupo de conexiones que habría llevado a una falla durante el lanzamiento, la cual hubiera evitado que los jugadores recibieran sus beneficios.

El equipo también descubrió un problema en la capacidad de escritura de la base de datos. La arquitectura de ese momento* impedía el escalamiento a cuentas por el aumento de la carga de jugadores durante el lanzamiento. Una forma típica de administrar la carga de un servicio como este es permitir el acceso en etapas. El equipo decidió controlar el flujo de jugadores dividiendo el marketing en varias oleadas. De esta forma, la entrada de los jugadores tomaría más tiempo, y el equipo podría asegurarse de que tuvieran capacidad suficiente para cada oleada de jugadores mientras el material de marketing se cargaba en etapas. Al trabajar con el equipo de marketing, pudieron mantener la capacidad de escritura bajo el 50%. 

*Desde entonces, hemos reformado la capacidad técnica de nuestra base de datos para poder escalar horizontalmente en los cambios de cuentas.
 

Gráfico: Creación de cuentas y conexiones de Xbox por hora durante el lanzamiento.
Gráfico: Creación de cuentas y conexiones de Xbox por hora durante el lanzamiento.


Mentalidad antes que habilidad 

Además de la gran habilidad técnica necesaria para integrarnos con Xbox Game Pass, hubo habilidades humanas que jugaron un papel crucial. Fueron fundamentales la humildad, la curiosidad y la habilidad para colaborar y comunicarnos abiertamente con Microsoft, tanto de manera interna como externa. Este proyecto solo duró seis meses, pero involucró cientos de personas en horarios rotativos y el aprendizaje de sistemas nuevos. Fue importante ver las cosas desde otra perspectiva y dejar que los expertos del tema tomaran la delantera para que no hubiera personas o equipos que manejaran ciertos aspectos sin necesidad de hacerlo.


''La manera en la que la gente abordó el proyecto y se conectó con él realmente hizo la diferencia''.

- Nate Portner
 

Esta asociación destacó muchos de los valores centrales de Riot Games. Durante todo el proceso, el equipo se preguntó constantemente: ''¿Cómo afectará esta experiencia a los jugadores?''. Se colocaron en una posición de pensar siempre en ''la experiencia del jugador por sobre todo'', y todo Riot se reunió para trabajar en algo que impacta a todos los videojuegos de la empresa.
 

''Cada parte hizo un trabajo excelente al enfocarse en cómo cada decisión afectaría a los jugadores.  No quisimos crear falsas expectativas para los jugadores en ningún momento''.

- Matt Hawkins

En resumen

Aunque hubo mucho más trabajo del que pudimos narrar en este artículo de tecnología, esperamos haberles dado una idea sobre Plataforma del jugador y los servicios que se desarrollaron y se suministraron para la asociación entre Riot y Xbox Game Pass. Fue necesaria la dedicación y el trabajo duro de cientos de personas para construir y continuar construyendo experiencias de juego impresionantes.