Il 13 giugno 2022, Riot ha annunciato una nuova collaborazione con Microsoft che avrebbe portato i nostri titoli più importanti su Xbox Game Pass. Questa collaborazione ha unito due delle più grandi aziende di gaming al mondo grazie alla nostra passione comune per i giochi competitivi incentrati sui giocatori. Dopo sei mesi, abbiamo rispettato questo monumentale impegno e abbiamo lanciato i nostri giochi principali su Game Pass.
In questo articolo, vogliamo dare uno sguardo al lavoro avvenuto dietro le quinte durante quel periodo e parlarvi di un team che forse non avete mai sentito nominare, quello delle piattaforme dei giocatori.
Che cos'è il team delle piattaforme dei giocatori?
Il team delle piattaforme dei giocatori forgia i collegamenti tra i titoli di Riot e i nostri giocatori per costruire un ecosistema e una community che abbraccino più giochi. I membri del team lavorano per creare un'esperienza interconnessa che unisce i giocatori e i contenuti dei nostri titoli. In altre parole, il team delle piattaforme dei giocatori si occupa di quasi tutti gli aspetti dei giochi di Riot che non riguardano direttamente il gameplay, tra cui le funzionalità universali degli account, l'accesso ai giochi, gli elementi social, gli acquisti e altro ancora, a cui i giocatori accedono attraverso portali, integrazioni di SDK e API specifiche.
Poiché il team delle piattaforme dei giocatori è responsabile per tutto ciò che è complementare alla vostra esperienza di gioco, sono stati loro a dover gestire gran parte del lavoro relativo a Xbox Game Pass. Questa operazione ha richiesto spirito collaborativo, mentalità aperta e un considerevole numero di persone determinate e instancabili che si sono occupate di questo progetto pur continuando a garantire supporto ai titoli di Riot già esistenti e a quelli in arrivo.
Cominciare... alla svelta!
Dato che quella con Riot Games era la prima collaborazione di Xbox Game Pass a offrire giochi gratuiti su PC e dispositivi mobili, c'erano molte incognite. In aggiunta, volevamo anche migliorare l'esperienza dei giocatori offrendo ricompense di gioco a chiunque collegasse i suoi account. Quando ci troviamo di fronte a progetti di questa portata, cerchiamo di semplificarli dividendoli in gruppi di funzionalità indipendenti, al fine di ottimizzare la gestione delle responsabilità e degli obiettivi, e di ridurre il numero di riunioni tra membri che non si occupano delle stesse cose.
Per far fronte a queste necessità, il team di gestione dei programmi ha lavorato a stretto contatto con Microsoft per organizzare i prodotti più importanti. Questo passaggio fondamentale ha fatto in modo che il progetto finisse nelle mani delle persone giuste al momento giusto. Il team di gestione dei programmi del reparto piattaforme dei giocatori ha stabilito cerimonie e rituali nel proprio reparto e in tutta Riot, coinvolgendo team di gioco, publishing, supporto giocatori e altri altrettanto importanti. In questo modo, hanno sviluppato strategie e semplificato problemi complessi dividendoli tra vari team di gioco e centinaia di persone all'interno del reparto delle piattaforme dei giocatori.
Sviluppare per Game Pass
Prima di creare nuovi sistemi o di modificare quelli già esistenti, dev'esserci una visione condivisa del problema e di cosa i giocatori considereranno un successo. All'interno del reparto delle piattaforme dei giocatori, il design dell'esperienza utente (UX) è fondamentale per creare esperienze positive per i giocatori e ha avuto un ruolo importante nella collaborazione con Xbox Game Pass. Anche se questo aspetto è spesso associato soprattutto alle interfacce finali già rifinite, svolge una funzione ancora più cruciale nella pianificazione delle interazioni dei giocatori con prodotti e sistemi complessi e nel renderle fluide per gli utenti. Ora vi starete chiedendo: quanto può essere difficile permettere ai giocatori di collegare i loro account di Xbox Game Pass? Beh, a quanto pare, è piuttosto complicato!
Nelle fasi iniziali della collaborazione tra Riot e Microsoft, i dirigenti del reparto UX hanno lavorato alla definizione degli scenari minimi all'interno dei quali i giocatori avrebbero considerato in modo positivo il lancio dell'iniziativa, con tanto di informazioni relative a varie discipline e dipartimenti riguardo a quali tempistiche, partner e risorse sarebbero stati necessari per trasformare in realtà questi scenari. C'era una particolare attenzione ai principali rischi che potevano minare il successo dell'esperienza dei giocatori: in fin dei conti, essere d'accordo che valeva la pena lavorare per raggiungere un obiettivo comune era il primo passo per unire le nostre competenze e cercare di rendere possibile ciò che apparentemente non lo era. (Per saperne di più sul processo iniziale di definizione di questi scenari minimi, leggete l'articolo "Riot Games UX" su Medium, in lingua inglese.)
"La collaborazione tra due grandi aziende è sempre una sfida enorme. Terminologie diverse, ruoli diversi, presupposti diversi. Abbiamo dovuto scavare per capire come funzionavano i sistemi di autenticazione di Microsoft e le esperienze di installazione di Game Pass, in modo da poter tenere in considerazione quella parte dell'esperienza durante la valutazione dei costi dello sviluppo dell'esperienza completa, e valutare cosa esattamente sarebbe stato necessario per garantire il rispetto degli scenari minimi che avevamo definito."
- Cheryl Platz

Una volta stabilite le procedure iniziali, il team dell'UX si è messo al lavoro per definire i dettagli delle caratteristiche necessarie affinché ciascun elemento visibile ai giocatori potesse supportare una procedura di inserimento fluida, a prescindere dalla provenienza e dal tipo di utente. Il team si è assicurato che un giocatore veterano di titoli Riot che collega il suo abbonamento Game Pass direttamente dal gioco o attraverso il client Riot abbia la stessa esperienza senza intoppi di un nuovo giocatore che arriva per la prima in Riot attraverso l'app di Game Pass.
Unire piattaforme di due aziende diverse per la prima volta presenta spesso nuovi scenari che né il team del client Riot né quello di Xbox avevano mai affrontato prima d'ora per offrire un'ottima esperienza ai giocatori. Per esempio, il diverso modello di sicurezza di Microsoft ha dato al reparto delle piattaforme dei giocatori un'interessante opportunità di sperimentare con ulteriori standardizzazioni di automazione e piattaforme per l'identità. Avere una comunicazione aperta e una collaborazione attiva con Microsoft ha contribuito a orientare i nostri obiettivi e a far procedere i progressi dei team nella giusta direzione.
"Quella con noi non è la prima integrazione fatta da Microsoft, ma credo che il metodo usato nel nostro caso sia stato abbastanza diverso da spingerli a lavorare insieme a noi per realizzarla in concerto. È stato uno sforzo collaborativo, e abbiamo trasformato entrambi i versanti del codice di base in modo da poter accomodare le loro necessità. Le funzionalità preconfigurate di Microsoft non avrebbero funzionato in questo caso e non ci avrebbero consentito di rispettare le tempistiche che ci eravamo posti."
- Luther Baker
A partire dalla documentazione esplorativa iniziale (a volte chiamata pre-esplorativa), i designer hanno dovuto identificare cosa stesse accadendo in quel momento e stabilire i prerequisiti dell'operazione ponendosi questa domanda: "come facciamo a ottenere il risultato che vogliamo raggiungere?". Attraverso vari metodi, come la mappatura degli scenari e lo studio dei flussi di utenti, i designer di Microsoft e del team delle piattaforme dei giocatori hanno lavorato insieme alla creazione di molti elementi che sono poi stati condivisi con i reparti tecnici, dei prodotti e del controllo della qualità, per essere sicuri che le procedure definite corrispondessero alle aspettative di ciascun team. È stato stabilito anche un circuito di feedback costante con l'obiettivo di valutare quali servizi e funzionalità fossero disponibili per offrire la migliore esperienza possibile agli utenti.
"Dal punto di vista del team dell'UX, in casi come questo è meglio commettere errori, poiché è molto probabile che qualcuno se ne accorga e dia un feedback se c'è qualcosa che non corrisponde a ciò che aveva capito. È meglio sbagliare facendo le cose rapidamente, così possiamo discuterne, che passare più tempo a cercare di capire quale sia la risposta giusta prima di creare qualcosa."
- Melody Seng
I vari elementi hanno subito una costante evoluzione, anche dopo essere stati approvati. Abbiamo scoperto dei casi limite che richiedevano indagini più approfondite e ulteriori iterazioni per risolverli. Lavorare direttamente con gli ingegneri e con i team tecnici è stato fondamentale per creare un terreno comune su cui operare.

Creare dei servizi quasi in tempo reale
Per offrire la migliore esperienza utente con Riot e Xbox Game Pass, volevamo che i giocatori potessero sbloccare immediatamente nuovi contenuti di gioco dopo aver collegato i loro account di Xbox Game Pass attivi, e questo ha richiesto una considerevole dose di ingegno. Il team delle esperienze dei contenuti ha collaborato con quello degli account (all'interno delle piattaforme dei giocatori) e hanno stabilito che quest'ultimo avrebbe inviato un messaggio al Riot Event Bus (il nuovo approccio di Riot alle comunicazioni via messaggio) ogni volta che un giocatore collegava o scollegava il proprio account Xbox. Al ricevimento del messaggio, il servizio che supervisiona gli argomenti del broker di messaggi poteva reagire ed elaborare l'evento. Dato che i giocatori potevano collegare i loro account Xbox a quelli Riot senza avere un abbonamento Game Pass attivo, il team doveva anche inviare una richiesta all'API di Xbox per ottenere questa informazione usando il token fornito dal collegamento degli account e, a quel punto, il team degli account avrebbe conservato il token in questione in nuovo servizio. Tuttavia, questa soluzione risolveva il problema solo in parte, poiché dovevamo comunque controllare che il giocatore avesse un account di Xbox Game Pass attivo.
Il team dell'esperienza dei contenuti (parte di quello delle piattaforme dei giocatori) ha creato il Gateway Subscription Service (GSS) che funge da unica fonte di verifica, interna a Riot, dello stato del Game Pass di un giocatore, per qualsiasi tipo di richiesta. Ciò significava che ogni volta che un servizio doveva controllare l'idoneità di un giocatore per contenuti basati sull'abbonamento, inviava una richiesta al GSS, ricevendo una risposta a bassa latenza ed elevata precisione relativa ai vantaggi ai quali il giocatore in questione poteva avere accesso. Il GSS ottiene questi dati consultando le occorrenze dei collegamenti degli account e usando l'API di Microsoft per controllare se un utente possiede un account Game Pass attivo. Il sistema poi mostra i dati ad altri servizi di Riot attraverso endpoint di API HTTP, in modo che gli altri team possano usare queste informazioni per altri utilizzi, tra cui:
- Piattaforma di accesso ai contenuti: aggiunge specifici contenuti basati sull'abbonamento all'inventario dei giocatori
- Martech: mostra specifiche inserzioni pubblicitarie in base allo stato attuale del Game Pass del giocatore
- Supporto giocatori: gli operatori del Supporto giocatori usano queste informazioni per elaborare i ticket relativi agli abbonamenti a Xbox
- Esperienza web (WebEx): mostra gli stati degli abbonamenti del giocatore sulla pagina web di gestione dell'account
Quando un giocatore collegava il proprio account Riot a quello di Xbox Game Pass, il GSS inviava una richiesta all'API di Microsoft Xbox per conoscere lo stato del Game Pass del giocatore usando il token creato durante il collegamento degli account, salvava questa informazione in un database permanente e la aggiornava regolarmente per renderla disponibile alle richieste fornendo accesso al client attraverso l'API. Sembra abbastanza semplice, vero?
Un giocatore poteva attivare il proprio Game Pass in qualsiasi momento dopo aver collegato l'account Riot a quello Xbox. Il servizio avrebbe solo potuto inviare regolarmente richieste all'API di Xbox per sapere se lo stato dell'abbonamento del giocatore in questione fosse attivo. Per offrire la miglior esperienza agli utenti, volevamo che i giocatori potessero ricevere accesso ai contenuti dell'abbonamento subito dopo aver collegato gli account e aver attivato il proprio Game Pass, quindi era necessario essere in grado di effettuare richieste all'API con una frequenza elevata. Ma quale frequenza si poteva considerare adeguata? Ogni minuto sarebbe stato perfetto, ma non è buona prassi inviare milioni di richieste al minuto a un'API solo per controllare uno stato, in particolare quando nel 99% dei casi non ci sarebbero stati cambiamenti tra una richiesta e l'altra.
Il team si è concentrato sui casi in cui potevano reagire a delle interazioni con i giocatori dal lato di Riot, come quando uno di loro lanciava il client di gioco, ovvero dei momenti nei quali sarebbe stato opportuno aggiornare le informazioni sullo stato di Game Pass. Tuttavia, l'aggiornamento è una richiesta HTTP esterna che richiede circa 1 secondo e il client principale di GSS, la Piattaforma di accesso ai contenuti (CAP), necessitava di ricevere risposte in meno di 50 millisecondi, poiché questo passaggio faceva parte della procedura per richiamare l'inventario del giocatore, che ha tempistiche molto stringenti. Non c'era modo di far rientrare una richiesta esterna di un secondo in 50 millisecondi, quindi il team ha dovuto trovare una soluzione creativa. E così, hanno deciso di inviare il valore attualmente archiviato e ottenuto dal precedente aggiornamento (oppure dopo il collegamento degli account) e far attivare un aggiornamento asincrono nel backend se il valore archiviato era stato ottenuto più di due minuti prima. Se il servizio avesse rilevato un cambiamento nello stato di Game Pass a seguito dell'aggiornamento asincrono, avrebbe inviato un messaggio al client di gioco tramite il Riot Messaging Service, in modo che il gioco potesse recuperare le autorizzazioni dalla CAP e consentire al giocatore di ricevere i suoi contenuti in abbonamento senza dover ricaricare il client manualmente.
"Quindi, il nostro obiettivo principale era ridurre la latenza il più possibile, poiché avevamo dei requisiti di tempo piuttosto stringenti. Praticamente, la CAP impiega 50 ms per contattarci e ricevere una risposta relativa allo stato di attivazione di Game Pass di un giocatore, il che ci rende quasi un servizio in tempo reale in questo senso. Se non riusciamo a rispondere in questo arco di tempo, la CAP fa scadere la richiesta e questo potrebbe comportare che i giocatori non ricevono i contenuti che spetterebbero loro."
- Vasily Katraev
Wild Rift non usa il sistema CAP per l'inventario dei suoi giocatori, quindi in questo caso era necessario chiedere direttamente al servizio di abbonamento se il giocatore avesse o meno un abbonamento a Game Pass. Per rispettare i requisiti di latenza di 50 ms, il team dell'esperienza dei contenuti ha collocato i propri servizi con la CAP e quelli di gestione degli account in quattro centri di elaborazione dati sparsi per il mondo, in modo da essere il più vicino possibile ai nostri giocatori.
Lancio preliminare e soluzioni alternative ai limiti del database per il lancio
Qualche giorno prima del lancio ufficiale della collaborazione, il team ha effettuato un lancio preliminare per testare il collegamento tra gli account Riot e quelli di Xbox Game Pass. Durante questa procedura, hanno trovato diversi bug critici e sono riusciti a risolverli prima dell'uscita ufficiale.
Una delle principali preoccupazioni riguardava la mole del carico di utenti che poteva investire il servizio di autorizzazioni, che ha il compito di conferire ai giocatori l'accesso alle ricompense in tutti i titoli di Riot. Il servizio riceve moltissime richieste di lettura, fino a 800.000 al minuto in alcune zone del mondo! Per poter sbloccare i vantaggi per i giocatori, ciascuna richiesta di autorizzazione attivava un'ulteriore richiesta a un altro sistema per controllare che il giocatore avesse il Game Pass, prima di conferirgli i vantaggi legati all'abbonamento. La complessità e il carico aggiuntivo richiesti da questa procedura ne metteva a rischio l'affidabilità e rallentava i tempi di risposta, con tutta una serie di implicazioni a valle.
Il team aveva effettuato test di carico per molti scenari, ma aveva deciso che un lancio preliminare sarebbe stato il modo più efficace di mettere alla prova la solidità del sistema. Questo tipo di lancio avrebbe consentito di "avviare il sistema" a pieno regime, saltando solo il passaggio finale che fa apparire i contenuti di Xbox Game Pass nell'inventario dei giocatori. In questo modo, hanno potuto osservare il funzionamento del sistema a carico pieno e valutarne l'esatta reazione prima del lancio ufficiale. Attraverso questa procedura, il team ha scoperto un errore di configurazione nel pool di connessione che probabilmente avrebbe fatto fallire il lancio ufficiale e impedito ai giocatori di ricevere i vantaggi.
Il team ha anche riscontrato un problema con la capacità di scrittura del nostro database: l'architettura* esistente gli impediva di ampliarlo per adeguarlo al maggior carico di giocatori durante il lancio della collaborazione. Un metodo comune per gestire il carico di un servizio come questo sarebbe stato quello di conferire l'accesso a ondate. Il team ha deciso di provare a controllare il flusso di giocatori rallentando il marketing. In questo modo, le ondate dei giocatori sarebbero state distribuite su un arco di tempo più lungo e il team sarebbe stato sicuro che il servizio avesse sufficiente capacità per ciascuna nuova ondata di giocatori, in corrispondenza della pubblicazione di altro materiale di marketing. Lavorando a stretto contatto con il reparto marketing, sono riusciti a tenere le ondate al di sotto del 50% della capacità di scrittura.
*Da allora, abbiamo cambiato l'architettura tecnica del nostro database in modo da avere maggiori possibilità di ridimensionarlo orizzontalmente in base ai cambiamenti nel numero degli account.

Mentalità più che capacità
Oltre alle enormi abilità tecniche che sono state necessarie per l'integrazione dei nostri titoli in Xbox Game Pass, le competenze trasversali (soft skills) hanno avuto un ruolo fondamentale. Essere umili e sempre curiosi, e avere la capacità di collaborare e comunicare apertamente sia a livello interno che con Microsoft è stato cruciale. Anche se questo progetto ha richiesto solo sei mesi, ha coinvolto centinaia di persone, richiesto lo spostamento degli orari di lavoro e ci ha costretto a imparare nuovi sistemi. È stato importante fare dei passi indietro e lasciare che persone con competenze specifiche assumessero il controllo del lavoro, spingendo i team in direzioni diverse per evitare che ci fosse una sola persona o un solo team a dirigere il progetto inutilmente.
"Il modo in cui le persone si sono approcciate al progetto e la loro dedizione hanno fatto davvero la differenza."
- Nate Portner
Questa collaborazione ha messo in evidenza molti dei valori fondamentali di Riot Games. Durante tutto il processo, il team ha continuato a domandarsi in che modo quest'esperienza avrebbe inciso sui nostri giocatori, ha fatto di tutto per rispettare lo standard più alto del principio "l'esperienza dei giocatori al primo posto" e tutta Riot si è unita per lavorare a qualcosa che ha effetto su tutti i nostri titoli.
"Ogni reparto ha svolto un lavoro straordinario nel tenere in considerazione l'effetto che le nostre decisioni avrebbero avuto sui giocatori. Non volevamo dare false aspettative a nessun giocatore in nessun momento."
- Matt Hawkins
Conclusioni
Benché il lavoro richiesto da questo progetto non possa essere sintetizzato in questo articolo tecnico, speriamo che dopo averlo letto sappiate qualcosa in più del team delle piattaforme dei giocatori e dei servizi che ha sviluppato per la collaborazione tra Riot e Xbox Game Pass. Creare esperienze straordinarie per i giocatori ha richiesto la dedizione e il duro lavoro di centinaia di persone.




