Dev
LIMPEZA DO CLIENTE: 2021 e o que vem por aí

Trazendo uma atualização do Chromium e investigando outras oportunidades.

  • Copiado para a área de transferência

Prometemos falar com mais frequência sobre o trabalho que temos feito para melhorar o desempenho e a confiabilidade do cliente do LoL.

A atualização de hoje é a sétima parte dessa série. (Confira também o primeiro, o segundo, o terceiro, o quarto, o quinto, e o sexto artigo)

Resumão: Passamos o primeiro trimestre de 2021 trabalhando para atualizar o Chromium Embedded Framework (CEF). Ainda temos trabalho a fazer, mas esperamos conseguir uma nova versão do CEF até o fim do segundo trimestre, o que trará vários benefícios para os jogadores.

Atualizando o Chromium Embedded Framework (CEF)

Como já comentamos, um dos maiores projetos em que estamos trabalhando é a atualização do Chromium Embedded Framework em nosso cliente – o navegador que atua no coração da estrutura do cliente do LoL. Nós compreendemos a importância dele na última conversa, então falaremos diretamente: atualizar o CEF nos permite fazer a principal melhoria individual do cliente, que trará benefícios diretos para o jogo e permitirá que outras melhorias sejam implementadas.

A última vez em que atualizamos o CEF foi em novembro de 2019 (versão 74). Quando este artigo foi escrito, ele já estava na versão 90. Atualizar o CEF (pretendemos utilizar a versão 90), trará os seguintes benefícios:

  • Redução de travamentos do cliente
    • As versões antigas do CEF não funcionam muito bem em algumas máquinas. Os dados mostraram que a maioria dos travamentos podem estar sendo causados por conta de uma versão desatualizada do CEF. Acreditamos que, com a atualização, teremos menos travamentos.
  • Melhorias de compatibilidade
    • A equipe do CEF testa, sem parar, versões do Chromium em várias combinações de equipamentos diferentes,e o cliente do LoL acaba se beneficiando com esses testes.
  • Desempenho WebSocket mais rápido
    • O cliente do LoL tem dois pedações: a aplicação visual em que vocês interagem, chamada de "front end", e um pedaço menor, chamado de "fundação", que fica nos bastidores, coletando dados dos nossos servidores e encontrando as informações que o cliente precisa para exibir tudo direitinho. Exemplos de coisas que a fundação faz:
      • "Esta pessoa quer que o cliente esteja fechado durante as partidas. Uma partida acabou de começar. É preciso encerrar o front end até que a partida seja concluída."
      • "A aba Coleções foi aberta. Quais Campeões já foram habilitados nesta conta?"
    • Um WebSocket é como um cano que conecta o front end e a fundação. Um cano maior, com menos voltas e curvas, consegue movimentar dados mais rapidamente, e é isso que o novo CEF oferece. Para jogadores com máquinas mais antigas, melhorias no WebSocket podem resultar em melhores desempenhos em situações em que muitos dados são transferidos (Fim de partida, Seleção de Campeões). Comparando nossas versões do CEF, o tráfego de dados pode ser até:
      • 4,1x mais rápido em máquinas Windows
      • 7,8x mais rápido em máquinas Mac
  • Melhorias no desempenho de animações
    • Principalmente em animações que são geradas de forma procedural de acordo com dados, como a barra de experiência da tela de Fim de partida (temos várias dessas). Essas animações são, tecnicamente, um tipo de vazamento de memória. Por conta disso, o desempenho geral do cliente em sessões mais longas será melhorado.
  • Mais quadros por segundo – Redução da "lerdeza" e reconhecimento mais rápido de cliques
  • Recursos mais fáceis (leia-se: mais rápidos e confiáveis) para os nossos desenvolvedores
    • Novas formas de evitar vazamentos de memória em longas sessões
    • Uma nova medida que fornece dados melhores sobre o tempo que as coisas levam para serem processadas na tela
  • Melhor uso de CPU
    • A versão atual do CEF do cliente (74) trouxe um recurso chamado "Serviço de Rede", que condensa todos os pedidos de rede em um único canal da sua CPU, liberando os demais canais para outras coisas, como carregamento de conteúdo. Não estamos utilizando esse recurso ainda, já que ele era novo quando atualizamos o CEF pela última vez e não tivemos tempo para experimentá-lo desde então. Porém, em nossa próxima atualização do LoL, começaremos a planejar seu uso.
  • Melhorias no desempenho de Javascript
    • Versões mais recentes do Chromium trazem melhorias consideráveis para a engine v8 que ele usa para compreender Javascript. Assim como as melhorias de compatibilidade, esse é um benefício que chega com as atualizações.

Nosso trabalho nesse último trimestre consistiu em atualizar nossos componentes web (a tecnologia do site de vídeos embutidos, notificações pop-up e por aí vai) para garantir que o novo CEF não vá quebrar nada quando for implementado. Queremos que essas mudanças sejam suaves, então esperamos que vocês não tenham percebido essas alterações nas últimas atualizações. Como essas atualizações usam muitos códigos, sabemos que alguns errinhos podem ter escapado dos testes, mas já estamos corrigindo tudo.

Dito isso, estamos a apenas algumas semanas de terminar as melhorias dos componentes, então poderemos atualizar o CEF e concluir tudo até o fim de julho de 2021.

Painel Social

Outra área em que estamos focados e que mencionamos da última vez é o Painel social. Nosso plano a longo prazo é mudá-lo de ComponentsJS (a antiga estrutura) para Ember,mas tivemos que dar uma parada nesse projeto para terminarmos a atualização do CEF. Embora já tenhamos concluído alguns passos dessa migração para Ember, só voltaremos para esse projeto quando o CEF for atualizado.

Aqui estão alguns problemas do Painel social que já solucionamos antes de nos focarmos na atualização do CEF:

  1. Problema de conexão do Painel social
  2. Problema de carregamento da Lista de Amigos, exibição incorreta de status e falha na exibição de amigos
  3. Desaparecimento de informações das ranqueadas no cartão flutuante quando alguém está em uma partida normal
  4. Tela piscando entre as seguintes opções: Sem Conexão, Poro Triste e início da Lista de Amigos

Atualização no consumo de memória e erros do Javascript

Também continuamos monitorando o consumo de memória em partidas. É com prazer que podemos dizer que vimos uma queda de quase 30MB por partida desde a atualização 10.25, e uma redução constante de travamentos por falta de memória em todos os cenários.

Por fim, o último assunto que queremos abordar são os erros do Javascript. Cometemos um erro em nossa última publicação sobre o número de erros de Javascript que os jogadores encontraram nas regiões da Riot. Na atualização 10.25, o número era de 265 milhões. O bom é que isso só ajuda a ressaltar a urgência do problema. Além disso, o verdadeiro número de erros que os jogadores encontraram não mudou – foram nossas medidas que mudaram. Desde então, nós reduzimos o número de erros para 140 milhões por atualização e estamos confiantes de que podemos reduzir esse número ainda mais.

O que vem por aí

Embora a atualização do CEF seja nosso foco principal a curto prazo, também temos alguns outros planos para 2021.

  • Migração do Painel Social para Ember, como já falamos
  • Reavaliação do Fim de partida. Embora alguns dos principais erros de desempenho do Fim de partida tenham sido resolvidos no fim do ano passado e no começo deste ano, ainda existe trabalho a ser feito. Muitos jogadores ainda reclamam da demora para voltar para o cliente e dos travamentos no fim das partidas. Quando esse projeto for iniciado, começaremos mapeando as interações do cliente com os serviços e a engine do jogo, assim veremos como podemos melhorar as coisas. O Fim de partida trabalha com outros serviços que não estão no escopo da equipe do cliente, então parte do trabalho será feito junto de outras equipes para priorizar ajustes em conjunto.
  • Atraso na chegada à Seleção de Campeões. Esse é um problema bastante mencionado em algumas regiões, o que indica que existe uma dependência em relação à conexão de rede dos jogadores (a infraestrutura da internet varia de acordo com a região). Embora não possamos fazer muita coisa para solucionar problemas de rede, continuaremos trabalhando com a equipe do Competitivo, fazendo o que for possível com o cliente para garantir que todo mundo chegue à Seleção de Campeões rapidamente.
  • Estabilidade do cliente em longas sessões. Um dos nossos focos principais no fim do ano passado era o vazamento de memória, que fazia com que o cliente consumisse cada vez mais memória de acordo com o número de partidas jogadas ou com a quantidade de tempo que ficava aberto de uma só vez. Para lidar com isso, estamos buscando maneiras de fazer com que o cliente pareça ter sido iniciado a pouco tempo, independentemente do tempo que ele já passou aberto e do número de partidas jogadas. Talvez a solução para esse cenário seria dobrar nossos esforços e lidar com mais vazamentos de memória, mas ainda temos que avaliar essa solução a curto prazo.

Esta atualização acaba por aqui! Como sempre, os comentários que recebemos de vocês através de pesquisas e outros meios nos ajudam demais. Continuem falando pra gente o que precisa ser melhorado no cliente e quais mudanças foram mais impactantes pra vocês!



  • Copiado para a área de transferência