13 июня 2022 года компания Riot анонсировала партнерство с Microsoft, благодаря которому игры компании должны были появиться в Xbox Game Pass. Две крупнейшие в мире игровые компании объединила любовь к соревновательным играм, которые максимально отвечают потребностям геймеров. Шесть месяцев спустя мечта стала реальностью, и наши популярнейшие игры появились в Game Pass.

Сегодня мы хотим рассказать о том, что происходило в течение этих месяцев за кулисами, и познакомить вас с командой специалистов по игровым платформам, которые сделали это возможным.

Кто такие специалисты по игровым платформам?

Можно сказать, что они строят мост между нашими проектами и пользователями, тем самым создавая экосистему из нескольких игр и игровое сообщество. По большому счету, эти специалисты занимаются практически всем, что связано с играми, кроме непосредственно разработки игрового процесса. Они создают независимые системы для учетных записей, ведут социальные сети, управляют игровыми магазинами и многим другим. Все это становится возможным благодаря порталам, интеграции SDK и API для прямого доступа.

Поскольку команда специалистов по игровым платформам отвечает за все, что дополняет непосредственный игровой опыт, они выполняли большую часть работы по интеграции с Xbox Game Pass. Чтобы справиться с этой задачей, при этом продолжая поддерживать уже вышедшие и новые игры Riot, нашим специалистам понадобился командный дух, открытое мышление и готовность много работать.

Быстрый старт

Riot Games стала первой компанией, включившей в Xbox Game Pass игры, в которые можно бесплатно играть на ПК и мобильных устройствах, и никто заранее не знал, что из этого получится. Как бы то ни было, мы хотели поощрить игроков, привязавших свои учетные записи, раздав им специальные награды. Когда мы беремся за столь амбициозные проекты, то стараемся разбивать их на части, чтобы разные команды могли сосредоточиться на разных задачах, не мешая друг другу.

Наша команда по управлению программами активно сотрудничала с Microsoft, чтобы все тщательно спланировать. Благодаря этому в нужный момент проект возглавили люди, которые смогли довести его до успешного завершения. Они организовывали встречи для команд, занятых разработкой, публикациями и поддержкой, а также для прочих заинтересованных сторон. Вместе с сотнями специалистов по игровым платформам и другими сотрудниками они решали сложнейшие задачи и продумывали стратегии дальнейших действий.

Дизайн Xbox Game Pass

Перед созданием новых систем и улучшением существующих необходимо понять, в чем заключается главная проблема и как выглядит ее успешное решение с точки зрения игроков. Поэтому взаимодействие с пользователями сыграло ключевую роль в нашем партнерстве с Xbox Game Pass. Дизайнерские решения важны не только в интерфейсе, но и при создании новых продуктов и систем, с которыми взаимодействуют игроки. Казалось бы, привязать свою учетную запись Riot к учетной записи Xbox Game Pass должно быть проще простого! Однако тут неожиданно обнаружились подводные камни.

В начале партнерства между Riot и Microsoft ведущие дизайнеры интерфейса стали собирать информацию, чтобы оценить, что именно им понадобится для создания жизнеспособных версий продукта. Для этого требовалось понять, каких партнеров и департаменты придется задействовать, какие сроки и ресурсы им нужны, а также предусмотреть все возможные риски. Последний пункт был особенно важен, ведь нужно было решить, стоит ли вообще браться за эту задачу. Чем быстрее будет поставлена цель, тем раньше специалисты могут начать совместную работу над достижением невозможного. Подробнее о процессе создания жизнеспособных версий продукта читайте в нашей статье о разработке интерфейса (на английском).
 

"Сотрудничество двух компаний – это всегда большое испытание. Здесь могут сталкиваться разные терминологии, ожидания, предположения и роли. Нам пришлось немало потрудиться, чтобы разобраться, как работают процессы аутентификации и установки Game Pass от Microsoft. Это было необходимо для правильной оценки того, что потребуется для создания тех самых жизнеспособных версий продукта".

– Шерил Плац
 

Riot Games Xbox Game Pass UX

 

Определившись с первоначальными задачами, дизайнеры приступили к разработке интерфейса для игроков со всего мира, отслеживая возможные проблемы в каждой точке взаимодействия с пользователями и стараясь максимально учитывать их потребности. Нам было важно, чтобы привязка учетной записи проходила легко и непринужденно при любых условиях: как у опытных игроков, так и у новичков; как в приложении Game Pass, так и в клиенте игры от Riot.

При первом взаимодействии между платформами разных компаний могут возникнуть проблемы, с которыми прежде не сталкивалась ни команда по разработке клиента Riot, ни сотрудники Xbox. Например, модель безопасности Microsoft предоставила нашей команде специалистов по игровым платформам интересную возможность проработать новые стандарты авторизации и идентификации. Активное сотрудничество команд из обеих компаний позволило начать движение в нужном направлении.
 

"Мы не были первой компанией, с чьими продуктами они проводили интеграцию, однако методы работы с нами отличались от того, с чем им приходилось сталкиваться раньше. Это было тесное сотрудничество, и обеим сторонам пришлось корректировать свой код, чтобы успешно выполнить задачу. Готовый функционал Microsoft не всегда нам подходил, а времени для адаптации было немного". 

– Лютер Бэйкер
 

На этапе исследования и анализа дизайнеры собирали информацию о текущем положении дел, чтобы понять, как можно добиться желаемого результата. С помощью таких методов, как составление карт сценариев и визуального представления последовательности действий, которые пользователь выполняет для достижения своей цели, сотрудники Microsoft и наши дизайнеры организовали совместную работу над продуктом с инженерами и специалистами по контролю качества. Благодаря непрерывной обратной связи они смогли определить, какие сервисы и возможности сделают интерфейс максимально удобным для игроков.


"Лучше ошибиться на данном этапе разработки, потому что это позволит сразу получить обратную связь, обсудить, почему результат не соответствует ожиданиям, и все исправить как можно раньше, вместо того, чтобы тратить время на поиски правильного ответа заранее, еще до начала разработки". 

– Мелоди Сенг
 

Рабочие продукты не переставали развиваться даже после того, как ключевые решения уже были приняты. Обнаруживались пограничные случаи и исключения, требовавшие отдельных решений. Чтобы добиться максимального взаимопонимания, мы напрямую работали с инженерами и техническими командами.
 

Riot Games Xbox Game Pass User Flows


Создание сервисов, работающих почти в режиме реального времени

Нам хотелось, чтобы привязка учетной записи к Xbox Game Pass проходила для игроков Riot легко и непринужденно, и чтобы сразу после ее завершения они могли разблокировать новый внутриигровой контент. Команда, отвечающая за контент, трудилась вместе с командой по работе с учетными записями, чтобы Riot Event Bus (новый способ коммуникации внутри Riot) получал сообщения каждый раз, когда новый игрок привязывал свою учетную запись к Xbox или отвязывал ее. После получения сообщения система реагировала на событие. Игроки Riot могли привязывать свои учетные записи к профилю Xbox, не имея доступа к Game Pass, поэтому наша команда связывалась с API Xbox и получала необходимую информацию с помощью токенов, предоставленных во время привязки. Команда по работе с учетными записями затем сохраняла этот токен в новом сервисе. Однако это решало проблему лишь частично: нужно еще было проверить, есть ли у игрока активная подписка Xbox Game Pass.

Команда, ответственная за контент (которая входит в команду специалистов по игровым платформам) создала отдельный сервис проверки подписки (GSS), который определял статус Game Pass у каждого игрока с учетной записью Riot. Так появилась возможность с низкой задержкой и высокой точностью узнавать, какими преимуществами должен обладать тот или иной игрок в зависимости от своей подписки. Сервис GSS получает необходимые данные о статусе подписки Game Pass у игроков, используя информацию о событиях по привязке учетных записей и API от Microsoft. Данные предоставляются другим сервисам Riot через API на основе протокола HTTP, и команды внутри компании могут использовать их в различных целях. Например:

  • платформа доступа к контенту добавляет в инвентарь игроков контент, предоставляемый за подписку;
  • команда маркетинговых технологий показывает рекламу в зависимости от текущего статуса подписки Game Pass у игрока;
  • сотрудники службы поддержки используют эти данные, чтобы обрабатывать запросы, связанные с подпиской;
  • WebEx показывает статус подписки игрока на веб-странице управления его учетной записью.

Когда игроки связывали свои учетные записи Riot и Xbox Game Pass, сервис GSS отправлял запрос Microsoft Xbox API о статусе подписки игрока, используя токен от привязки, а затем сохранял полученную информацию в базе данных и регулярно обновлял ее. Таким образом, с помощью API можно было получить доступ к необходимой информации. На первый взгляд все просто, да?

Но игрок мог активировать подписку Game Pass и после связывания учетных записей Riot и Xbox. Наш сервис обращался к Xbox API с запросами о статусе игрока лишь время от времени. Мы же хотели, чтобы сразу после привязки учетной записи и активации подписки Game Pass игроки немедленно получали доступ к контенту по подписке, поэтому запрашивать информацию о статусах игроков нужно было часто. Но насколько часто? Было бы здорово, если бы это могло происходить каждую минуту, но с точки зрения рационального использования системы это не лучший вариант, тем более что в 99% случаев между обращениями статус игроков оставался бы прежним.

Тогда наша команда сосредоточилась на тех случаях, когда игрок взаимодействовал с продуктами Riot: например, заходил в клиент игры. Тогда и запускалась проверка статуса Game Pass. Однако обновление этой информации происходит через внешний запрос по протоколу HTTP, который занимает приблизительно 1 секунду, в то время как основному клиенту GSS требуется результат в течение 50 миллисекунд, поскольку нужно быстро получить доступ к инвентарю игрока. Команде пришлось искать нестандартное решение, чтобы уложиться в такие сжатые временные рамки. Они решили возвращать значение, полученное во время последнего обновления или привязки учетной записи, и запускать асинхронное обновление на сервере, если значение было получено более двух минут назад. Если статус за это время успевал измениться, через мессенджер Riot в клиент поступала информация об этом. В результате игроки получали причитающийся им контент за подписку без необходимости перезапускать клиент вручную.


"В общем, наша главная задача заключалась в том, чтобы сократить время получения ответа. Фактически у нас было 50 миллисекунд на то, чтобы получить запрос о состоянии статуса игрока и отправить ответ. Все происходило практически в режиме реального времени. Если бы за этот срок мы не успевали ответить, сервис мог автоматически решить, что статус не изменился, и тогда игроки не получили бы контент за подписку". 

– Василий Катраев
 

Wild Rift не использует подобную систему для обновления инвентаря игроков, из-за чего возникла необходимость напрямую спрашивать сервис подписки о статусе Game Pass. Чтобы уложиться в 50 миллисекунд, ответственная за контент команда разместила свои сервисы в непосредственной близости от CAP и сервиса управления учетными записями в четырех центрах обработки данных в разных странах.  

Скрытый запуск и обход ограничения баз данных

Всего за несколько дней до того, как сервис был представлен широкой аудитории, наша команда провела скрытый запуск, чтобы протестировать привязку учетных записей Riot к Xbox Game Pass. Благодаря этому было обнаружено несколько серьезных ошибок, которые удалось исправить до официального запуска.

Мы опасались, что сервис, отвечающий за выдачу игрокам во всех играх Riot полагающегося им контента, будет перегружен. В некоторых регионах он получает более 800 тысяч запросов в минуту! Теперь каждый подобный запрос дополнительно перенаправлялся в другую систему, чтобы определить статус подписки Game Pass, после чего уже игрок получал свои награды. Из-за сложности этого процесса время ожидания ответа увеличилось, появился риск сбоев и мог возникнуть ряд других проблем.

Команда провела не одно нагрузочное тестирование, но в конце концов пришла к выводу, что скрытый запуск лучше всего подойдет для проверки системы в условиях реальной нагрузки. Во время скрытого запуска игроки не получали контент за подписку Xbox Game Pass, но в целом тестировщики смогли оценить, как система будет справляться со своими задачами и чего ожидать после официального запуска. Благодаря скрытому запуску была обнаружена ошибка конфигурации, которая могла привести к серьезному сбою, из-за которого игроки не получили бы награды.

Наша команда также столкнулась с проблемой из-за ограниченного размера базы данных: существующая архитектура* не была масштабируемой, так что при запуске интеграции с партнером и увеличении нагрузки расширить базу было невозможно. Обычно подобная проблема решается предоставлением доступа к базе постепенно, в несколько этапов. И наша команда решила замедлить маркетинг, разделив его на несколько волн, чтобы не все игроки разом узнали о новой возможности, и у сервиса хватало мощности справляться с наплывом пользователей поэтапно. В результате удалось снизить нагрузку до 50% от максимально доступного объема базы данных. 

*С момента запуска мы улучшили технические возможности нашей базы данных, чтобы она могла масштабироваться при необходимости.
 

График: почасовое создание и привязка учетных записей Xbox во время запуска.
График: почасовое создание и привязка учетных записей Xbox во время запуска.


Образ мышления и навыки

В процессе интеграции с Xbox Game Pass критически важными оказались не только технические, но и социальные навыки. Ключом к успешному сотрудничеству стали такие качества, как любопытство, скромность, готовность учиться друг у друга и открыто делиться информацией как внутри команд, так и с сотрудниками Microsoft. На реализацию проекта ушло всего полгода, но в нем были задействованы сотни специалистов, которые много часов подряд изучали новые системы. На разных этапах работы было важно уступать ведущую роль тому, кто лучше разбирался в текущей задаче, чтобы процесс всегда двигался в верном направлении, а не тормозился из-за неправильного подхода со стороны отдельных людей или команд.


"То, с каким энтузиазмом и ответственностью сотрудники подошли к проекту, сыграло решающую роль". 

– Нейт Портнер
 

Во многом партнерство стало успешным благодаря ключевым ценностям Riot Games. Во время совместной работы с Microsoft наша команда не переставала задаваться вопросом: «Как то, что мы делаем, повлияет на наших игроков?» Как всегда, чтобы соблюсти высший стандарт качества, сотрудники компании поставили интересы игроков превыше всего, и создали отличный новый функционал, затронувший все игры Riot.
 

"Каждый член нашей команды думал о том, как его решения повлияют на конечный продукт, который увидят игроки. Мы хотели полностью оправдать их ожидания.". 

– Мэтт Хоукинс

В заключение

Конечно, обо всей проделанной работе невозможно рассказать в одной технической статье, но мы надеемся, что немного пролили свет на то, как проходила интеграция учетных записей Riot и Xbox. Чтобы создать продукт, который порадует игроков, нужна упорная работа сотен сотрудников, и наша команда специалистов по игровым платформам достойно справилась со своей задачей.