Le 13 juin 2022, Riot a annoncé un nouveau partenariat avec Microsoft, afin de proposer nos plus gros jeux dans le Xbox Game Pass. Ce partenariat a permis de rassembler deux des plus grandes entreprises de jeu vidéo au monde autour d'un amour commun pour les jeux compétitifs tournés vers les joueurs. Six mois plus tard, nous avons réussi à tenir cette ambitieuse promesse et à sortir nos plus grands titres sur le Game Pass.
Aujourd'hui, nous aimerions vous emmener en coulisses et vous parler d'une équipe dont vous n'avez peut-être jamais entendu parler auparavant : l'équipe Player Platform.
À quoi sert l'équipe Player Platform ?
L'équipe Player Platform (PP) fait le lien entre les jeux de Riot et nos joueurs afin de bâtir un écosystème et une communauté multi-jeux. Elle s'occupe de créer une expérience joueur connectée et de lier les joueurs à notre contenu à travers l'ensemble de notre catalogue. En d'autres termes, cette équipe travaille sur tout ce qui concerne les jeux Riot et qui n'est pas directement lié au gameplay. Cela inclut les éléments compatibles avec le jeu, comme les comptes, les connexions, les fonctionnalités sociales, les achats, etc., qui sont mis en ligne via des portails, des intégrations SDK et des API directs.
Puisque cette équipe est responsable de votre expérience de jeu, elle devait s'occuper d'une grande partie du travail pour le Xbox Game Pass. Tout cela a requis un grand esprit d'équipe, un état d'esprit ouvert et de nombreuses personnes studieuses et déterminées pour accomplir cette tâche, tout en continuant de prendre en charge les jeux actuels et futurs de Riot.
Pour commencer... en quelques mots
Puisque Riot Games était le tout premier partenaire du Xbox Game Pass à offrir des jeux gratuits sur PC et mobile, il y avait déjà pas mal de données inconnues. Nous souhaitions également améliorer l'expérience joueur en proposant des récompenses en jeu à toutes celles et ceux qui avaient lié leur compte. Avec un projet d'une telle envergure, nous avons essayé de simplifier notre approche au maximum. Nous l'avons séparé en plusieurs flux de travail indépendants pour maximiser la prise en main et la concentration et réduire le nombre de réunions sans objectifs communs.
Pour gérer tout ça, la gestion de programme a collaboré étroitement avec Microsoft pour planifier les plus grosses sorties. Ce fut une étape cruciale, car cela nous a permis de nous assurer que les bonnes personnes prenaient part au projet au bon moment. L'équipe de gestion de programme de la PP a mis en place des processus et des rituels au sein de l'équipe, mais aussi de tout Riot, aux côtés des équipes de jeu, de la publication, du support joueurs et d'autres acteurs essentiels. Tous ont élaboré des stratégies et identifié des problèmes complexes à travers plusieurs équipes et les centaines de personnes constituant la Player Platform.
Concevoir pour le Xbox Game Pass
Avant de concevoir de nouveaux systèmes ou de retravailler sur ceux qui existaient déjà, il a fallu obtenir une compréhension partagée du problème et de ce qui pourrait satisfaire les attentes des joueurs. La conception d'une expérience utilisateur (UX) au sein de la Player Platform est essentielle, car elle permet de créer des expériences positives pour le joueur. Elle a joué un rôle important dans notre partenariat avec le Xbox Game Pass. Même si le design est souvent associé à des interfaces finales sophistiquées, il est d'autant plus important parce qu'il permet de planifier les interactions des joueurs avec des produits et systèmes complexes et de les rendre plus fluides. Vous vous demandez peut-être alors : à quel point est-ce difficile de permettre aux joueurs de lier leur compte Xbox Game Pass ? Eh bien, laissez-moi vous dire que c'est assez compliqué !
Dès les débuts de notre partenariat avec Microsoft, les dirigeants de l'équipe UX se sont entretenus avec les responsables d'équipe pour piloter la création de scénarios joueurs « de satisfaction minimale », tout en utilisant les informations des multiples départements et disciplines pour savoir quel temps, quels partenaires et quelles ressources seraient nécessaires pour donner vie à ces scénarios. Nous nous sommes particulièrement concentrés sur les plus gros risques qu'implique une bonne expérience joueur. Plus nous nous mettons d'accord tôt qu'un objectif commun difficile en vaut la peine, plus vite nous pourrons combiner nos expertises pour rendre l'impossible justement possible. (Pour en savoir plus sur le processus initial de création de ces fameux scénarios, consultez l'article Medium sur l'UX de Riot Games.)
« Une collaboration entre deux entreprises constituera toujours un immense défi. Nous avons des terminologies différentes, des rôles différents, des hypothèses différentes. Nous avons dû essayer de comprendre comment fonctionnaient les systèmes d'authentification de Microsoft et les expériences d'installation du Game Pass pour pouvoir prendre tout cela en compte, au moment d'estimer le développement de l'expérience globale et d'identifier ce qui était nécessaire pour fournir une expérience joueur un minimum appréciable. »
- Cheryl Platz

Maintenant que les processus initiaux étaient mis en place, l'équipe UX a ensuite cherché à savoir de quoi aurait besoin chaque point de contact avec les joueurs, de sorte à garantir une intégration fluide pour les joueurs, peu importe qui ils sont et peu importe où ils se trouvent. L'équipe s'est assuré qu'un joueur expérimenté qui lie son abonnement Game Pass directement en jeu ou via le client Riot aurait la même expérience fluide qu'un nouveau joueur de Riot qui venait pour la première fois, depuis de l'application du Game Pass.
Associer pour la première fois les plateformes de deux entreprises différentes présente souvent de nouveaux obstacles, que l'équipe du client Riot ou celle de Xbox ont dû résoudre au moment de créer une bonne expérience joueur. Par exemple, le système de sécurité différent de Microsoft a permis à l'équipe Player Platform d'explorer une standardisation des plateformes d'autorisation et d'identification. Il était important de communiquer clairement et de collaborer activement avec Microsoft, afin de pouvoir orienter nos objectifs et nous assurer que nous avancions dans la bonne direction.
« Nous ne sommes pas leur première intégration, mais je pense que la méthode utilisée était différente. Ils ont travaillé avec nous, ils ont vraiment collaboré pour que ça fonctionne. Nous avons œuvré main dans la main et nous avons fait évoluer notre propre code pour pouvoir mettre en œuvre ce dont ils avaient besoin. Dans ce cas, la fonctionnalité prête à l'emploi de Microsoft n'aurait pas fonctionné d'un point de vue timing. »
- Luther Baker
En commençant par un plan de découverte initial (parfois appelé pré-découverte), les designers ont dû analyser la structure actuelle et identifier nos futurs besoins en se demandant : « Comment arriver au résultat souhaité ? ». Grâce à diverses méthodes telles que l'établissement d'hypothèses et de représentations de flux d'utilisateurs, les designers de Microsoft et de l'équipe Player Platform ont coopéré pour créer de nombreux artéfacts partagés entre les ingénieurs, l'équipe en charge du produit et l'équipe d'assurance qualité. Le but était de s'assurer que les flux correspondent aux attentes déterminées et qu'une boucle de retours constants soit mise en place pour identifier les services et fonctionnalités disponibles pour proposer la meilleure expérience.
« Dans ce cas, nous préférons que l'équipe UX se trompe, car les joueurs auront plus tendance à nous donner des retours s'ils remarquent des choses qui ne correspondent pas à leurs attentes. Nous préférons nous tromper dès le début pour pouvoir en parler, au lieu de passer du temps à essayer de comprendre quelle est la bonne réponse pour ensuite créer quelque chose »
- Melody Seng
Les artéfacts ont constamment évolué, même lorsqu'on ne travaillait pas. Des situations marginales ont été découvertes et ont nécessité plus d'analyses et plus d'itérations pour être résolues. Travailler directement avec les ingénieurs et les équipes techniques nous a permis de parvenir à cette compréhension partagée.

Créer des services quasiment en temps réel
Pour fournir la meilleure expérience utilisateur avec Riot et le Xbox Game Pass, nous voulions que les joueurs déverrouillent du nouveau contenu en jeu dès qu'ils ont associé leur compte Xbox Game Pass, ce qui a demandé beaucoup d'ingéniosité. L'équipe Content Experience s'est alliée à l'équipe chargée des comptes (qui fait partie de la PP) et s'est mise d'accord avec elle : un message serait envoyé sur le Riot Event Bus (la dernière itération de Riot concernant la communication par message), chaque fois qu'un joueur associait ou désassociait son compte Xbox. Une fois le message reçu, le service qui écoutait le topic de l'agent de messages pouvait ensuite réagir et traiter l'événement. Puisqu'un joueur pouvait lier son compte Xbox à Riot sans avoir un abonnement Game Pass actif, l'équipe devait également demander à l'API d'Xbox d'obtenir cette information, en utilisant le jeton fourni par l'association de compte et en l'entreposant dans un nouveau service. Cependant, cela n'a résolu qu'une partie du problème, puisqu'il fallait quand même vérifier qu'un joueur possédait un abonnement Xbox Game Pass actif.
L'équipe Content Experience (qui fait aussi partie de la PP) a conçu le Gateway Subscription Service (un service de passerelle d'abonnement) qui est la seule source de vérité, au sein de Riot, concernant le statut du Game Pass d'un joueur. Cela signifie qu'à chaque fois qu'un service devait vérifier un contenu lié à l'abonnement, il se servait de ce service pour obtenir une réponse haute fidélité et à faible latence concernant les avantages disponibles pour ce joueur. Le Gateway Subscription Service (GSS) obtient ces données en analysant les événements d'association de compte de l'équipe Comptes et en utilisant l'API de Microsoft pour vérifier sur les joueurs ont un abonnement Game Pass actif. Il envoie ces données aux autres services Riot via un point de terminaison d'API HTTP pour que les autres équipes puissent utiliser ces informations pour différentes situations, comme :
- Plateforme d'accès au contenu : ajouter du contenu spécifique en fonction de l'abonnement à l'inventaire du joueur
- Technologie marketing : afficher des publicités spécifiques selon le statut Game Pass d'un joueur
- Support joueurs : les employés du support utilisent ces informations pour gérer les tickets des joueurs qui concernaient les abonnements Xbox
- Expérience web (WebEx) : afficher le statut d'abonnement du joueur sur la page de gestion du compte
Lorsqu'un joueur liait son compte Riot à son compte Xbox Game Pass, le GGS demandait à l'API de Microsoft Xbox d'obtenir le statut Game Pass du joueur en utilisant le jeton de l'association de compte. Il enregistrait ensuite cette information dans une base de données permanente, la mettait régulièrement à jour et la rendait disponible pour pouvoir fournir l'accès au client via l'API. Plutôt simple, non ?
Un joueur pouvait activer son Game Pass à tout moment après avoir associé ses comptes Riot + Xbox. Le service pouvait envoyer régulièrement des requêtes à l'API d'Xbox pour vérifier qu'un joueur avait un abonnement actif. Pour fournir la meilleure expérience aux joueurs, nous voulions qu'ils aient immédiatement accès au contenu d'abonnement après avoir lié et activé leur Game Pass. Il fallait donc pouvoir envoyer souvent des requêtes. Mais quelle était la fréquence idéale ? Toutes les minutes auraient été une bonne fréquence, mais ce n'est pas très intéressant d'envoyer des millions de requêtes toutes les minutes sur un API juste pour vérifier un statut, surtout que 99 % du temps, il n'y aurait aucun changement de statut entre les requêtes.
L'équipe s'est donc concentrée sur les moments où elle pouvait réagir aux interactions avec les joueurs du côté de Riot. Par exemple, lorsqu'un joueur lançait le client de jeu, quel était le meilleur moment pour actualiser le statut du Game Pass ? Le rafraîchissement est une requête HTTP externe qui prend environ une seconde et le client SPA principal, la plateforme d'accès au contenu, avait besoin de réponses en moins de 50 millisecondes puisqu'il faisait partie du processus incompressible de récupération de l'inventaire du joueur. C'était impossible de faire rentrer une requête externe d'une seconde en 50 millisecondes, il a donc fallu se montrer créatifs. L'équipe a décidé de récupérer la valeur enregistrée, qui était obtenue lors de la dernière actualisation ou après l'association de compte, pour ensuite lancer une actualisation asynchrone en arrière-plan si la valeur enregistrée datait de plus de deux minutes. Si le service observait un changement du statut Game Pass suite à cette actualisation asynchrone, il envoyait un message via le service de messagerie de Riot vers le client du jeu pour que le jeu récupère les autorisations de la plateforme et que le joueur obtienne son contenu d'abonnement sans avoir à relancer manuellement le client.
« Notre objectif principal était de réduire la latence autant que possible, puisque notre délai imposé est strict. Il faut 50 ms à la plateforme d'accès au contenu pour nous joindre et savoir si l'abonnement Game Pass d'un joueur est actif ou non, ce qui constitue presque un service en temps réel. Si nous ne parvenons pas à répondre dans ce laps de temps, la requête de la plateforme d'accès au contenu va expirer et il se peut que des joueurs n'obtiennent pas le contenu qu'ils sont censés avoir. »
- Vasily Katraev
Wild Rift n'utilise pas ce système de plateforme d'accès au contenu pour son inventaire de joueur. Le jeu devait donc directement demander au service d'abonnement si le joueur disposait d'un abonnement Game Pass actif. Pour respecter cette latence de 50 ms, l'équipe Content Experience a combiné ses services avec la plateforme d'accès au contenu et les services de gestion du compte en quatre centres de données à travers le monde pour rester aussi proche que possible des joueurs.
Lancement non officiel et solution pour la limitation de la base de données
Quelques jours avant la sortie pour les joueurs, l'équipe a effectué un lancement non officiel pour tester l'association entre les comptes Riot et le Xbox Game Pass. Elle a pu détecter de nombreux bugs importants et les résoudre avant le véritable jour de lancement.
Nous nous inquiétions particulièrement de la charge d'utilisateurs sur le service Autorisations qui s'occupe d'accorder l'accès aux objets sur tous les jeux Riot. Ce service reçoit énormément de requêtes de lecture : jusqu'à 800 000 requêtes par minute dans certains lieux ! Pour pouvoir déverrouiller les avantages des joueurs, chaque demande d'autorisation entraînait alors une requête vers un autre système qui vérifiait que le joueur avait le Game Pass, avant d'assembler et de distribuer ses avantages. Le stress et la complexité supplémentaires suscités par ce flux ont entraîné des risques de manque de fiabilité ou de ralentissement de réponses qui auraient des conséquences descendantes.
L'équipe avait massivement testé plusieurs hypothèses, mais elle s'est rendu compte qu'un lancement non officiel permettrait de s'assurer qu'elle avait mis en place un système qui allait tenir le coup. Elle a pu activer le système à plein régime, en masquant simplement le contenu du Xbox Game Pass aux joueurs. Elle a pu ainsi voir la pression que subirait le système et prévoir ce qu'il se passerait avant le lancement officiel. Grâce à ce lancement secret, l'équipe a découvert une mauvaise configuration du pool de connexions qui aurait probablement entraîné un échec du lancement avec de nombreux joueurs incapables de récupérer leurs avantages.
Elle a également rencontré un problème avec la capacité d'écriture de notre base de données. L'architecture existante* l'empêchait de s'adapter à la charge de joueurs qui allait survenir lors du lancement de notre partenariat. Une des manières les plus communes de gérer cette charge sur un service est de distribuer l'accès en plusieurs vagues. L'équipe a décidé d'essayer de contrôler le flux de joueurs en s'occupant du marketing en plusieurs étapes. Cela permettrait d'étendre les vagues de joueurs sur une période plus longue, et l'équipe pouvait enfin s'assurer d'avoir une capacité de service suffisante pour chaque nouvelle vague de joueurs, au fur et à mesure que les articles marketing sortaient. Avec la précieuse aide du marketing, l'équipe a pu rester sous 50 % de sa capacité d'écriture.
*Depuis, nous avons changé le stack technique de notre base de données pour que l'ajustement soit plus horizontal lors des changements de compte.

L'état d'esprit prime sur les compétences
Au-delà des vastes compétences techniques requises pour s'intégrer au Xbox Game Pass, les compétences personnelles ont également joué un grand rôle. Il était indispensable de savoir faire preuve d'humilité, de rester curieux et d'être en mesure de collaborer et de communiquer ouvertement en interne et en externe avec Microsoft. Même si ce projet n'a duré que six mois, il a mobilisé des centaines de personnes. Il a fallu adapter les horaires de travail et apprendre de nouveaux systèmes. C'était important de prendre du recul et de laisser les experts prendre le relais de différentes manières, afin qu'une personne ou une équipe ne soit pas inutilement en charge de quelque chose.
« La manière dont les gens ont approché le projet et se sont réunis autour de cette mission commune a vraiment permis de faire la différence. »
- Nate Portner
Ce partenariat a permis de mettre en valeur de nombreuses valeurs chères à Riot Games. Tout au long du processus, l'équipe n'a cessé de se demander : « Comment cette expérience va-t-elle affecter nos joueurs ? ». Elle n'a pas failli à notre plus grand objectif de « l'expérience joueur d'abord », et tous les employés de Riot se sont serré les coudes pour travailler sur ce projet qui impacterait l'ensemble de nos jeux.
« Chaque discipline a fait du bon travail en se demandant constamment comment nos décisions allaient impacter les joueurs. Nous voulions à tout prix éviter de poser de mauvaises attentes sur nos joueurs. »
- Matt Hawkins
Conclusion
Même si cet article technique ne peut pas couvrir toute la masse de travail abattue, nous espérons que vous avez pu en apprendre davantage sur l'équipe Player Platform et les services qu'elle a conçus et fournis pour le bien du partenariat Riot/Xbox Game Pass. Des centaines de personnes se sont unies et se sont données corps et âme pour continuer de bâtir des expériences inoubliables.