Очистка клиента: выбор чемпиона и конец игры

Улучшение экрана выбора чемпиона и ускорение перехода от конца игры до возвращения в клиент.

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

Перед вами пятая статья цикла. (Первую можно прочитать здесь, вторую – здесь, третью – здесь, а четвертую – здесь.)

Суть вкратце: мы ускорили начальную загрузку клиента и усовершенствовали его архитектуру. Следующий шаг – внести улучшения в экран выбора чемпиона и ускорить переход от конца игры до возвращения в клиент.

Выбор чемпиона

В первой статье, которая вышла в марте, мы говорили о двух ключевых целях улучшения клиента: времени начальной загрузки и времени подтверждения выбора чемпиона (в таком порядке). В сентябре мы наконец сократили время начальной загрузки клиента (период до появления главной страницы клиента) до 15,5 секунд у 90% игроков и объявили, что вскоре начнем работать над экраном выбора чемпионов.

Сегодня мы представляем первые достижения в этой области.

Потребление оперативной памяти во время выбора чемпиона

Мы ожидали, что для улучшения экрана выбора чемпиона потребуется тот же комплекс мер, что и для всего клиента, – объединение приложений Ember, оптимизация кода, исправление ошибок и тому подобное. Однако, погрузившись в работу, мы столкнулись с неожиданной проблемой: потребление памяти клиентом возрастает каждый раз, когда игрок входит в меню выбора чемпиона в рамках одной и той же игровой сессии.

Для игроков 90-го процентиля это выглядит примерно так:

  • при загрузке экрана чемпиона в первый раз потребление памяти клиентом возрастает до 481 MB;
  • загрузка во второй раз требует дополнительных 56 MB;
  • в каждый последующий раз – еще 15-25 MB.
graphcomms.jpg

Грубо говоря, с каждой новой игрой в сессии клиент работает все медленнее и медленнее, и в конце концов остается только перезапуск.

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

Ключевое слово – параллельно, и хотя мы еще не успели далеко продвинуться, небольшие улучшения появятся уже в обновлении 10.23. При выборе заклинаний призывателя и образов тотемов больше не запускаются дополнительные приложения Ember, что сократило потребление памяти клиентом во время выбора чемпиона, хоть и ненамного (~1,6 MB). Это одна из первых обнаруженных нами утечек, и в будущем мы применим полученный опыт для исправления более крупных проблем с потреблением памяти. До конца года мы внесем еще несколько ощутимых улучшений в этой области.

UX (взаимодействие с пользователем) и UI (пользовательский интерфейс) на экране выбора чемпиона

Чтобы улучшить экран выбора чемпиона, одного исправления ошибок недостаточно. Необходимо также определить, какие элементы этого меню имеют для игроков наиболее важное значение, чтобы сократить ресурсы на поддержку менее полезных функций (или даже удалить ненужные возможности). Выбор чемпиона – неотъемлемая часть основного игрового цикла, и чем проще этот процесс, тем меньше в нем потенциальных неполадок. Мы спросили игроков, какие элементы UX/UI на экране выбора чемпиона кажутся им самыми важными, и сопоставили полученные данные с внутренней статистикой по использованию клиента.

Вот как выглядят первые результаты и соответствующие выводы.

  • Игрокам не всегда понятно, реагирует ли клиент на нажатие кнопок, особенно во время выбора и блокировки чемпионов. Мы повысим скорость и надежность визуально-звукового отклика элементов интерфейса, сделав его более очевидным.
  • Игроки обращают мало внимания на визуальные эффекты, сопровождающие выбор заклинаний призывателя и образов тотемов. Мы отключим связанную с этим анимацию (в дополнение к упомянутому устранению утечки памяти).
  • Мы соберем и проанализируем данные о том, как часто игроки используют второстепенные функции на экране выбора чемпиона, которые не слишком важны при подготовке к матчу. Если они не дают ощутимых преимуществ, возможно, мы откажемся от них ради повышения производительности. Речь идет о следующем:
    • панель эмоций;
    • любимые чемпионы;
    • задания.

    Переход к экрану выбора чемпиона

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

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

    Конец игры/послеигровой экран

    Изначально кампания по очистке клиента не касалась конца игры (все происходящее в клиенте, начиная с кнопки "Продолжить" в конце матча и заканчивая загрузкой послеигрового лобби). Но в последнее время эта область стала особо проблемной, и теперь она требует внимания наравне с начальной загрузкой клиента и экраном выбора чемпиона. Мы сосредоточимся на исправлении двух самых раздражающих ошибок.

    1. Игроки жаловались, что в конце игры клиент какое-то время показывает кнопку "Переподключиться", после чего переходит к экрану похвалы, хотя это должно происходить мгновенно. Мы изучаем причины этой неполадки.
    2. Иногда клиент зависает при выходе из матча, из-за чего игроки не видят или не могут взаимодействовать с экраном похвалы и послеигровым лобби. В обновлении 10.23 мы внесем изменения, которые должны исправить эту ошибку.

    Ошибки, связанные с настройками и уведомлениями

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

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

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