Como Reviver um Dragão

Por: Riot Costy

Em 29 de setembro de 2016, primeiro dia do Campeonato Mundial 2016, desativamos Aurelion Sol por conta de um erro sério. Em 2 de outubro, quarto dia do Mundial 2016, o Forjador de Estrelas marcou seu retorno ao Rift. Essa é a história de um erro que escolheu um péssimo momento para acontecer, e das equipes que trabalharam incansavelmente para consertá-lo.


São Francisco - 22:30 (Horário do Pacífico), 29 de setembro

TSM, da América do Norte, e Royal Never Give Up (RNG), da China, começam o último jogo do primeiro dia do Mundial 2016. Após dois minutos do início da partida, Bjergsen (TSM) pausa o jogo alegando um problema de visibilidade com o Aurelion Sol de Xiaohu (RNG). As estrelas que ficam orbitando Aurelion tinham desaparecido.

LUKE RINARD, Designer de Aurelion Sol: Como designer do Aurelion Sol, fiquei muito empolgado ao vê-lo sendo escolhido naquele nível do cenário profissional. Ele já tinha sido escolhido antes, mas né... era o Mundial! E ele apareceu logo no primeiro dia! Então, pausaram o jogo e eu pensei: “Essa não... Aposto que é alguma coisa com o Aurelion”. Costumo fazer isso quando Bardo e Aurelion estão na partida, sempre aposto que é algo com eles, mas geralmente não é. Dessa vez, era.

BRIAN BOSSE, Engenheiro Arquiteto: Estava em casa assistindo à transmissão e, então, houve uma pausa. Me bate um arrepio sempre que isso acontece. Comecei a rezar: “Que seja um problema no áudio, vai, Deus, problema no áudio”, porque costuma ser no áudio (e, geralmente, consertam muito rápido). E não era no áudio.

AMELIA VON HADEN, Programadora de Jogo: Estávamos assistindo ao jogo, vimos o replay e nossa reação foi: “Ahhhh, nããããoooo!”.

RAVEN KEENE, Juiz Líder: Quando vemos um erro, nossa reação imediata é sempre a mesma: tentar obter o maior número possível de informações. Nesse caso, o juiz entrou em contato dizendo que Bjergsen estava reclamando por não conseguir ver as estrelas de Aurelion Sol. Pegamos a gravação do palco, que nos dá a visão que o jogador em questão teria. Vendo como espectador no cliente, não identifiquei nenhum problema, mas quando assistimos ao vídeo do ponto de vista de Bjergsen, ficou claro que ele estava vendo um erro.

Reiniciamos o cliente e, inicialmente, estava tudo certo. Comentamos: “Ah, talve fosse um daqueles erros onde o recurso não carrega corretamente, não precisaremos recomeçar a partida nesse caso”. Porém, depois de um minuto, o erro apareceu novamente e ficou claro que reiniciar o cliente não ia ajudar. Tivemos que partir para a próxima solução, e foi aí que consideramos a recriação (/remake) da partida.

NICK TROOP, Produtor de eSports: Ser pego de surpresa e encarar a possibilidade de ter um Campeão desabilitado durante um evento faz com que achemos que falhamos, ainda que alguns erros sejam únicos e inesperados, como o do Aurelion Sol.


Los Angeles - 23h, 29 de setembro

Com Aurelion Sol desabilitado, começava a corrida para encontrarmos a causa do erro e identificar uma maneira de consertá-lo. Uma equipe de Rioters foi para o escritório de Los Angeles estudar o problema.

BRIAN BOSSE: Quando o problema ocorreu, eu estava em nosso canal de comunicação interno, e ele começou a explodir com mensagens: “Temos um problema com as estrelas de Aurelion Sol”. Como participei da criação daquele sistema, pensei: “Chegou a hora de mostrar o que sei fazer. Vamos lá”. Depois da segunda pausa, quando confirmamos que o erro não havia sido consertado, coloquei minha Bat-capa, fui para o escritório e comecei a investigar.

AMELIA VON HADEN: Entrei imediatamente na sala de chat para entender o que estava acontecendo com o erro. Sou programadora de jogo e conheço bem o código do League, e se fosse um erro relacionado ao jogo, talvez pudesse ajudar. Também participei da equipe de Campeões enquanto Aurelion Sol estava sendo desenvolvido, então sabia um pouco sobre a implementação da sua passiva. Fui parar no canal de triagem do Mundial, onde eles estavam falando sobre o erro. Por ser algo que talvez eu pudesse ajudar, pensei: “Vou até o estúdio”.

BRIAN BOSSE: Eu estava dirigindo até o escritório e pensando: “Que diabos deu errado com o ambiente de eSports, será que isso está afetando todo mundo?”. Nesse ponto, tudo está em jogo. Estamos fora do horário comercial, a estrutura normal de comunicar erros não existe, quem estiver disponível é a pessoa que vai lidar com o que está acontecendo. Eu estava disponível, então lidei.


São Francisco - 0h, 30 de setembro.

O dia de evento tinha chegado ao fim, então a equipe de eSports que estava em São Francisco começou a tentar reproduzir o erro. Essa etapa é crucial quando você quer identificar um problema e aprender a consertá-lo. Nesse ponto, existem três equipes pelo país trabalhando no problema: a equipe de eSports em São Francisco, o time de desenvolvimento em Los Angeles e uma equipe externa de QA (Controle de Qualidade) em Montreal.

RAVEN KEENE: Passamos horas tentando descartar todos os passos de reprodução de erro que podíamos. Estávamos nos esforçando ao máximo para reproduzir o cenário que vimos no jogo e tentando excluir variáveis. Não lembro quantos testes realizamos, mas foram mais de 20 tentativas de reiniciar o jogo, repetidamente, para ver o que estava causando isso.

NICK TROOP: A primeira reprodução que conseguimos foi quando um engenheiro usou nossa ferramenta de um jogador. Ele conseguiu reproduzir o erro colocando nove Aurelions em um jogo. Isso não é possível, claro, mas eles conseguiram trabalhar com isso do ponto de vista de engenharia e pudemos testar resultados no palco. Uma coisa é desativar o Campeão durante o dia até entendermos o problema, mas quando Raven precisa decidir se vai desativar Aurelion pelo restante do Mundial, é outra. Não queremos estar nessa posição -- é uma droga para quem está assistindo e para os jogadores profissionais.

RAVEN KEENE: A falta de clareza da situação foi o que deixou o caso tão interessante. Começamos a usar contas dos jogadores profissionais para testar, já que as contas de teste não estavam conseguindo reproduzir o erro da maneira que gostaríamos. Isso nos fez pensar que talvez o erro estivesse relacionado a elas, afinal, tudo o que criamos e nossas variáveis são constantes, e as únicas coisas que mudamos foram as contas.


Los Angeles - 02h, 30 de setembro

A equipe localizada no sul da Califórnia consegue produzir sua primeira reprodução e começa a trabalhar na engenharia reversa para descobrir a raiz do problema.

BRIAN BOSSE: Em casos assim, a primeira coisa a se fazer é entender os fatos—o que você sabe e o que não sabe. Naquele ponto, a única coisa que tínhamos era um vídeo da tela de Bjergsen. Para tentar reproduzir, abrimos o cliente em nossos computadores e seguimos os passos que Aurelion Sol deu no momento do erro, da maneira mais precisa que podíamos, mas não conseguimos reproduzir o erro. Droga. Isso teria sido fácil demais.

AMELIA VON HADEN: Estávamos há horas analisando o código, então eu peguei a ferramenta de um jogador e a modifiquei, de forma que teríamos 20 espectadores sem nenhum atraso de jogo, em vez de apenas um. Com diversas pessoas assistindo, eu estava testando o que o jogo fazia. Havia 20 espectadores assistindo e meu computador começou a engasgar. Enquanto isso, outras pessoas estavam tentando reproduzir o erro.

BRIAN BOSSE: Por volta de 2 da manhã, conseguimos reproduzir o sintoma, mas com uma causa diferente. Um dos nossos desenvolvedores estava executando 10 clientes e o servidor no mesmo computador, e raramente reproduzindo o erro. Uma chance em 50, ou 100, estávamos lá esperando acontecer, e só aconteceu com uma das estrelas.

AMELIA VON HADEN: Finalmente conseguimos reproduzir e a reação foi geral: “AÊ, CONSEGUIMOS. PODEMOS FAZER ALGUMA COISA PARA CONSERTAR?”. O erro foi reproduzido em uma estrutura onde não conseguíamos rodar nossa ferramenta de correção de erros, então todos correram para os computadores dos programadores e tentaram reproduzir da mesma maneira. Depois de umas 20 tentativas, eu consegui! Apenas duas estrelas não apareciam, mas já era um começo. Foi como desarmar uma bomba. Assim que consegui rodar a ferramenta, precisamos ligar para Brian: como ele escreveu o código, ele saberia. Brian seria a pessoa capaz de analisar e descobrir como resolver essa situação.

BRIAN BOSSE: Não era nem o mesmo erro que aconteceu no jogo. Mas nós conseguimos, a partir de um erro parecido, explorar e descobrir em qual estado a estrela estava no momento em que o sintoma foi causado. Durante as próximas cinco horas, com a ajuda dos espectadores, isso foi o suficiente para nos levar até a causa real do problema. Levou cerca... De 12 horas, do início ao fim, incluindo o tempo de uma breve soneca. O último integrante do time foi embora às 4h30, e o primeiro voltou às 9h.


Los Angeles - 9h30, 30 de setembro

A raiz do problema tinha sido identificada, e Rioters começaram a chegar no escritório para trabalhar.

LUKE RINARD: No dia seguinte, cheguei para trabalhar e descobri que o Aurelion ficaria desativado por uns dois dias, mas que tínhamos uma maneira de consertar. Fiquei surpreso, porque não era nem meio dia, e tipo... vocês já sabiam como consertar? Brian tinha passado a noite inteira lá, sua mesa estava cheia de latinhas de refrigerante. Ele parecia meio exausto, mas estava acordado e trabalhando, empolgado para resolver o problema.

AMELIA VON HADEN: O castelo de latinhas de Brian era muito engraçado.

RAVEN KEENE: A foto de uma mesa cheia de latinhas foi enviada para todo mundo. Eram dúzias de latinhas!

LUKE RINARD: Fui até a mesa de Brian e ele estava explicando o problema para alguém—era um papo de engenheiro, e ele gesticulava bastante. Tentamos perguntar o que estava acontecendo, e o seu colega de mesa logo interviu: “Xiu, silêncio, ele está focado em algo importante. Ele teve uma epifania”.

BRIAN BOSSE: Sempre suspeitamos do problema no espectador, já que essa é a principal diferença entre os ambientes de eSports e de jogo, afinal, eSports usa um sistema de espectador diferente. Enquanto isso estava acontecendo, ele estavam reproduzindo o erro com a conta de Bjergsen, na situação em que tinha acontecido, tentando reduzir as possibilidades: “Quando o erro é reproduzido? Quando ele não é?”. Com a informação que obtivemos a partir disso, além do que já sabíamos por conta da análise do sistema bizarro que reproduzimos, eventualmente conseguimos traçar uma linha causal entre o início e o fim.


São Francisco - 10h, 30 de setembro

Com o problema descoberto e um conserto identificado, a equipe de eSports decidiu reabilitar Aurelion Sol para o quarto dia do Mundial.

RAVEN KEENE: Nossa primeira reação foi: “Graças a Deus”, e depois agradecemos muito ao Bosse pelo trabalho incrível que ele realizou. Depois, o foco mudou para o conserto. O conserto era simples? Nesse caso, sim, porque podíamos ajustar as contas de acordo. Feito isso, precisávamos falar com cada uma das pessoas na Riot que poderiam ter um potencial impacto nesse erro. Como era um erro relacionado a contas, isso inclui todos os espectadores, locais e internacionais, e demandou um esforço enorme da nossa equipe de Produção, que precisou entrar em contato com todos eles. Tínhamos que nos certificar de que os times saberiam o quanto antes quando o conserto estaria disponível, e isso incluiu olhar para o calendário de treinos. A gente precisava lançar isso antes que qualquer treino acontecesse.

BRIAN BOSSE: Que alívio. Fomos de um cenário onde tudo estava em jogo para uma mitigação contida, e no fim tudo ia acabar bem. A conclusão dessa situação foi inacreditavelmente favorável.

LUKE RINARD: Falei com todas as pessoas envolvidas, fiz elogios, e quis dizer o quanto aquilo tinha significado para mim. Todos que ajudaram foram incríveis. Eu dizia: “Obrigado por ter feito isso!”, e eles respondiam: “Claro, sem problemas”. Foi quase como dizer: “Por que você está me agradecendo? Claro que eu vou trabalhar no meio da madrugada, numa quinta-feira, por horas a fio!”.

BRIAN BOSSE: Quero enfatizar que ninguém foi convocado ao escritório nessa situação—eu tinha alguns engenheiros, parte da equipe de QA (Controle de Qualidade) e produtores que se ofereceram voluntariamente para ajudar. Ninguém foi forçado a vir e trabalhar. Foi incrível ver como essas pessoas ficaram trabalhando por horas para consertar isso.

AMELIA VON HADEN: Acho que era meu dever ajudar. Estava tarde, a maioria das pessoas estava em casa, e haveria novas partidas no dia seguinte. Eu sabia sobre o problema, e minha ajuda seria bem-vinda. Eu senti... que era a coisa certa a ser feita. Fornecer a melhor experiência possível no Mundial era o certo a ser feito. Eu sabia que muitos times tinham treinado com o Aurelion, todos estavam esperando ver o Campeão em jogo. Só de pensar que teríamos um Mundial sem ele, sei lá... não me pareceu uma opção.


SÃO FRANCISCO - 20h30 (Horário do Pacífico), 2 de outubro

Aurelion Sol é reativado no quarto dia e escolhido por Huhi, da Counter Logic Gaming, na partida contra a ROX Tigers. Huhi, com seu campeão favorito, domina os campeões coreanos e ajuda a CLG a acabar com os Tigers.

AMELIA VON HADEN: Nos sentimos um pouco como as pessoas que criam os Campeões. Quando elas veem o personagem em jogo, o estômago sempre embrulha com o medo de dar algo errado, ou do Campeão quebrar no meio da partida... Com essa questão do Aurelion Sol, quando o vimos no jogo, sentimos a mesma coisa, e torcemos para que nada desse errado.

RAVEN KEENE: Quando ele foi escolhido novamente, foi um daqueles momentos de “segura a onda”. Mal conseguimos respirar nos minutos iniciais. Quando chegou a hora em que o jogo começa a fluir e as jogadas aparecem, a atmosfera inteira mudou, tanto interna e externamente, quanto para os jogadores, fãs, tudo. A história foi de “Aurelion Sol, o Campeão desabilitado” para “Aurelion Sol, o Destruidor”.

LUKE RINARD: Depois de ele ter sido escolhido e da CLG ter mandado muito bem com ele... Eu fiquei: “Talvez esse Campeão seja poderoso demais, talvez seja fortinho demais”. Vê-lo no Mundial e ver como ele é poderoso e bem sucedido, foi muito gratificante para mim. Depois da partida, fiz questão de agradecer todos novamente! Falei para todos que meu mês valeu a pena quando vi Aurelion sendo usado no domingo. Depois, vê-lo sendo escolhido no terceiro jogo da Final, que foi uma partida crucial, fez meu mês valer novamente.


O Mundial é o ápice das competições internacionais de League, e perder um Campeão importante como Aurelion Sol durante esse evento teria sido devastador para os jogadores e espectadores. O grupo de Rioters que conseguiu consertar esse erro trabalhou incansavelmente, garantindo que todos os Campeões estivessem disponíveis para os melhores jogadores durante a luta pela Copa do Invocador. Se você tem interesse em saber os detalhes técnicos por trás disso, confira a explicação completa de Brian Bosse sobre o que causou o erro. (tópico em Inglês)


2 months ago

Marcado com: 
Aurelion Sol