Загрузка...

ОЧИСТКА КЛИЕНТА: НАЧАЛО 2021-ГО И ПЛАНЫ НА БУДУЩЕЕ

Тема в разделе League of Legends создана пользователем lexxonIxx 10 май 2021. 322 просмотра

Загрузка...
  1. lexxonIxx
    lexxonIxx Автор темы 10 май 2021
    Всем привет с вами Lexonnchik, в данной теме я с вами поделюсь интересной информацией про очистку клиента.
    [IMG]
    Chromium Embedded Framework
    В прошлый раз разработчики говорили, что один из наших главных приоритетов – переход на новую версию Chromium Embedded Framework (CEF). Это веб-браузер, который лежит в основе архитектуры клиента Лиги. В предыдущей статье они преуменьшили важность этого шага, поэтому сейчас расскажем обо всем подробнее. Ни одно другое изменение не принесет столько пользы, как обновление CEF. Переход не только повысит качество клиента, но и развяжет нам руки в плане других улучшений.
    В последний раз они обновляли CEF в ноябре 2019 года (до версии 74), а на момент написания этой статьи последняя версия CEF – 90. Как раз на нее разрабочтики и хотят перейти. Это принесет следующие плоды:

    • Сократит количество вылетов клиента.
    • Старые версии CEF не дружат с некоторым оборудованием. Судя по ранней статистике, большинство вылетов могут быть связаны с устаревшей версией CEF. Мы убеждены, что обновление снизит количество случаев аварийного завершения работы клиента.
    • Повысит совместимость.
    • Команда CEF тщательно тестирует новые версии на самых разных конфигурациях оборудования. Клиент Лиги сможет бесплатно воспользоваться плодами этой работы.
    • Повысит производительность WebSocket.
    • Клиент Лиги состоит из двух основных частей: фронтенда – то есть внешнего приложения, с которым вы взаимодействуете, – и гораздо меньшего по размеру основания, работающего "за кулисами". Основание получает данные с сервера и управляет информацией, необходимой клиенту. Примеры его задач:
        • Этот игрок включил параметр "Закрывать клиент во время игры" и только что вошел в игру. Нужно закрыть фронтенд до тех пор, пока матч не закончится.
        • Этот игрок только что открыл раздел "Коллекция". Какие чемпионы у него есть?
        • Проще говоря, WebSocket – это труба, которая соединяет фронтенд и основание. Если сделать трубу шире и прямее, данные будут доставляться быстрее, – и в этом нам поможет новая версия CEF. Улучшения в работе WebSocket позволят повысить производительность там, где передается много данных (например, на послеигровом экране или на этапе выбора чемпионов), особенно у игроков со старым оборудованием. Вот какого прироста в скорости работы можно достичь после обновления CEF:
        • В 4,1 раза быстрее на Windows.
        • В 7,8 раза быстрее на Mac.
    • Повысит скорость анимации.
    • В частности, анимации, которая генерируется на основе данных, – например, в шкале опыта на послеигровом экране (и во многих других местах). Кроме того, такие виды анимации вызывают утечки памяти, поэтому улучшения в этой области позволят повысить производительность клиента в длительных сессиях.
    • Повысит частоту кадров – то есть клиент будет меньше "подтормаживать" и быстрее реагировать на действия игрока.
    • Упростит разработку (ускорит работу с клиентом и повысит надежность).
    • Даст дополнительные способы борьбы с утечками памяти во время длительных игровых сессий.
    • Позволит собирать новые статистические данные, благодаря которым мы сможем лучше понимать, сколько занимает отрисовка отдельных элементов клиента.
    • Приведет к более грамотному использованию процессора.
    • В 74-й версии CEF, которая сейчас используется в клиенте, появилась функция под названием "Сетевая служба". Она обрабатывает все сетевые запросы в одном потоке процессора, освобождая остальные для других задач вроде загрузки контента. Когда мы переходили на 74-ю версию, эта функция была совсем новой, и мы не стали ее трогать, потому что у нас не было времени на эксперименты. Но после грядущего обновления мы сможем начать подготовку к ее использованию в Лиге.
    • Повысит производительность Javascript.
    • В новых версиях Chromium значительно улучшен движок v8, который используется для обработки Javascript. Как и в случае с улучшением совместимости, мы сможем воспользоваться всеми преимуществами этого изменения, просто обновив версию CEF.
    Весь прошедший квартал разработчики занимались обновлением веб-компонентов (технологии для встраивания видео, отображения всплывающих окон и тому подобного) до версий, совместимых с новыми выпусками CEF, чтобы последующее обновление самого фреймворка ничего не сломало. Они хотели, чтобы эта работа прошла незаметно для игроков, и надеемся, что вы не столкнулись со странностями в работе клиента после выхода последних обновлений. Эти изменения затрагивают значительный объем кода, поэтому избежать мелких проблем не удалось, но они решаем их по мере обнаружения.

    В прошлой статье разработчики упоминали социальную панель. В долгосрочной перспективе мы хотим перевести ее с ComponentsJS (старая архитектура) на Ember. Сейчас этот проект поставлен на паузу, потому что все силы брошены на обновление CEF, однако ранее мы провели кое-какие подготовительные работы, необходимые для перехода на Ember. Они вернутся к социальной панели, когда закончим с CEF.
    Прежде чем начать подготовку к переходу на новую версию CEF, они успели решить следующие серьезные проблемы:


    1. Социальная панель не подключается к серверу.
    2. Список друзей не загружается, отображаются некорректные статусы, в списке отсутствуют некоторые друзья.
    3. Когда друг играет в обычной очереди, с его карточки пропадает информация о ранге.
    4. Во время загрузки клиента в списке друзей попеременно отображается то статус "Отключен", то грустный поро.

    Разработчики также продолжают следить за количеством памяти, потребляемой во время матчей в каждой сессии. Они рады сообщить, что с момента выхода обновления 10.25 клиент стал потреблять почти на 30 МБ меньше за каждую игру, а количество вылетов, вызванных нехваткой памяти, стабильно сокращается.
    В завершение они хотели бы поговорить об исключениях Javascript. В прошлой статье создатели назвали неверное количество исключений, с которыми сталкивались игроки в регионах Riot. В цикле 10.25 их было аж 265 миллионов. Это пугающая цифра, но не забывайте, что фактическое количество исключений не изменилось – поменялись только наши методы подсчета. Впрочем, это лишь подчеркивает важность проблемы. С тех пор они уменьшили число исключений до 140 миллионов за цикл и продолжаем работать в этом направлении.
    Сейчас у них в приоритете обновление CEF, но они уже строют планы и на вторую половину 2021 года.
    • Перевести социальную панель на Ember (о чем мы рассказывали выше).
    • Улучшить послеигровой экран. В 2020 году и в начале 2021-го мы исправили несколько серьезных проблем с производительностью на послеигровом экране, однако работа еще не закончена. Игроки по-прежнему жалуются на слишком медленное возвращение в клиент после окончания игры и/или зависание послеигрового экрана. Когда придет черед этого проекта, мы составим схему всех взаимодействий клиента с внутриигровым движком и службами, а затем будем решать, что нужно сделать. Послеигровой экран взаимодействует с множеством служб, за которые отвечают другие команды Riot, поэтому мы будем сотрудничать с коллегами, чтобы исправить проблемы в точках соприкосновения.
    • Решить проблему с поздним попаданием на экран выбора чемпиона. В некоторых регионах этот вопрос стоит особенно остро – а значит, проблема связана с качеством соединения у игроков (уровень развития инфраструктуры интернета в разных регионах может отличаться). Мы не в состоянии решить проблемы с местными сетями, однако сделаем все, что от нас зависит, и вместе с командой, отвечающей за соревновательную часть игры, будем работать над тем, чтобы все игроки попадали на экран выбора чемпиона в разумные сроки.
    • Повысить стабильность клиента в длительных сессиях. В конце прошлого года мы в экстренном порядке переключились на устранение утечек памяти, которые возникали, когда пользователи играли несколько матчей подряд или оставляли клиент открытым на долгое время. В будущем мы вернемся к этой проблеме: в идеале клиент всегда должен функционировать так, словно его только что запустили, независимо от количества сыгранных матчей или времени работы. Предполагаемое решение – удвоить наши усилия, чтобы устранить самые сложные причины возникновения утечек. Однако сначала разработчики рассмотрят более быстрые варианты.

    Информация была взята с официального сайта League of Legends
     
    10 май 2021 Изменено
  2. Селлари
    Селлари 10 май 2021 Заблокирован(а) 92 27 фев 2021
    Копипаста,сэр?
     
    1. lexxonIxx Автор темы
Top