ОЧИСТКА КЛИЕНТА: итоги 2020 года и планы на будущее
Мы обещали периодически рассказывать, как мы улучшаем производительность и стабильность клиента Лиги.
Перед вами шестая статья цикла. (Первую можно прочитать здесь, вторую – здесь, третью – здесь, четвертую – здесь, а пятую – здесь.)
Суть вкратце: за 2020 год мы повысили скорость загрузки клиента, улучшили его архитектуру, доработали экран выбора чемпионов и послеигровой экран, отчасти разобрались с утечками памяти и вылетами, а также исправили ошибки. Сейчас мы составляем план действий на 1-й квартал 2021 года. Основное внимание мы уделим улучшению социальной панели и дальнейшему повышению стабильности клиента.
Итоги 2020 года
Наша команда сформировалась в конце 2019 года, и первым делом нужно было выяснить, в каком состоянии клиент Лиги. В процессе мы решили изучить отзывы игроков со всего мира (всех вас!), чтобы понять, какие составляющие клиента больше всего нуждаются в доработке, и обозначить приоритеты. Впереди долгий путь, однако и в 2020 году мы смогли сделать клиент гораздо лучше.
- Мы начали проводить глобальные опросы о клиенте, чтобы понять, над чем работать дальше. Большинство того, что перечислено ниже, было воплощено в жизнь благодаря пожеланиям игроков.
- Время начальной загрузки клиента для 90% игроков по всему миру теперь составляет не более 16 секунд (в начале 2020 года этот показатель равнялся 29,5 секунды).
- Мы смогли достичь такого результата, улучшив архитектуру клиента: количество приложений Ember, подключаемых во время начальной загрузки, уменьшилось на 63%, а общее число плагинов – на 57%. Иными словами, мы серьезно почистили код.
- Повышена скорость работы и стабильность экрана выбора чемпионов во время выбора и блокировки героев.
- Исправлены проблемы с производительностью во время применения фильтров, а также улучшена сама таблица чемпионов.
- Мы провели исследование, чтобы понять, как часто используются те ли иные функции на экране выбора чемпионов. Читайте об этом ниже.
- Повышена скорость выбора и блокировки чемпионов.
- Устранены утечки памяти на экране выбора чемпионов и в связанных с ним элементах (об этом дальше).
- Исправлены ошибки, из-за которых клиент полностью зависал или показывал черный экран, когда игроки возвращались в него после матча.
- Исправлены ошибки, из-за которых по окончании матча в клиенте появлялась кнопка "Переподключиться", когда для этого не было оснований.
- В 2020 году мы исправили 175 ошибок – от мелочей до серьезных проблем, которые присутствовали в клиенте с момента выхода.
- Имена игроков отображаются в чате как "...".
- Значок на панели задач не подсвечивается, когда игроку приходит новое сообщение в чате.
- На социальной панели не отображаются новые игроки.
- Когда игрок входит в учетную запись на другом компьютере, его настройки сбрасываются.
- При каждом входе в клиент отображаются оповещения о полученных подарках.
- После различных действий в клиенте отображается черный экран.
- Повышена скорость работы раздела "Коллекция" и всех его подразделов.
- Время загрузки раздела "Руны" сокращено на 40% – теперь интерфейс рун более отзывчив и стабилен.
- Устранено 30 утечек памяти по всему клиенту. Эти проблемы были обнаружены достаточно поздно, а поскольку исправить их непросто, мы очень рады, что смогли достичь хороших результатов уже к новогодним праздникам.
- Утечки возникают, когда часть программы не освобождает память после выполнения задачи. В результате у других программ в системе остается меньше ресурсов. Утечки никогда не сулят ничего хорошего, однако определить причину их возникновения крайне трудно – особенно в больших приложениях.
- Пока в обновлении 10.23 не были внесены первые улучшения, касающиеся утечек, игроки из регионов Riot в каждом цикле сталкивались с 193 000 вылетов из-за нехватки памяти. Но к моменту выхода последнего обновления 2020 года – 10.25 – их количество сократилось на 55%!
Как было сказано, при выставлении приоритетов мы ориентировались на результаты глобальных опросов о клиенте. Выше описан прогресс в тех областях, на которые поступало больше всего жалоб, однако все это не имело бы значения, если бы вы не видели разницы. Поэтому мы рады объявить, что улучшения заметны не только по сухой статистике; опросы тоже показывают положительные тенденции, а значит, игроки стали испытывать меньше проблем при работе с клиентом!
Меньше проблем. В этом году нам также предстоит многое сделать, и в процессе мы будем делиться с вами новостями.
Малоиспользуемые функции экрана выбора чемпионов
Если вы читали предыдущий выпуск рубрики, то знаете, что мы хотели удалить некоторые малоиспользуемые функции экрана выбора чемпионов, чтобы повысить общую производительность. Изучив систему избранных чемпионов, а также задания и эмоции, мы решили не удалять их, а оптимизировать. Мы уже решили проблемы, связанные с эмоциями, и теперь работаем над избранными и заданиями.
Текущие приоритеты
Мы еще не закончили составлять план на 1-й квартал этого года, однако уже можем рассказать, чем займемся дальше.
Социальная панель
В прошлом году мы заметили, что проблем, связанных с социальной панелью, становится все больше. В декабре мы исправили ошибку, из-за которой на карточках друзей в матче не показывались тип игры и чемпион. В дальнейшем мы хотим исправить следующие проблемы:
- Социальная панель не подключается к серверу.
- Список друзей не загружается, отображаются некорректные статусы, в списке отсутствуют некоторые друзья.
- Игрок может получать приглашения на добавление, даже если его список друзей полон.
- Когда друг играет в обычной очереди, с его карточки пропадает информация о ранге.
- Чат подтормаживает, если отправлять сообщения слишком быстро.
- Порядок расположения папок меняется сам собой между сессиями.
- При выборе сортировки "Сгруппировать: игры и серверы" не отображаются папки LoR и Valorant.
- При активации параметра "Показывать даты" элементы в чате накладываются друг на друга.
- Оповещения о заявках на добавление показываются, когда они отключены, – и наоборот.
Мы также собираемся избавиться от старого фреймворка Javascript (чуть ниже мы еще вернемся к JS) и перенести социальную панель на Ember. Это хорошая возможность переписать кое-какие места в коде, чтобы повысить стабильность и исправить ошибки.
Стабильность клиента
Теперь расскажем, чем займемся для повышения стабильности клиента Лиги: устранением вылетов и исправлением исключений Javascript, которые могут привести к самым разным проблемам, включая... вылеты. Вместо того чтобы сосредоточиться на какой-то конкретной составляющей (например, экране выбора чемпиона или начальной загрузке), мы будем работать со всем клиентом сразу. Сейчас в приоритете четыре направления.
- Уменьшение количества вылетов. В цикле 10.25 игроки из 16 регионов Riot столкнулись с 2,2 млн вылетов клиента. Рассмотрев возможные причины, мы поняли, что для устранения большинства вылетов надо обновить Chromium. Это веб-браузер, который лежит в основе клиента Лиги.
- Уменьшение количества исключений Javascript. В цикле 10.25 игроки из 16 регионов Riot столкнулись с 36 млн исключений Javascript в клиенте. Не все ошибки JS влияют на производительность или приводят к вылетам, однако и невидимые исключения могут наслаиваться друг на друга, в итоге вызывая серьезные проблемы. Снижение количества ошибок позволит улучшить самые разные части клиента.
- Устранение утечек памяти. В прошлом году мы достигли больших успехов в этой области и не собираемся останавливаться.
-
Улучшение архитектуры и очистка кодовой базы. Чтобы обновить Chromium, нужно много подготовки, которая сама по себе повысит производительность клиента. Мы планируем закончить с этим и перейти на новую версию Chromium где-то к середине года.
- В прошлый раз мы обновляли Chromium в декабре 2019-го – за пару месяцев до начала кампании по очистке клиента. Тогда это привело к ощутимым улучшениям (нажмите CTRL+F и введите "Chromium"). Ближе к окончанию работ по очередному обновлению мы расскажем о том, какие преимущества оно несет.
Ваши отзывы очень важны в кампании по очистке, так что продолжайте их присылать! Мы многого достигли в 2020 году и не собираемся сбавлять темп – в будущем клиент станет еще лучше!