Очистка клиента: прогресс, проблемы и находки
Несколько месяцев назад мы рассказали о планах по улучшению клиента League of Legends – инициатива получила название "Кампания по очистке клиента".
Мы хотим держать вас в курсе происходящего, даже если не все идет по плану. Команда продолжает работать над производительностью клиента, но впереди по-прежнему долгий путь.
В этой статье мы поговорим о прогрессе, которого удалось достичь. Кроме того, мы расскажем о возникших проблемах и их решении, а также о следующих шагах.
КОЕ-КАКОЙ ПРОГРЕСС
Как мы уже говорили во вступительной статье, наша первоочередная задача – уменьшить время начальной загрузки хотя бы до 15 секунд – даже у игроков 90-го процентиля. Напоминаем, что начальная загрузка – это период от запуска клиента и до момента, когда он становится полностью функциональным.
Чтобы достичь этой цели, мы хотели сократить количество плагинов и приложений Ember, используемых клиентом, в том числе путем их объединения. На случай, если термины вам незнакомы, плагины – это инструменты, которые позволяют разделить код на полезные части. А приложения Ember – это инструменты, которые лежат в основе нашего пользовательского интерфейса.
Пока работа в этой области продвигается довольно хорошо. На графике ниже видно, как менялось количество плагинов и приложений Ember в клиенте за последнее время. С каждым обновлением эти числа уменьшаются. По сравнению с тем, что было, когда мы запустили инициативу, теперь во время начальной загрузки клиент подключает на 10% меньше приложений Ember и на 20% меньше плагинов.
![chart1.png](https://images.contentstack.io/v3/assets/blt731acb42bb3d1659/blt337061e0b4f7ff8d/5eb3f79155e75137dea939d6/ClientCleanup_Charts_fixed_1.png)
И это отличные новости! Впрочем, мы столкнулись с проблемами, о которых хотим рассказать.
КОЕ-КАКИЕ ПРОБЛЕМЫ
Поначалу работа над плагинами приносила плоды: на протяжении первых циклов года мы отмечали, что время начальной загрузки заметно сократилось.
Однако начиная с обновления 10.3 время начальной загрузки стало медленно изменяться в худшую сторону, пока в обновлении 10.7 не достигло низшей точки на всех процентилях.
Взгляните на график ниже. Чем левее расположена кривая, тем лучше (тем быстрее загружается клиент).
![chart2.png](https://images.contentstack.io/v3/assets/blt731acb42bb3d1659/blta35e7234eb10ba94/5eb3f7911fca102e28a1bb2a/ClientCleanup_Charts_fixed_2.png)
Возможно, показатели снизились из-за возросшей нагрузки на серверы Лиги в последние недели. По очевидным причинам многие сейчас гораздо больше времени проводят дома. Вы чаще играете в Лигу, а это повышает нагрузку на нашу серверную инфраструктуру, что приводит к непредсказуемому времени отклика и замедлению начальной загрузки.
Чтобы справиться с наплывом игроков, мы наращиваем серверные мощности, и вполне возможно, что вскоре производительность клиента снова повысится. Параллельно мы будем устранять другие возможные причины. Например, уменьшим количество кода Javascript, выполняемого во время начальной загрузки.
Независимо от причин в этой ситуации есть и плюсы: как мы говорили во вступительной статье, работая над временем начальной загрузки и подтверждения выбора чемпиона (а это наша следующая цель), мы также чистим и перерабатываем фундаментальные элементы архитектуры клиента.
Это значит, что мы исправляем ошибки и решаем кое-какие архитектурные проблемы клиента, которые доставляют вам неудобства.
Одна из таких архитектурных проблем связана с функцией клиента под названием Affinity.
ПРОБЛЕМЫ С AFFINITY
Affinity появилась в новом клиенте во время его обновления несколько лет назад. Если говорить простым языком, это инструмент, позволяющий указать плагины, которые нужно задействовать до завершения начальной загрузки.
Мы обнаружили две проблемы, связанные с Affinity.
- Affinity была сломана. Где-то в 2018 году Affinity по какой-то причине перестала работать. Из-за этого во время начальной загрузки и перед появлением послеигрового экрана она подключала все плагины вообще.
- Даже работая исправно, Affinity бы не решила наши проблемы. Мы считаем, что даже когда Affinity работала как положено, она все равно неэффективно управляла загрузкой плагинов. То есть у клиента всегда была проблема с подключением слишком большого количества плагинов во время начальной загрузки.
Суть вкратце: нам нужно полностью отказаться от Affinity и внедрить более эффективную систему.
Это неожиданные открытия, но они подтвердили то, о чем мы говорили в начале работы: потратив время на глубокое изучение внутренностей клиента, можно найти фундаментальные причины возникновения проблем.
СЛЕДУЮЩИЕ ШАГИ
Теперь, зная, что Affinity не выполняет свою работу, мы сможем создать новый инструмент, который нормально расставляет приоритеты при подключении плагинов. Так мы не только сократим время начальной загрузки у игроков, но и обеспечим себе новые возможности для работы над клиентом.
Ничто из этого не изменит серьезно наших планов по починке клиента, но может слегка замедлить процесс. Мы в любом случае довольны этими открытиями, потому что теперь путь намечен яснее. Если в итоге клиент станет более стабильным и надежным, то усилия не будут потрачены впустую.
Как только мы добьемся желаемого времени начальной загрузки, начнется второй этап кампании по очистке клиента: сокращение времени отклика на экране выбора чемпиона. Разумеется, для многих из вас этот этап гораздо важнее, и нам не терпится к нему приступить.
Мы продолжим держать вас в курсе происходящего. Скорее всего, следующая статья выйдет в течение следующей пары месяцев. Как всегда, спасибо за игру.