Em 13 de junho de 2022, a Riot anunciou uma nova parceria com a Microsoft para levar nossos maiores jogos ao Xbox Game Pass. Essa parceria reuniu duas das maiores empresas de jogos do mundo em torno de um amor compartilhado por jogos competitivos focados em jogadores. Seis meses depois, concretizamos esse enorme comprometimento e lançamos nossos maiores títulos no Game Pass.

Agora é hora de nos voltarmos para o que ocorreu nos bastidores nesses meses e falarmos de uma equipe que talvez vocês não conheçam até agora: a de Plataforma de Jogadores.

O que é Plataforma de Jogadores?

É a união entre os jogos da Riot e nossos jogadores para compor um ecossistema e uma comunidade multijogos. A equipe fornece uma experiência que permeia os nossos jogos e conecta os jogadores aos nossos conteúdos. Em outras palavras, a Plataforma de Jogadores integra e age em quase tudo que envolve os jogos da Riot e que não lide diretamente com mecânicas de jogo. Isso inclui os recursos do modelo de aprendizado para contas, os registros dos jogos, a parte social, de compras e muito mais, atribuídos por portais, integrações SDK e APIs diretas. 

Como ela é responsável por tudo acerca da experiência de jogo, boa parte do trabalho com o Xbox Game Pass precisou ser criada pela Plataforma de Jogadores. Essa ação exigiu espírito colaborativo, mentes abertas e muitas pessoas determinadas e empenhadas a cumprir esse compromisso e manter o suporte dos jogos atuais e futuros da Riot.

Começando... a todo vapor!

A Riot Games foi a primeira parceria com o Xbox Game Pass a oferecer jogos gratuitos para PC e dispositivos móveis, criando também vários desafios. Além disso, queríamos aprimorar a experiência da comunidade, concedendo recompensas no jogo a todos que vinculassem suas contas. Ao nos depararmos com um projeto dessa magnitude, tentamos simplificá-lo em fluxos de recursos independentes para otimizar os setores e reduzir reuniões sem propósitos alinhados.

Nessa empreitada, o gerenciamento de programas trabalhou lado a lado com a Microsoft para planejar a conclusão de grandes projetos. Esse papel foi fundamental, garantindo que as pessoas corretas estivessem à frente do projeto no momento certo. A equipe de Gerenciamento de Programas realizou cerimônias pela Plataforma de Jogadores e em toda a Riot com as equipes de jogos, publicidade, suporte ao jogador e outras partes interessadas de extrema importância. Eles planejam e dimensionam problemas complexos entre diversas equipes de jogos e centenas de pessoas na Plataforma de Jogadores.

Preparação para o Game Pass

Antes de criarmos novos sistemas ou insistirmos nos existentes, foi necessário delimitar a ideia de problema e sucesso para os jogadores. O design de experiência de usuário na Plataforma de Jogadores é vital para criar uma experiência positiva para a comunidade e foi crucial na parceria com o Xbox Game Pass. Embora o design seja normalmente associado a interfaces bem-finalizadas, ele se estende a áreas ainda mais importantes no planejamento de interações de nossos jogadores com produtos e sistemas complexos para que aparentem ser mais confortáveis. Agora, vocês devem se perguntar: é tão difícil assim permitir que a gente vincule nossas contas ao Xbox Game Pass? Olha, a verdade é que sim, é algo bem complicado!

No início da parceria entre a Riot e a Microsoft, os líderes de UX apresentaram ideias para a criação de cenários focados na satisfação da comunidade e equipados com informações de múltiplas disciplinas e departamentos a respeito do tempo, parcerias e os recursos necessários para torná-los realidade. Focamos especialmente nos grandes riscos para uma excelente experiência para o jogador, porque o quanto antes estabelecêssemos que um objetivo conjunto de difícil aplicação valeria o esforço, mais rápido poderíamos unir nossas habilidades e tornar o impossível possível. (Leia mais sobre o processo inicial para definir essas diretrizes no artigo a seguir, disponível somente em inglês, Riot Games UX Medium.)
 

"A colaboração entre duas empresas sempre será um grande desafio. Terminologias, papéis e princípios diferentes. Tivemos que trabalhar muito para compreender como funcionavam os sistemas de autenticação da Microsoft com as experiências de instalação do Game Pass para que pudéssemos levá-las em consideração ao desenvolver a experiência ponta a ponta — e avaliar o que seria necessário para agradar a comunidade.​"

- Cheryl Platz
 

Riot Games Xbox Game Pass UX

 

Com o estabelecimento dos fluxos iniciais, a equipe de UX começou a trabalhar em quais meios de interação do jogador com o sistema seriam necessários para uma usabilidade clara para todos os jogadores, independentemente de quem fossem ou de onde viessem. A equipe quis garantir que um jogador veterano da Riot pudesse vincular sua assinatura do Game Pass pelo jogo ou no Cliente Riot e tivesse uma experiência tranquila da mesma forma que um novato vindo do Game Pass pela primeira vez.

Unir plataformas de duas empresas diferentes pela primeira vez sempre apresenta novos cenários que nem nossa equipe do Cliente Riot e nem a do Xbox havia resolvido anteriormente para oferecer uma boa experiência para o usuário. Por exemplo, o modelo diferente de segurança da Microsoft permitiu que a Plataforma de Jogadores pudesse explorar mais a fundo as plataformas de padronização de autorização e identidade. Uma comunicação franca e a uma colaboração ativa com a Microsoft nos ajudaram a orientar objetivos e certificaram que o progresso estava indo na direção desejada.
 

“Não somos a primeira integração que eles realizaram, mas acho que o método que usaram com a gente foi tão diferente que tiveram que trabalhar lado a lado com a nossa equipe para fazer funcionar.  Foi colaborativo. Trabalhamos dos dois lados do código-base para que pudéssemos atender o que eles precisavam. A funcionalidade 'fora da caixa' da Microsoft não funcionaria nesse caso e nem teria funcionado por uma questão assíncrona.”

- Luther Baker 
 

Começando pela documentação de descoberta inicial (às vezes chamada de pré-descoberta), os designers precisaram identificar o que estava acontecendo e descobrir os pré-requisitos necessários para atingir o objetivo final. Foram utilizados diversos métodos, como mapeamento de cenários e fluxos de usuários, e os designers da Microsoft e da Plataforma de Jogadores trabalharam em conjunto para criar artefatos compartilhados com engenheiros, QA e analistas de produtos para garantir que os fluxos estavam a par das expectativas, além da implementação de uma sequência de feedbacks para avaliar os serviços e recursos disponíveis para assegurar a melhor experiência possível.


“Em casos como esse, é melhor estar errado do que certo como UX, porque as pessoas sentem-se mais à vontade para falar e dar feedbacks caso percebam que algo não está em seu campo de conhecimento. É melhor fazer algo errado para que possamos resolver do que gastar uma enorme quantidade de tempo para descobrir qual é a resposta certa e depois criar algo.”

- Melody Seng
 

Os artefatos estão em constante evolução, mesmo depois da finalização. Foram descobertos casos mais críticos que exigiram mais investigação e iteração para serem resolvidos. Trabalhar diretamente com engenheiros e equipes de tecnologia foi fundamental para que todos pudéssemos entender os processos. 
 

Riot Games Xbox Game Pass User Flows


Criação de serviços quase em tempo real

A fim de gerar uma melhor experiência de usuário para a Riot e o Xbox Game Pass, queríamos que todos pudessem habilitar novos conteúdos dentro do jogo imediatamente após vincular suas contas Xbox Game Pass ativas, e isso exigiu muito trabalho. A equipe de Experiência de Conteúdo trabalhou em colaboração com a equipe de Contas (dentro da Plataforma de Jogadores) para que enviassem uma mensagem ao "Riot Event Bus" (o método mais recente de comunicação por texto da Riot) sempre que alguém vinculasse ou desvinculasse sua conta Xbox. Quando a mensagem fosse recebida, o serviço leria o tópico da mensagem, reagindo e processando o evento. Como era possível vincular uma conta Xbox à da Riot sem ter o Game Pass ativo, a equipe precisou também de uma API do Xbox para obter essa informação usando um token fornecido ao vincular a conta, sendo necessário que a equipe de Contas armazenasse esses tokens em um novo serviço.  No entanto, esse método só resolveu parte do problema, já que ainda teríamos que verificar se o jogador estava com a conta do Xbox Game Pass ativa.

A equipe de Experiência de Conteúdo (parte da Plataforma de Jogadores) construiu um Serviço de Assinatura de Gateway (GSS em inglês) que funciona como uma única fonte de verdade, pela Riot, para o estado do Game Pass, para quem quer que fizesse a solicitação. Isso significa que toda vez que um serviço precisasse conferir um conteúdo que exigisse conferência de assinatura ele chamaria esse GSS e obteria uma resposta em baixa latência e alta fidelidade sobre os benefícios que um jogador poderia obter. O GSS obtêm os dados acessando eventos de vinculação de conta fornecidos pela equipe de Contas e utilizando a API da Microsoft para conferir se um jogador está com o estado de Game Pass ativo. Ele concede esses dados a outros serviços da Riot por um ponto de extremidade HTTP da API. Assim, as outras equipes podem utilizar essa informação em diversos casos, como:

  • Plataforma de acesso a conteúdo: adiciona um conteúdo de assinatura ao inventário de um jogador.

  • Publicidade e tecnologia: exibe propagandas específicas de acordo com o estado atual do Game Pass.

  • Suporte ao Jogador: agentes utilizam a informação para processar os tickets relacionados a assinaturas Xbox.

  • Experiência Web (WebEx): exibir o estado da assinatura do jogador na página web de gerenciamento de conta.

Ao vincular uma conta Riot ao Xbox Game Pass, o GSS realizava uma consulta à API do Microsoft Xbox para obter o estado do Game Pass do jogador por meio de um token fornecido no momento da vinculação, salvava essa informação em um banco de dados persistente e o mantinha constantemente atualizado e disponível para acesso do Cliente por meio da API. Parece simples, não é? 

Um jogador pode ativar seu Game Pass a qualquer momento após vincular suas contas Riot e Xbox. O serviço ficaria disponível somente para buscar a API do Xbox e verificar se o jogador estava ativo. Para fornecer a melhor experiência de usuário, queríamos que todos pudessem ter acesso ao conteúdo de assinatura imediatamente após vincular e ativar o Game Pass, então era necessário realizar frequentemente essa verificação. Mas com que frequência? A cada minuto seria ótimo, mas não é prático realizar milhões de chamadas a cada minuto em uma API só para conferir o estado de alguma coisa, especialmente quando em 99% das vezes não haveria alteração do estado entre as chamadas.

A equipe priorizou a conferência desse estado em instâncias que reagissem a interações com os jogadores da parte da Riot, como quando como ao abrir o Cliente do jogo, para atualizar o estado do Game Pass. Entretanto, atualizações são uma chamada HTTP externa e levam cerca de 1s, e o cliente GSS principal, a Plataforma de Acesso a Conteúdos (CAP em inglês), precisava de respostas com retorno inferior a 50 milissegundos, já que ela fazia parte de um caminho vinculado a tempo, que acessava o inventário do jogador. Era impossível alocar uma chamada externa em 50 milissegundos, então a equipe teve que ser criativa. Ela decidiu retornar o valor atual arquivado que foi obtido na atualização anterior após a vinculação da conta e ativar uma atualização assíncrona no backend se o valor atualizado fosse obtido mais de dois minutos atrás. Se o serviço observasse uma mudança no estado do Game Pass após a atualização assíncrona, ele enviaria uma mensagem pelo serviço de mensagens da Riot para o Cliente do jogo a fim de buscar as informações da CAP para se certificar de que o jogador pudesse obter seu conteúdo de assinatura sem reabrir o Cliente manualmente.


“Nosso principal objetivo era reduzir a latência ao máximo, já que nossa janela de tempo era bastante restrita. Leva basicamente 50ms para a CAP nos chamar e obter a resposta se um jogador tem o estado do Game Pass ativo ou não, o que faz de nós basicamente um serviço em tempo real. Caso falhássemos em cumprir essa janela de tempo, a CAP encerraria a chamada e o jogador não receberia o conteúdo que deveria receber.”

- Vasily Katraev
 

O Wild Rift não utiliza o sistema CAP para o inventário dos jogadores, então eles precisariam perguntar diretamente ao serviço de assinaturas para conferir a atividade do Game Pass. Para atender ao requisito dos 50ms de latência, a equipe de Experiência de Conteúdo compartilhou seus serviços com a CAP e Gerenciamento de Conta em quatro centros de dados pelo mundo para torná-los o mais próximos possível dos nossos jogadores.  

Lançamento às cegas e contornos da limitação de dados

Dias antes do lançamento para a comunidade, a equipe realizou um lançamento às cegas para testar a vinculação entre contas Riot e o Xbox Game Pass. Ela encontrou diversos bugs e os corrigiu antes do lançamento oficial..

A maior preocupação era a quantidade de usuários no serviço de Titularidade, responsável por dar acesso a itens aos jogadores em todos os jogos da Riot. O serviço de Titularidade recebe muitos pedidos, cerca de 800 mil por minuto em algumas localidades! Para habilitar benefícios aos jogadores, cada chamada de Titularidade agora ativa uma chamada subsequente para chamar outro sistema para conferir se um jogador possuía o Game Pass antes de reunir e retornar os benefícios do Game Pass a um jogador. O estresse e a complexidade adicional que esse fluxo introduziu causaram riscos de falibilidade e retardaram o tempo de resposta, causando várias situações de lentidão.

A equipe foi capaz de prever diversos cenários, mas decidiu que um lançamento às cegas daria mais confiança para implementar um sistema tão robusto. Esse lançamento permitiu colocar o sistema "no ar" sem disponibilizar o conteúdo do Xbox Game Pass aos jogadores. A equipe pôde observar o andamento do estresse causado ao sistema e o que poderiam esperar antes do lançamento oficial. Através do lançamento às cegas, descobriu-se um erro de configuração no rol de conexões que acabaria gerando um lançamento com falhas, impedindo que os jogadores resgatassem seus benefícios.

A equipe também se deparou com um problema na capacidade de gravação em nosso banco de dados: a arquitetura atual* não permitia que ele escalasse para comportar o fluxo aumentado de jogadores durante o lançamento da nossa parceria. Um jeito comum de gerenciar tal fluxo em um serviço como esses seria permitir o acesso em ondas. A equipe decidiu tentar controlar a quantidade absurda de jogadores reduzindo a publicidade em diversas partes. Isso dispersaria as ondas de jogadores por um longo período e a equipe conseguiria garantir que teria capacidade de serviço para cada nova onda de jogadores, à medida que mais jogadores a acessassem. Por trabalhar com a publicidade, a equipe foi capaz de manter o fluxo abaixo de 50% da capacidade. 

*Nas mudanças de conta, já alteramos nosso sistema de acúmulo técnico de banco de dados para um escalamento mais horizontal.
 

Graph: Hourly Xbox account creations & links during launch.
Gráfico: criações de contas Xbox e links por hora durante o lançamento.


Habilidades interpessoais FTW 

Além das vastas habilidades técnicas que foram necessárias para integrarmos o Xbox Game Pass, as habilidades interpessoais foram cruciais para a realização do projeto. Manter a humildade, a curiosidade e a habilidade de colaborar e nos comunicarmos abertamente no meio interno e externo com a Microsoft foi algo fundamental. Embora esse projeto tenha levado somente seis meses, ele envolveu centenas de pessoas, horas de trabalho em turnos e o aprendizado de novos sistemas. Ele foi importante para que pudéssemos recuar um pouco e permitir que pessoas com experiência assumissem as rédeas e nos guiassem para que todos estivéssemos no mesmo caminho. 


“O modo como as pessoas lidaram com o projeto e como se comportaram durante o processo fez toda a diferença.”

- Nate Portner
 

Essa parceria destacou muitos dos Valores essenciais da Riot Games. Durante todo o processo, a equipe continuou a se perguntar: como essa experiência afetará nossos jogadores? Então, estabeleceu que a prioridade era a "Experiência do jogador em primeiro lugar", e toda a Riot se uniu para trabalhar em algo que impactasse todos os jogos da empresa.
 

“Cada disciplina fez um excelente trabalho de foco nas decisões que impactariam os jogadores.  Não queríamos gerar expectativas erradas para jogador algum.”

- Matt Hawkins

Resumo

Embora seja difícil resumir tanto trabalho em um artigo técnico, esperamos que vocês saiam sabendo mais a respeito da Plataforma de Jogadores e do serviço criado por ela e fornecido pela parceria Riot/Xbox Game Pass. Foi necessário contar com muita dedicação e com o trabalho árduo de centenas de pessoas que se esforçaram juntas para construir e continuar construindo experiências incríveis para toda a comunidade.