13. června 2022 Riot oznámil nové partnerství s Microsoftem, abychom naše největší hry převedli na Xbox Game Pass. Toto partnerství spojilo dvě z největších herních firem na světě díky společné lásce k soutěžním hrám zaměřeným na hráče. O šest měsíců později jsme tento obrovský závazek splnili a úspěšně vydali naše největší tituly na Game Passu.
Nyní se chceme ohlédnout za prací v zákulisí během těchto měsíců a popovídat si o týmu, o kterém jste možná dosud ještě neslyšeli – o hráčské platformě.
Co je hráčská platforma?
Hráčská platforma tvoří spojnici mezi hrami od Riotu a našimi hráči a buduje ekosystém a komunitu kolem více her. Tento tým vytváří propojený hráčský zážitek a spojuje hráče a obsah v rámci našich her. Jinými slovy hráčská platforma vytváří a vydává prakticky všechno ohledně her Riotu, co není přímou součástí hratelnosti. Patří sem funkce účtů nesouvisejících s konkrétní hrou, vstupování do her, sociální funkce, nakupování a další, a to vše se k vám dostává prostřednictvím portálů, integrací SDK a přímých API.
Jelikož je hráčská platforma zodpovědná za všechno ohledně vašeho herního zážitku, musel velkou část práce na Xbox Game Pass odvést právě tým hráčské platformy. Vyžadovalo to týmového ducha a spolupráci, otevřenou mysl a spoustu odhodlaných pracovitých lidí, abychom tento požadavek splnili a zároveň během toho nadále podporovali aktuální i chystané hry od Riotu.
Začínáme... rychle!
Jelikož Riot Games uzavřel první partnerství s Xbox Game Pass kvůli nabízení bezplatných her na PC a mobilech, byla zde řada neznámých. Kromě toho jsme také chtěli obohatit zážitek hráčů tím, že budeme dávat herní odměny každému, kdo si propojí účty. Když se díváme na projekt takového rozsahu, snažíme se ho zjednodušit na několik samostatných proudů podle funkcí, abychom maximalizovali vlastnictví a soustředění a redukovali množství porad bez jasných účelů.
Abychom tohle vyřešili, programový management pracoval ruku v ruce s Microsoftem a plánoval přípravu hlavních funkcí. Díky této klíčové roli se do popředí dostávali ti správní lidé ve správnou chvíli. Tým managementu hráčské platformy pořádal ceremoniály a rituály v celé hráčské platformě a celofiremně v Riotu s herními týmy, ve vydavatelství, hráčské podpoře a dalších klíčových zainteresovaných odděleních. Společně vymýšleli strategii a řešili komplexní problémy napříč několika herními týmy a stovkami lidí v rámci hráčské platformy.
Design pro Game Pass
Před tvorbou nových systémů či úpravou těch stávajících musí existovat společné chápání problému a toho, jak bude vypadat úspěch pro hráče. Design uživatelského zážitku v rámci hráčské platformy je klíčový pro tvorbu pozitivních hráčských zážitků a v rámci partnerství s Xbox Game Pass hrál významnou roli. Ačkoliv se design často spojuje hlavně s vybroušeným koncovým rozhraním, hraje ještě důležitější roli během plánování hráčských interakcí s komplexními produkty a systémy a v jejich plynulém průběhu. Nyní se možná ptáte, jak těžké může být umožnit hráčům, aby si propojili účty s Xbox Game Pass. Inu, jak se ukázalo, je to dost komplikované!
Na začátku partnerství mezi Riotem a Microsoftem zapojilo vedení uživatelského zážitku manažery, aby řídili tvorbu „minimálních atraktivních“ hráčských scénářů s informacemi z několika disciplín a oddělení ohledně času, partnerů a zdrojů, které budou zapotřebí, aby se tyto scénáře staly skutečností. Zejména se zaměřili na největší rizika pro skvělý hráčský zážitek – protože čím dříve se dohodneme na tom, že nějaký obtížný společný cíl za tu práci stojí, tím dříve můžeme začít kombinovat naši expertízu a snažit se o zdánlivě nemožné. (Podrobnosti o původním procesu definice těchto minimálních atraktivních scénářů najdete v článku Riot Games UX na platformě Medium.)
„Spolupráce mezi dvěma firmami bude vždy obrovská výzva. Různá terminologie, různé role, různá očekávání. Museli jsme pracně přijít na to, jak fungují autentifikační systémy Microsoftu a instalační zážitky Game Passu, abychom mohli vzít část tohoto zážitku v potaz při odhadů nákladů na vývoj zážitku od začátku do konce – a vyhodnotit, co přesně bude potřeba pro minimální atraktivní hráčský zážitek.“
- Cheryl Platz
Když jsme měli počáteční procesy pohromadě, tým uživatelského zážitku začal vymýšlet podrobnosti ohledně toho, co každý styčný bod, který uvidí hráči, bude potřebovat, aby podporoval hladký nábor hráčů, ať už budou jacíkoliv a pocházejí odkudkoliv. Tým se postaral o to, aby ostřílený hráč Riotu, který si propojuje členství Game Passu přímo ze hry nebo prostřednictvím klientu Riotu, měl stejně hladký počáteční zážitek jako nový hráč Riotu, který poprvé přichází z aplikace Game Pass.
První spojení platforem od dvou různých firem často představuje nové scénáře, které náš tým klientu Riotu ani Xbox dosud neřešil kvůli zajištění skvělého hráčského zážitku. Například odlišný bezpečnostní model Microsoftu dal hráčské platformě zajímavou příležitost prozkoumat další standardizaci autorizačních a identifikačních platforem. Otevřená komunikace a aktivní spolupráce s Microsoftem pomohla nasměrovat cíle a postarala se o to, že proces kráčí správným směrem.
„Nejsme první integrace, kterou dělali, ale myslím, že metoda, kterou pro nás použili, byla dost odlišná na to, aby pracovali s námi a byli našimi partnery, aby nám to pomohli udělat dobře. Byla to spolupráce, rozvíjeli jsme obě strany kódové základny, abychom mohli podpořit to, co potřebují. Předpřipravené funkce Microsoftu by v tomto případě nefungovaly, takže by to pak nevycházelo z pohledu načasování.“
- Luther Baker
Počínaje původní průzkumnou dokumentací (občas se tomu říká předběžný průzkum) designéři museli identifikovat, co se aktuálně děje, a vymyslet požadavky, a to tak, že se sami sebe zeptali: „Jak se dostaneme k výsledku, kterého chceme dosáhnout?“ Designéři z Microsoftu a hráčské platformy spolupracovali pomocí celé řady metod, jako je mapování scénáře a uživatelských procesů, aby vytvořili spoustu artefaktů, které sdíleli s techniky, produktovými manažery a QA, aby procesy odpovídaly očekáváním, a také byla zavedena konstantní smyčka zpětné vazby, aby vyhodnotila, jaké služby a funkce budou k dispozici, aby podporovaly ten nejlepší zážitek.
„V takovém případě je lepší se jako tým uživatelského zážitku mýlit než mít pravdu, protože lidé s větší pravděpodobností poukážou na chybu a napíšou vám zpětnou vazbu, pokud si něčeho všimnou, jako třeba „Hele, já to vlastně chápu jinak.“ Je lepší udělat něco špatně rychle, abychom si o tom mohli promluvit, než abychom trávili čas vymýšlením správné odpovědi a pak teprve něco vytvořili.“
- Melody Seng
Artefakty se neustále vyvíjely, a to i po finalizaci. Objevovaly se okrajové případy, jejichž řešení vyžadovalo větší průzkum a několik kol úprav. Pracovat napřímo s techniky a technickými týmy bylo klíčové pro to, abychom dosáhli společného pochopení.
Tvorba služeb téměř v reálném čase
Abychom poskytli ten nejlepší uživatelský zážitek s Riotem a Xbox Game Pass, chtěli jsme, aby si hráči okamžitě odemkli nový herní obsah po propojení svého aktivního účtu Xbox Game, což vyžadovalo velkou vynalézavost. Tým obsahového zážitku spolupracoval s týmem účtů (v rámci hráčské platformy) a přiměl tým účtů poslat zprávu přes Riot Event Bus (nejnovější přístup Riotu ke komunikaci založené na zprávách) pokaždé, když si nějaký hráč propojil či odpojil účet Xbox. Po obdržení zprávy mohla služba, která sledovala toto téma zpráv, reagovat a celou událost zpracovat. Jelikož bylo možné, aby si hráči propojili účet Xbox s Riotem, aniž by měli aktivní Game Pass, musel tým také připravit API na obdržení této informace pomocí žetonu získaného z propojení účtů, zatímco tým účtu ukládal žeton v nové službě. Tím se však řešila jen část problému, protože jsme pořád potřebovali zkontrolovat, jestli má hráč aktivní účet Xbox Game Pass.
Tým obsahového zážitku (součást hráčské platformy) vybudoval Gateway Subscription Service (GSS), která funguje jako jednotný zdroj pravdy v rámci Riotu pro stav Game Passu u všech hráčů. To znamenalo, že pokaždé, když nějaká služba potřebovala zkontrolovat obsah založený na předplatném, mohla se obrátit na GSS a získat spolehlivou odpověď s nízkou latencí ohledně toho, jaké výhody by hráč měl dostat. GSS získává data díky zpracování událostí propojování účtů z týmu účtu a pomocí API Microsoftu, díky čemuž kontroluje, jestli má hráč aktivní stav Game Passu. Tyto údaje posílá dalším službám Riotu prostřednictvím koncového bodu HTTP API, aby tyto údaje mohly používat další týmy pro různé účely, například:
- Platforma přístupu k obsahu: Přidává do inventáře hráčů konkrétní obsah založený na předplatném
- Martech: Ukazuje konkrétní reklamy podle aktuálního stavu Game Passu hráče
- Hráčská podpora: Agenti hráčské podpory pomocí těchto informací zpracovávají žádosti hráčů ohledně předplatného Xbox
- Webový zážitek (WebEx): Ukazuje stav předplatného hráčů na webové stránce správy hráčských účtů
Když si hráč propojil účet Riot s účtem Xbox Game Pass, GSS poslala dotaz Xboxové API Microsoftu ohledně stavu hráčova Game Passu pomocí žetonu z propojení účtu, uložila tuto informaci v trvalé databázi a pravidelně ji aktualizovala a zpřístupňovala v rámci dotazů, aby poskytovala přístup ke klientu prostřednictvím API. Zní to jednoduše, že?
Hráč si mohl aktivovat Game Pass kdykoliv po propojení účtů Riot + Xbox. Služba mohla pouze pravidelně posílat dotaz API Xboxu, aby zjistila, jestli má hráč aktivní stav. Kvůli poskytnutí nejlepšího hráčského zážitku jsme chtěli, aby měli hráči přístup k obsahu založenému na předplatném okamžitě po propojení a aktivaci Game Passu, takže bylo nutné, aby se tento dotaz mohl posílat často. Ale jak často je dost? Dělat to každou minutu by bylo fajn, ale není dobré každou minutu provádět miliony žádostí na API jen kvůli kontrole stavu, zejména když z 99 % případů by mezi výzvami k žádné změně stavu nedošlo.
Tým se soustředil na případy, kdy mohli reagovat na interakce s hráči na straně Riotu, například když hráč spustil herní klient, což by byl správný okamžik pro aktualizaci stavu Game Passu. Aktualizace je však výzva na externí HTTP, která trvá asi 1 sekundu, a hlavní klient GSS, platforma přístupu k obsahu (CAP) potřebovaly, aby se jim reakce vracely za méně než 50 milisekund, protože to bylo součástí procesu načtení hráčova inventáře, který je časově citlivý. Vtěsnat jednosekundovou externí výzvu do 50 milisekund nebylo v žádném případě možné, takže to tým musel řešit kreativně. Rozhodli se vrátit aktuálně uloženou hodnotu, kterou získali z předchozí aktualizace nebo na začátku po propojení účtu, a spustit asynchronní aktualizaci pod kapotou, pokud byla hodnota získána víc než před dvěma minutami. Pokud služba po této asynchronní aktualizaci zaznamenala změnu ve stavu Game Passu, odeslala zprávu prostřednictvím služby zpráv Riotu hernímu klientu, aby hra mohla načíst nároky z CAP a aby se postarala o to, že hráč dostane svůj obsah založený na předplatném, aniž by musel klient aktualizovat ručně.
„Naším hlavním cílem tedy bylo co možná nejvíc snížit latenci, protože máme docela přísný požadavek na čas. V podstatě je to 50 ms na to, aby nás CAP kontaktovalo a dalo odpověď ohledně toho, jestli má hráč aktivní status Game Passu, nebo ne, takže v tomto smyslu je to služba téměř v reálném čase. Pokud nezareagujeme v tomto časovém období, CAP výzvu v podstatě zruší, což může vést k tomu, že hráč nedostane obsah, který by dostat měl.“
- Vasily Katraev
Wild Rift pro svůj hráčský inventář nepoužívá CAP, takže tam se musí napřímo zeptat služby předplatného, jestli má hráč aktivní předplatné Game Passu. Abychom splnili požadavek na 50ms latenci, tým obsahového zážitku spojil své služby se službami CAP a správou účtu ve čtyřech datových centrech po celém světě, aby byly hráčům co možná nejblíž.
Spuštění nanečisto a obejití limitů databáze kvůli vydání
Pouhých pár dnů před spuštěním pro hráče tým provedl spuštění nanečisto, aby otestoval propojení mezi účty Riot a Xbox Game Pass. Přišli na několik kritických chyb a opravili je před dnem spuštění.
Jednou z hlavních obav bylo množství uživatelské zátěže na službu nároků, která je odpovědná za to, že hráčům poskytuje přístup k předmětům ve všech hrách Riotu. Služba nároků dostává spoustu žádostí o načtení – v některých lokacích až 800 000 žádostí za minutu! Abychom hráčům odemkli výhody, každá žádost služby nároků nyní spouštěla následnou výzvu pro další systém kvůli kontrole, jestli má hráč Game Pass, načež se údaje daly dohromady a hráč získal výhody z Game Passu. Dodatečný stres a složitost, které tento proces přinesl, způsobil riziko nespolehlivosti a zpomalil reakce kvůli celé řadě procesních implikací.
Tým zátěžově testoval spoustu scénářů, ale uvědomil si, že díky spuštění nanečisto by si dokázal nejspolehlivěji ověřit, že má robustní systém. Díky spuštění nanečisto mohli systém „zapnout“ s kompletní funkčností s výjimkou toho, že se hráčům nezobrazoval obsah z Xbox Game Pass. Viděli celkovou zátěž, kterou musel systém podstoupit, a přesné chování, které mohli očekávat před oficiálním spuštěním. Díky spuštění nanečisto objevili špatnou konfiguraci množiny propojení, která by nejspíš měla za následek nezdařené spuštění, protože hráči by nezískali své výhody.
Tým také narazil na problém se zápisovou kapacitou naší databáze – existující architektura* jim zabraňovala rozšířit kapacitu, aby zvládala zvýšenou zátěž hráčů během spuštění našeho partnerství. Jeden běžný způsob, jak zvládat takovou zátěž služby, spočívá v postupném vydávání ve vlnách. Tým se rozhodl zkusit omezit příliv hráčů tak, že zpomalil marketing na několik fází. Díky tomu by se vlny hráčů roztáhly na delší časový úsek a tým mohl zajistit dostatečnou kapacitu služby pro každou novou vlnu hráčů podle toho, jak vycházely marketingové materiály. Díky úzké spolupráci s marketingem dokázali udržet kapacitu zápisu pod 50 %.
*Od té doby jsme změnili technický základ naší databáze, aby měla víc horizontální škálování změn na účtech.
Nastavení sad schopností
Kromě rozsáhlých technických schopností potřebných k integraci s Xbox Game Pass hrály klíčovou roli i takzvané měkké schopnosti. Klíčové bylo být skromný, zachovat si zvědavost a dokázat spolupracovat a otevřeně komunikovat interně i externě s Microsoftem. Ačkoliv tento projekt trval jen šest měsíců, zahrnoval stovky lidí, změnu pracovní doby a učení se novým systémům. Bylo důležité se vracet a dovolit expertům na skutkovou podstatu, aby převzali kontrolu a řídili proces jinými způsoby, aby jeden člověk či tým neřídil proces zbytečným způsobem.
„To, jak lidé k tomuto projektu přistupovali a jak se kolem toho semkli, bylo opravdu důležité.“
- Nate Portner
Toto partnerství zdůraznilo řadu základních hodnot Riot Games. Během celého procesu si tým neustále kladl otázku: „Jak tento zážitek ovlivní naše hráče?“ Nastavili si ten nejvyšší standard „Herní zážitek především“ a celý Riot se spojil, aby pracoval na něčem, co má dopad na všechny hry od Riotu.
„Každé oddělení odvedlo skvělou práci, když se soustředilo na to, jaký dopad budou mít rozhodnutí na hráče. V žádném bodě jsme nechtěli nastavit špatné očekávání pro žádného hráče.“
- Matt Hawkins
Na konec
Přestože to bylo víc práce, než kolik by se dalo nacpat do jednoho technického článku, doufáme, že odcházíte s většími znalostmi o hráčské platformě a službách, které vybudovali pro partnerství Riotu a Xbox Game Pass. Chtělo to odhodlání a těžkou práci stovek lidí, kteří se spojili, aby vybudovali (a nadále budují) neuvěřitelné hráčské zážitky.