Micro-atualizações salvam Anivia

Por: bananaband1t

Há algumas semanas, a Carnanivia trouxe o espírito do Carnaval para o Rift. Em meio às fantasias e comemorações, alguns relatos de erros no pássaro gelado começaram a aparecer. As equipes de QA (Controle de Qualidade) da Riot não demoraram para confirmar que sua habilidade ultimate não estava aplicando corretamente o efeito que dobra o dano de Congelamento. O erro era impactante o suficiente para justificar que Anivia fosse desativada até que encontrássemos uma maneira de arrumar, e esse conserto teria que ser testado da noite para o dia antes que pudéssemos implementá-lo. Isso significa que, sendo otimista, os jogadores só poderiam usar Anivia a partir de sexta-feira à tarde... mas, exceto em casos onde o jogo está totalmente quebrado, a gente não aplica consertos em sextas-feiras: O risco de causar, sem querer, um problema ainda maior durante horários de pico nos finais de semana é alto demais.

Além disso, a festa tinha acabado de começar e estava prestes a ser encurtada, afinal, Anivia ficaria longe do Rift até segunda-feira. Peraí... A Anivia não ficou desativada durante todo o final de semana.

O que permitiu que salvássemos a Criofênix desse terrível destino? Para responder isso, precisamos mergulhar em um mundo de servidores, clientes, reenvios e micro-atualizações.


Spoiler: vai ficar (um pouco) técnico

Os dados do jogo ficam em dois locais: no cliente e no servidor. Os dados do cliente são baixados nos computadores dos jogadores e, para alterá-los, precisamos que vocês façam o download de uma atualização. O cliente conta com muitas informações visuais e de áudio, como a aparência de Summoner’s Rift, modelos de Campeões e dublagens.

O servidor de jogo é onde você se conecta logo após a Seleção de Campeões. É uma espécie de universo que executa suas partidas 5v5 (ou 3v3, ou 1v9). Quando fazemos alguma mudança nos servidores de jogo, não existem indisponibilidades ou downloads. Os servidores contam com informações númericas, como estatísticas de campeões e comandos que controlam como as habilidades funcionam (mas nem sempre possuem seus visuais).

Processo de conceito da arte promocional da Carnanivia

Por muito tempo, a única maneira de alterar o cliente ou servidor era enviar novas informações através de atualizações (envios) ou consertos (reenvios). Reenvios geralmente focam em dados do servidor e costumavam ser maneira mais comum de consertarmos problemas importantes (questões extremas de balanceamento, erros nos Campeões etc...).

Ainda que a maior parte dos problemas seja pequena e demande que apenas poucos dados sejam alterados, reenvios são arriscados e exigem testes da noite para o dia. No entanto, não podemos reenviar apenas um pedaço dos dados—a gente precisa reenviar todos os dados. Brian “Riot Penrif” Bossé, engenheiro arquiteto, diz: “Realizar um processo pesado de QA para enviar uma mudança pequena pode ser ineficaz e possui mais riscos do que podemos prever”.

E mesmo depois de passar a noite fazendo testes, não fazemos reenvios nas sextas-feiras, a não ser que a emergência seja enorme (casos em que as ranqueadas estejam quebradas ou que os jogadores só podem escolher o Teemo). Parte da arquitetura de League foi construída há muito tempo, antes mesmo de sabermos a quantidade de conteúdo que colocaríamos nessa estrutura, e um pedaço dela não é tão confiável quanto gostaríamos que fosse.

Certa vez, logo depois de reenviarmos dados do cliente, o arquivo executável do League de todos os jogadores foi excluído. Isso significa que ninguém conseguia abrir o jogo. Donna “Riot Feithen” Mason, Líder de Lançamentos, diz: “Idealmente, se apertamos um botão, esperamos que ele faça a mesma coisa todas as vezes, mas nem sempre é assim”.

Ainda estamos trabalhando em melhorar algumas estruturas desatualizadas do League mas, enquanto isso não acontece, alguns reenvios podem ser imprevisíveis. Costumamos ter cuidado, principalmente antes de um final de semana, já que reenvios nos obrigam a mandar todas as informações novamente, não importa o quão pequena seja a mudança.

Sabíamos que tinha de haver uma maneira melhor de consertar probleminhas causando problemões.


Micro-atualizações, as heroínas sorrateiras

Há cerca de um ano, uma nova tecnologia chamada micro-atualizações mudou tudo. Ao contrário dos reenvios, elas podem fazer mudanças específicas e direcionadas nos dados de jogo. Se você enxergar o servidor de jogo como um quadro de avisos, a micro-atualização é como se fosse um bilhetinho fixado lá. Reenvios significam mudar a coisa toda para, muitas vezes, alterar uma letrinha errada. Com as micro-atualizações, o antigo servidor de jogo ainda está ali, mas quando um novo jogo está sendo carregado, ele procura pelo bilhetinho e aplica somente aquele mudança específica.

Podemos enviar uma micro-atualização para o mundo todo em menos de dois minutos.

Isso faz com que elas sejam muito menos arriscadas e bem mais rápidas que reenvios. As micro-atualizações se baseiam em dados existentes em vez de reenviar todos esses dados, então as alterações que fazemos são mais contidas. Além disso, é moleza implementá-las e revertê-las. Podemos enviar uma micro-atualização para o mundo todo em menos de dois minutos, e removê-la é tão rápido quanto.

Durante um tempo, micro-atualizações só podiam ser usadas para alterar dados númericos—basicamente, elas estavam lá para cuidar de problemas de balanceamento que precisavam rapidamente de atenção. Na época, não havia uma maneira de fazer alterações direcionadas nos comandos que controlam como as habilidades dos campeões funcionam, e isso significa que grandes reenvios ainda eram a única maneira de consertar (a maioria dos) erros que nos faziam desativar conteúdos.

Algumas semanas antes de encararmos o erro que desativaria Anivia, a tecnologia salvadora de Campeões foi concluída: Agora, podíamos usar micro-atualizações para realizar mudanças específicas nos comandos de habilidades.


O Renascimento de Anivia

No dia que lançamos a Carnanivia, descobrimos que o erro da habilidade ultimate afetava todas as suas skins. As equipes de QA começaram a investigar, trabalhando para determinar a fonte do problema. Matthew “PhRoXzOn” Leung-Harrison, Desenvolvedor de Jogo Associado, que trabalhou nas mudanças da Anivia lançadas na Atualização 6.23, diz: “Soube o que estava dando errado no momento em que vi o erro acontecer”.

Cada Campeão em League possui um arquivo que contém comandos que controlam suas habilidades. Esse arquivo nem sempre conta com informações sobre os visuais das habilidades, ou quanto de dano elas aplicam. Ele controla a maneira que as habilidades devem funcionar—é uma espécie de placa-mãe que conecta e sintetiza todas as informações, resultando no que você vê na tela.

Rolou uma confusão e acabamos enviando uma versão quebrada do arquivo da ultimate da Anivia para os servidores. O resultado disso foi a ultimate dela parecendo que funcionava—ela era ativado quando você apertava “R” e tinha efeitos bonitos de partículas—mas não estava funcionando corretamente. Tempestade Glacial deveria aplicar um efeito de dois segundo para o dano duplo de Congelamento, mas estava aplicando um efeito de apenas 0.5 segundos. Brian “Aotus” Braus, Líder de QA, comentou: “Anivia estava linda... mas não causava dano”.

Depois de identificarmos o problema, atualizamos seu comando lógico e passamos um tempo fazendo testes. A alteração corrigiu o novo erro, mas ao investigarmos mais a fundo, descobrimos um antigo problema que poderia ser abusado e que teve origem na Atualização 6.23. A sorte é que o processo de QA para micro-atualizações é rápido, afinal, estamos apenas testando resultados de uma mudança específica. Fizemos uma segunda modificação, que funcionou: Corrigimos os dois erros e estava tudo pronto para enviarmos a micro-atualização para os jogadores.

Nada de desativar a Campeã durante o final de semana—dentro de quatro horas, Anivia estava de volta para sua folia gelada no Rift.


As micro-atualizações podem consertar tudo?

Costumávamos usar micro-atualizações para arrumar problemas de balanceamento e essa foi a primeira vez que realizamos uma mudança em um comando lógico para salvar uma Campeã do terrível destino da desativação. Essa tecnologia não funciona em todas as situações—não lançaremos uma micro-atualização para adicionar algo ao Campeão ou aplicar um efeito visual, mas elas representam um recurso rápido e de baixo risco para tratarmos de alguns problemas.

No momento, estamos trabalhando para encontrar uma maneira melhor de comunicar micro-atualizações para os jogadores. Atualmente, elas são adicionadas no topo das Notas da Atualização, mas quem é que volta para ler as Notas tempos depois que a atualização foi aplicada?! Pensamos em exibir alterações maiores, como ajustes de redução ou aumento, nos alertas do cliente, mas esse recurso está lá para informar jogadores sobre algo que está instável ou quebrado. Esperamos que o cliente atualizado nos dê mais opções de compartilhar detalhes de micro-atualizações com vocês.

Enquanto isso, Riot Penrif brinca: “Se alguma coisa acaba funcionando quando você pensava estar quebrada, vamos supor que as micro-atualizações salvaram o dia“.


8 months ago