13 czerwca 2022 roku Riot poinformował o nawiązaniu nowego partnerstwa z Microsoftem w celu udostępniania swoich największych gier poprzez Xbox Game Pass. Dwie największe firmy gamingowe na świecie stały się partnerami dzięki wspólnej miłości do pełnych rywalizacji gier, które koncentrują się na graczach. Sześć miesięcy później wywiązaliśmy się z tego gigantycznego zobowiązania i z sukcesem wypuściliśmy nasze największe tytuły w ramach Game Pass.

Teraz chcielibyśmy przyjrzeć się bliżej pracy, którą trzeba było wykonać za kulisami w ciągu tych miesięcy, oraz porozmawiać o zespole, o którym być może nigdy jeszcze nie słyszeliście — o platformie gracza.

Czym zajmuje się dział platformy gracza?

Dział platformy gracza buduje struktury łączące gry Riot z graczami. Na bazie tych struktur powstaje ekosystem obejmujący wiele gier i całą społeczność. Łącząc użytkowników i zawartość naszych gier, platforma gracza tworzy całościowe doświadczenie graczy. Innymi słowy dział platformy gracza pracuje nad dostarczeniem wszystkiego, co jest związane z grami Riot — poza samą rozgrywką. Obejmuje to wszelkie niezależne od gry działania związane z kontem, przejściem do gry, kontaktami społecznymi, zakupami itd. udostępniane za pośrednictwem portali, integracji SDK i bezpośrednio przez aplikacje.

Ponieważ dział platformy gracza jest odpowiedzialny za wszystko, co wiąże się z waszymi doświadczeniami w grze, musiał zająć się dużą częścią prac związanych z Xbox Game Pass. Wykonanie tego zadania przy jednoczesnym wspieraniu wszystkich dostępnych i planowanych gier wymagało działania w duchu współpracy, otwartej głowy i bardzo wielu zdeterminowanych, ciężko pracujących osób.

Zaczynamy... szybko!

Ponieważ była to pierwsza współpraca Riot Games z Xbox Game Pass polegająca na udostępnianiu darmowych gier na PC i urządzenia przenośne, pojawiło się wiele niewiadomych. W dodatku chcieliśmy wzbogacić doświadczenie graczy, zapewniając nagrody w grze wszystkim, którzy powiążą swoje konta. Zabierając się za projekt o tej skali, lepiej też go uprościć, dzieląc na niezależne potoki funkcji, aby maksymalnie precyzyjnie określić obowiązki i odpowiedzialność oraz zredukować liczbę spotkań nie mających spójnych celów.

Aby sobie z tym wszystkim poradzić, kierownictwo programu ściśle współpracowało z Microsoftem, planując najważniejsze etapy realizacji projektu, ponieważ bardzo ważne jest dopilnowanie, by projekt był pilotowany we właściwych momentach przez właściwych ludzi. Zespół zarządzający programem w ramach platformy gracza ustalił specjalne ceremonie i rytuały — w swoim dziale i na poziomie całego Riot — z udziałem przedstawicieli zespołów gry, publishingu, wsparcia gracza i innych krytycznych partnerów. Opracowano strategię i skalowanie złożonych problemów z udziałem wielu zespołów gry oraz setek osób zatrudnionych w dziale platformy gracza.

Projektowane z myślą o Game Pass

Przed przystąpieniem do konstruowania nowych systemów lub mozolnego modyfikowania istniejących należy upewnić się, że wszyscy rozumieją istotę problemu i wiedzą, co będzie sukcesem z punktu widzenia graczy. Zaprojektowanie doświadczenia użytkownika platformy gracza ma kluczowe znaczenie dla stworzenia pozytywnych doświadczeń graczy i odgrywało ważną rolę w partnerstwie z Xbox Game Pass. Chociaż w pierwszym odruchu zwykle kojarzymy projektowanie z dopracowanym interfejsem użytkownika, odgrywa ono znacznie ważniejszą rolę już podczas planowania interakcji graczy ze skomplikowanymi produktami i systemami oraz płynnego przebiegu tych interakcji. Pewnie się teraz zastanawiacie, na ile trudne mogło być udostępnienie graczom powiązania kont z Xbox Game Pass? Cóż, okazuje się, że było to dość skomplikowane!

Na wczesnym etapie partnerstwa Riotu i Microsoftu kierownictwo UX wspólnie z liderami projektu zabrało się za stworzenie scenariuszy „minimalnej atrakcyjności” dla graczy z uwzględnieniem konkretnych dziedzin i działów oraz ram czasowych, partnerów i zasobów zawiązanych z realizacją tych scenariuszy. Skoncentrowano się szczególnie na tym, co stanowiło największe ryzyko w kontekście wspaniałych doświadczeń graczy — ponieważ im szybciej wszyscy nabiorą przekonania, że warto pracować nad trudnym wspólnym celem, tym szybciej można wykorzystać specjalistyczną wiedzę, którą obie strony dysponują, aby to co wydawało się niemożliwe, stało się możliwe. (Więcej o początkowym procesie definiowania scenariuszy „minimalnej atrakcyjności” dla graczy dowiecie się z artykułu o UX Riot Games w Medium).
 

„Współpraca pomiędzy dwiema firmami zawsze będzie stanowić wielkie wyzwanie. Inna terminologia, inne zakresy obowiązków, inne założenia. Musieliśmy dokopać się do tego, jak przebiega system weryfikacji Microsoftu i instalacja Game Pass, abyśmy mogli wziąć pod uwagę tę część doświadczenia graczy, planując przebieg całego procesu od początku do końca — i ocenić, co dokładnie będzie potrzebne, aby dostarczyć doświadczenie na poziomie minimum atrakcyjności dla graczy”.

 Cheryl Platz
 

Riot Games Xbox Game Pass UX

 

Po określeniu początkowych przepływów zespół UX zabrał się do określenia szczegółów tego, jakie wymagania musi spełniać każdy element, z którym zetknie się użytkownik, aby zapewnić graczom bezproblemowe rozpoczęcie użytkowania usługi, niezależnie od tego, kim są gracze i skąd pochodzą. Zespół musiał dopilnować, aby powiązanie subskrypcji Game Pass z poziomu gry lub przez klienta Riot było równie łatwe dla doświadczonych graczy Riot, jak i dla tych, którzy są nowi i po raz pierwszy korzystają z aplikacji Game Pass.

Łączenie po raz pierwszy platform należących do dwóch różnych firm często tworzy nowe scenariusze, których ani zespół klienta Riot, ani zespół Xboxa nigdy wcześniej nie realizowały, tworząc wspaniałe doświadczenia dla graczy. Na przykład różniący się od naszego model bezpieczeństwa Microsoftu dał zespołowi platformy dla graczy interesującą okazję, aby dokładniej przeanalizować standaryzację platform weryfikacji i identyfikacji. Otwarta komunikacja i aktywna współpraca z Microsoftem pomagały w nakreśleniu celów i monitorowaniu, czy nasze prace idą we właściwym kierunku.
 

„Nie robiliśmy pierwszej integracji w historii, ale uważam, że użyta przez nas metoda była na tyle inna, że współpracowali z nami jak z partnerami, aby ją zrealizować.  To była obustronna współpraca, podstawy kodu ewoluowały po obu stronach, aby mógł obsługiwać wymagane przez partnera funkcje. Gotowa funkcjonalność Microsoftu nie zadziałałaby w tym wypadku, a przez to z kolei nie zadziałałyby terminy”.

 Luther Baker 
 

Rozpoczynając tworzenie dokumentacji wstępnej (czasem nazywanej przedwstępną), projektanci muszą opisać aktualne działanie i zdefiniować wstępne wymagania, zadając sobie pytanie: „Jak możemy uzyskać efekt, o który nam chodzi?”. Wykorzystując metody takie jak scenariusze mapowania i przepływ użytkowników, projektanci Microsoftu i działu platformy graczy wspólnie pracowali nad tworzeniem licznych artefaktów wykorzystywanych przez inżynierów, produkcję i kontrolę jakości, aby upewnić się, że przepływy będą odpowiadać oczekiwaniom. Stworzono też cykliczny obieg opinii zwrotnej, aby móc ocenić, jakie usługi i jaka wydajność pozwalają osiągnąć najlepsze wyniki.


„W takiej sytuacji nawet lepiej, gdy UX popełni błąd, niż gdy go nie popełni, ponieważ ludzie najpewniej zareagują i powiedzą coś w stylu „hej, niezupełnie tak to sobie wyobrażaliśmy”. Lepiej zrobić coś szybko, nawet z błędem, abyśmy mogli o tym porozmawiać, zamiast poświęcać czas na szukanie właściwego rozwiązania, a dopiero potem coś tworzyć”.

Melody Seng
 

Artefakty stale ewoluowały, nawet po oficjalnym odbiorze. Odkrywaliśmy przypadki krańcowe, których uwzględnienie wymagało więcej analiz i iteracji. Bezpośrednia praca z inżynierami i zespołami technicznymi była kluczowa dla uzyskania wspólnego podejścia do problemu. 
 

Riot Games Xbox Game Pass User Flows


Tworzenie usług działających w czasie niemal rzeczywistym

Aby zapewnić najlepsze doświadczenia użytkownikom Riot i Xbox Game Pass, chcieliśmy, aby gracze mogli odblokować nową zawartość w grze natychmiast po powiązaniu aktywnego konta Xbox Game Pass, a to wymagało wiele pomysłowości. Zespół doświadczenia treści współpracując z zespołem kont (z platformy gracza), przyjął, że „konta” wysyłają wiadomość do usługi Riot Event Bus (najnowsze podejście Riot do komunikacji opartej na wiadomościach) za każdym razem, gdy gracz powiązuje lub odłącza swoje konto Xbox. Po otrzymaniu wiadomości usługa odczytująca temat z brokera wiadomości mogła zareagować i przetworzyć zdarzenie. Ponieważ możliwe jest powiązane konta Xbox bez posiadania subskrypcji Game Pass, to aby uzyskać potrzebną informację, zespół musiał też sprawdzać API Xboxa za pomocą sygnału generowanego przez powiązanie konta, który jest zapisywany przez zespół kont w nowej usłudze.  Jednak to rozwiązywało tylko część problemu, ponieważ dalej musieliśmy sprawdzić, czy gracz ma aktywne konto Game Pass.

Zespół doświadczenia treści (wchodzący w skład platformy gracza) zbudował funkcjonalność Gateway Subscription Service (GSS), która działa jako jedyne źródło informacji (SSOT) w Riot co do statusu Game Pass dla każdego zapytania. To oznacza, że za każdym razem, gdy usługa musi sprawdzić jakąś zawartość związaną z subskrypcją, może odwołać się do GSS i uzyskać z małym opóźnieniem szczegółową informację, jakie korzyści należą się danemu graczowi. GSS uzyskuje dane, przyswajając zdarzenia powiązania konta od zespołu kont i wykorzystując API Microsoftu, aby sprawdzić, czy gracze mają aktywny status Game Pass. GSS udostępnia te dane innym usługom Riot za pośrednictwem punktu końcowego HTTP API, tak aby inne zespoły mogły wykorzystać te informacje do realizacji różnych działań:

  • Content Access Platform (CAP) — dodawanie specyficznej zawartości związanej z subskrypcją do ekwipunku gracza;
  • martech — wyświetlanie konkretnych reklam w oparciu o bieżący status Game Pass gracza;
  • Wsparcie Gracza — pracownicy Wsparcia Gracza wykorzystują te informacje do obsługi zgłoszeń związanych z subskrypcją Xboxa;
  • Web Experience (WebEx) — wyświetlanie statusu subskrypcji gracza na ekranie zarządzania kontem.

Gdy gracz powiąże swoje konto Riot z kontem Xbox Game Pass, GSS wysyła zapytanie do API Xboxa Microsoftu, aby otrzymać status Game Pass gracza, wykorzystując sygnał pochodzący z linkowania konta, zapisuje tę informację w trwałej bazie danych i regularnie ją aktualizuje oraz udostępnia do dalszego odpytywania, zapewniając dostęp do klienta poprzez API. Brzmi dość prosto, prawda?

Gracz może aktywować subskrypcję Game Pass w dowolnej chwili po powiązaniu konta Riot i profilu Xbox. Usługa będzie musiała jedynie regularnie sprawdzać API Xboxa, aby zweryfikować, czy gracz ma aktywny status subskrypcji. W celu zapewnienia graczom najlepszych doświadczeń chcieliśmy, aby mogli uzyskać dostęp do zawartości subskrypcji natychmiast po powiązaniu i aktywowaniu Game Pass, więc konieczne było umożliwienie odpowiednio częstego odpytywania. Tylko jaka regularność jest odpowiednio częsta? Najlepiej byłoby sprawdzać co minutę, ale nie jest dobrą praktyką wysyłanie do API milionów zapytań na minutę tylko po to, aby sprawdzić status, który w 99% wypadków nie zmieni się pomiędzy zapytaniami.

Zespół skupił się na przypadkach, w których mógł reagować na interakcje graczy po stronie Riotu, takich jak na przykład uruchomienie przez gracza klienta gry, kiedy następuje odpowiedni moment, aby odświeżyć status subskrypcji Game Pass. Jednak odświeżenie to zewnętrze żądanie HTTP, które wymaga około 1 sekundy, a główny klient GSS, Content Access Platform (CAP), wymaga odesłania odpowiedzi w mniej niż 50 milisekund, ponieważ jest częścią ścieżki krytycznej czasu uzupełniania ekwipunku gracza. Nie było możliwości wpasowania 1-sekundowego zewnętrznego zapytania w 50-milisekundowe okienko, więc zespół musiał działać kreatywnie. Zespół zdecydował się na zwracanie aktualnie zapisanej wartości, która została uzyskana przy wcześniejszym odświeżeniu lub przy powiązaniu konta, i aktywowanie asynchronicznego odświeżania w tle, jeśli przechowywana wartość została uzyskana przed więcej niż dwoma minutami. Jeśli usługa wykryje zmianę w statusie Game Pass po tym asynchronicznym odświeżeniu, wysyła wiadomość za pośrednictwem Riot Messaging Service do klienta gry, aby gra mogła pobrać uprawnienia z CAP i zapewnić graczowi zawartość subskrypcji bez konieczność ponownego ręcznego wczytywania klienta.


„Zatem naszym głównym celem było maksymalne zredukowanie opóźnienia, ponieważ mieliśmy dość restrykcyjne ograniczenie czasowe. To zasadniczo 50 ms dla CAP na wysłanie zapytania i uzyskanie odpowiedzi, czy gracz ma aktywny status Game Pass, czy nie, czyli w efekcie nasza usługa w tym względzie działa niemal w czasie rzeczywistym. Jeśli nie uda się nam odpowiedzieć w tym przedziale czasowym, CAP uzna, że upłynął limit czasu dla zapytania, co może skutkować tym, że gracze nie otrzymają zawartości, którą powinni otrzymać”.

— Vasily Katraev
 

System Wild Rift nie wykorzystuje CAP w zarządzaniu ekwipunkiem graczy, więc musi sprawdzać bezpośrednio w usłudze subskrypcji, czy gracz ma aktywną subskrypcję Game Pass. Aby spełnić wymaganie 50 ms opóźnienia, zespół doświadczenia treści połączył swoje usługi z CAP i usługami zarządzania kontem w czterech centrach danych na całym świecie, aby być tak blisko naszych graczy, jak to tylko możliwe.  

Mroczne uruchomienie i obejście ograniczeń bazy danych podczas premiery

Dosłownie na kilka dni przed udostępnieniem usługi graczom zespół przeprowadził tzw. mroczne uruchomienie (dark launch), aby przetestować powiązywanie kont Riot z Xbox Game Pass. Wykryto wiele krytycznych błędów i naprawiono je przed dniem premiery.

Jednym z głównych problemów było obciążenie związane z użytkownikami w usłudze uprawnień, która jest odpowiedzialna za przyznawanie graczom dostępu do przedmiotów we wszystkich grach Riot. Usługa uprawnień otrzymuje bardzo dużo zleceń odczytu — do 800 000 na minutę w niektórych lokalizacjach! Aby odblokować korzyści dla graczy, obecnie każde sprawdzenie uprawnień aktywuje wynikowe zapytanie do innego systemu, aby sprawdzić, czy gracz miał subskrypcję Game Pass, zanim nastąpi zgromadzenie i dostarczenie korzyści Game Pass dla gracza. Ten przepływ wprowadzał dodatkowy poziom obciążenia i złożoności grożący nierzetelnością i spowolnieniem uzyskiwania odpowiedzi z wieloma dalszymi tego konsekwencjami.

Zespół przeprowadził testy obciążeniowe wielu scenariuszy i doszedł do wniosku, że uruchomienie typu dark launch zapewni największą rzetelność oceny działania systemu. Takie podejście pozwoliło „włączyć system” w pełnym wymiarze, jedynie z zablokowaną możliwością zobaczenia zawartości Xbox Game Pass przez graczy. Zespół był w stanie ocenić pełne obciążenie dla systemu i to, jakich zachowań można się spodziewać przed oficjalną premierą. Dzięki wdrożeniu typu dark launch wykryta została błędna konfiguracja puli połączeń, która najprawdopodobniej doprowadziłaby do niepowodzenia całej premiery, ponieważ gracze nie byliby w stanie otrzymać swoich korzyści.

Zespół natknął się też na problem z przepustowością przyjmowania wpisów przez naszą bazę danych — istniejąca architektura* uniemożliwiała poszerzenie jej w związku ze zwiększoną liczbą graczy na początku naszego partnerstwa. Jednym ze standardowych sposobów radzenia sobie z obciążeniem w tego typu usłudze jest udostępnianie jej falami. Zespół postanowił kontrolować napływ graczy poprzez spowolnienie działań marketingowych, dzieląc je na wiele etapów. To rozłożyło napływ fal graczy w czasie i zespół był w stanie zapewnić odpowiednią pojemność usługi dla każdej nowej fali graczy, która pojawiała się po publikacji kolejnych materiałów marketingowych. Współpracując ściśle z marketingiem, zespół był w stanie utrzymać przepustowość usługi zapisu na poziomie 50%. 

*W międzyczasie zmieniliśmy techniczny stack naszej bazy danych, aby mieć większą możliwość poziomego skalowania w przypadku zmian związanych z kontami.
 

Wykres: liczba powstających kont Xbox i powiązań na godzinę podczas premiery.
Wykres: liczba powstających kont Xbox i powiązań na godzinę podczas premiery.


Sposób myślenia ważniejszy niż umiejętności

Integracja z Xbox Game Pass wymagała nie tylko umiejętności technicznych w szerokim zakresie, krytyczną rolę odgrywały też tzw. „miękkie umiejętności”. Pokora, ciekawość oraz możliwość współpracy i otwartej komunikacji wewnętrznej i zewnętrznej z Microsoftem miały kluczowe znaczenie. Chociaż ten projekt trwał tylko sześć miesięcy, to zaangażował setki osób, wymagał pracy zmianowej i nauki nowych systemów. Należało umieć wycofać się i pozwolić osobom będącymi ekspertami w danym temacie przejąć stery i działać w odpowiedni sposób, zatem nie było jednej osoby ani jednego zespołu zajmującego się wyłącznie zarządzaniem.


„Sposób, w jaki wszyscy podchodzili do tego projektu, i sposób, w jaki jednoczyli się wokół niego, naprawdę wiele zmieniał”.

— Nate Portner
 

To partnerstwo uwydatniło wiele kluczowych wartości Riot Games. W ciągu całego tego procesu zespół wciąż zadawał sobie pytanie: „W jaki sposób to doświadczenie wpłynie na naszych graczy?”. Wszyscy w Riot narzucili sobie najwyższe standardy związane ze stawianiem na pierwszym miejscu doświadczeń gracza i pracowali razem nad czymś, co wywrze wpływ na wszystkie gry Riot.


„Każdy dział wykonał świetną pracę, koncentrując się na tym, w jaki sposób podejmowane decyzje wpłyną na graczy.  Nie chcieliśmy w żadnym momencie zawieść oczekiwań graczy”.

— Matt Hawkins

Podsumowując

Choć pracy było więcej, niż moglibyśmy opisać w jednym artykule dotyczącym technikaliów, to mamy nadzieję, że teraz już wiecie więcej o platformie gracza i usługach, które dzięki niej powstały i z których możemy skorzystać w ramach współpracy Riot i Xbox Game Pass. Potrzeba było poświęcenia i ciężkiej pracy setek ludzi, by nieustannie zapewniać graczom niesamowite doznania z gry.