Falso Retorno, ou: Quando desligamos as ranqueadas

Por: Rumtumtummers

Ah, a A pré-temporada... época de ficar ansioso sobre as novidades em League, mas também de refletir sobre as coisas que aconteceram neste ano. Jogadores ranqueados, por exemplo, devem se lembrar do bug da Riven--que apareceu em julho-- que causou o desligamento de todas as filas ranqueadas.

A seguir temos a história desse bug e das equipes da Riot que trabalharam muito nele para encontrar uma solução.

Todos os horários em PDT.

Manhã - 15 de julho, 2015

Um vídeo sobe rapidamente para a página inicial do subreddit de League of Legends. Nele, um jogador mostrava um bug com a Riven: a sequência “certa” de apertos de botão fazia com que ela voltasse instantaneamente para a base, ignorando o tempo de conjuração da habilidade de retorno. À medida que as equipes na Riot começam a trabalhar, relatórios sobre bugs e seu impacto em potencial vão surgindo.

Donna Mason, Release Manager

Recebemos emails, memorando e pessoas o tempo todo. “Meu deus, você viu isso no Reddit?”

Scott Hansen, Live Producer

Tinha algo no Reddit em que alguém publicou um vídeo de “Ei, aconteceu esse negócio bizarro quando eu estava jogando de Riven”.

Tim Isenman, Live Producer

A primeira coisa que vimos foi a publicação no Reddit e foi a partir dali que começamos a investigar. Tínhamos algumas pessoas no time de Campeões investigando o problema também.

Kacee Granke, Product Manager

O problema com a Riven levantou alertas de emergência imediatamente.

Mark Sassenrath, Associate Game Designer

Alguém vem e diz “Ei, temos um bug na Riven que precisa ser arrumado. Podemos arrumar esse bug da Riven!”

Donna Mason

Então fomos investigar e começamos a tentar reproduzi-lo. Nosso objetivo quando esse tipo de coisa chega é sempre descobrir se é aleatório; ou se era algo que as pessoas podiam explorar para vantagem própria. Esse sempre foi o procedimento. Se há um bug no jogo, isso não é bom. Caso um bug dê uma vantagem que não seja natural a alguém, isso é muito, muito ruim. E uma parte importante é “consigo fazer também?”

Kacee Granke

Começamos a tentar reproduzi-lo nós mesmos. Por sorte, o vídeo deixou tudo muito claro. Às vezes, em casos assim, pensamos que “Nossa, isso é definitivamente um bug”, mas não sabemos como reproduzi-lo.

Scott Hansen

O controle de qualidade de Release conseguiu efetuar a reprodução facilmente. Nós (Live Production) não – não somos tão bons no jogo. Sou prata.

Matthew Wittrock, Release QA

Estou mexendo e finalmente “Ah, consegui”. Depois “Ah, agora consigo fazer direto. Agora é fácil. Isso não é bom”.

Tim Isenman

Perguntei “com essas informações, vamos desabilitar Riven?”

Donna Mason

Então olhamos a informações e vimos o quão rapidamente a publicação estava ficando popular e visível e tomamos a decisão de desabilitar Riven, que era a única informação que tínhamos do bug.

14:50 - 15 de julho

Riven é desabiltiada globalmente. Enquanto os times trabalham na solução, novos relatórios aparecem interna e externamente indicando que o bug pode ser aplicado em mais Campeões.

Tim Isenman

Depois de desabilitar a Riven, vários Rioters vieram me falar sobre mais vídeos de pessoas reproduzindo o bug em outros Campeões. Era no Yasuo, depois no Graves, depois mais e mais.

Mark Sassenrath

Pessoas continuaram relatando, “Isso também acontece no Shen. E em X, Y e Z”, e a lista continuou crescendo.

Kacee Granke

Quase imediatamente depois disso, começamos a receber relatórios do nosso controle de qualidade informando que eles conseguiam reproduzir o bug com outros Campeões.

Mark Sassenrath

No decurso do dia, enquanto mais denúncias de jogadores chegavam, começamos a perceber que “Ih, esse não é um bug da Riven. É um bug geral”.

Tim Isenman

Quando estávamos olhando as informações nos demos conta de que o problema poderia ser explorado em quase 1/4 de nossos Campeões. Foi quando quase entramos em choque.

Matthew Wittrock

Mesmo então, ainda estávamos subestimando o escopo do problema. Pensamos que eram apenas em Campeões com habilidades específicas. Naquele momento, não nos demos conta de que podia ser em qualquer Campeão do jogo.

Tim Isenman

Então concluímos que qualquer Campeão usando Tiamat ou Hidra poderia causar o mesmo efeito. Agora era aplicável a qualquer Campeão.

Mark Sassenrath

Pensei “Ah, qualquer Campeão pode fazer isso. Precisamos fazer o possível para não deixar isso se espalhar”. Os testes precisavam ser bem meticulosos.

Scott Hansen

Mesmo sem a Hidra, eram mais ou menos 40 Campeões.

Donna Mason

Fica um sentimento de desespero quando você se dá conta de que é com todos os Campeões. Não há nada assim, quando você pensa “Nossa, é com todos eles. O que faremos?”

Matthew Wittrock

Tivemos exemplos de bugs abusáveis que não eram benéficos. Então, você está abusando de algo mas vai perder a partida se fizer isso. Neste caso, estava claro que não existia lado ruim no abuso desse bug.

Donna Mason

Sempre queremos mais dados antes de tomar decisões. Analisamos “quão perturbador é isso?” É uma volta rápida à base, talvez não seja de todo ruim. Mas quando você vê como isso é ativado, percebe que “posso fazer investidas divididas o tempo todo. Aí posso ser um babaca e voltar à base”.

Tarde - 15 de julho

O bug está ficando maior. Na Riot, times começam a discutir como melhor mitigar o possível e enorme dano do bug de volta à base.

Scott Hansen

Começamos a falar sobre “O que podemos fazer para preservar a experiência?” Isso vai além de desabilitar um Campeão ou um item, precisamos considerar desabilitar as ranqueadas.

Tim Isenman

O que nunca queremos fazer é despedaçar o League de modo a desabilitar um quarto das coisas que as pessoas usam. Isso é provavelmente uma das piores coisas que poderíamos fazer além de desligar o jogo por completo. Então, em casos assim, nossa melhor opinião é desabilitar as ranqueadas.

Matthew Wittrock

Estávamos tomando muitas decisões como essas sem todos os dados, mas existiam muitas coisas que cumpriam com os critérios mínimos. Isso afetava muitos jogadores, estava por toda a parte, era danoso. Não adiantava só desligar um Campeão ou item.

Kacee Granke

A pergunta nesse momento foi “Não podemos desabilitar todos os Campeões, então o que podemos fazer?”

Tim Isenman

Pesando os prós e os contras -- ter todo mundo potencialmente abusando do bug nas ranqueadas ou ficar de maneira conservadora e teorizando que apenas algumas pessoas sabiam do bug -- talvez podíamos esperar para desabilitar as ranqueadas por um tempo até que o bug ganhasse visibilidade. Até o momento, a maioria dos jogadores sabia que a Riven era afetada pelo problema.

Scott Hansen

Quando começamos a falar sobre desabilitar as ranqueadas, tivemos conversas sobre “Ok, quando desabilitaremos as ranqueadas? Podemos conseguir arrumar isso antes que todo mundo saiba do bug?”

Kacee Granke

Decidimos esperar para desabilitar as ranqueadas até isso virar um problema real, e deixar a Riven desabilitada até chegar a hora de desligar as ranqueadas.

Tim Isenman

Não queríamos presumir que todos sabiam do problema e que todo mundo sabia que isso ia além da Riven.

Donna Mason

Por sorte, já que isso da Riven chegou primeiro, já tínhamos começado a olhar isso.

Num esforço para reduzir a proliferação potencial do bug e para juntar mais informações, Rioters falaram com os moderadores do Reddit para saber se mais denúncias em potencial poderiam ser colocadas na discussão do vídeo.

Kacee Granke

Falamos sobre “Como podemos minimizar a exposição e manter o fluxo de informações?” Não controlamos o Reddit, não controlamos o fórum. Mais exposição criava um risco de abuso, arruinaria partidas e criaria experiências ruins para os jogadores, mas queríamos ver o que o jogadores estavam vendo.

Tim Isenman

Pedimos ajuda aos moderadores do Reddit para compilar novas publicações de bugs na postagem original, mas nessa corrente de comunicação havia um mal entendido do que queríamos fazer. Infelizmente, o que vimos foi uma corrente de publicações enorme que dava grande visibilidade para todos os bugs. Todos vídeos eram publicados lá.

Donna Mason

Era uma espada de dois gumes. O fato de conseguirmos informações era ótimo, mas a visibilidade para o bug era ruim. As pessoas que viram o que estava acontecendo agora estavam tentando usar o bug.

Kacee Granke

Isso foi basicamente um “Precisamos desabilitar as ranqueadas agora”. Não só existia uma lista de todos os Campeões, como também instruções claras de reprodução do problema.

Depois que a publicação do Reddit explodiu, a ciência sobre o bug também. Isso rapidamente se espalhou para as outras regiões de LoL.

Donna Mason

Não é algo que queremos fazer, mas o benefício potencial da exploração do bug era muito alto. Tínhamos que presumir que os jogadores fariam uso disso, especialmente em ranqueadas.

Kacee Granke

Nem todo mundo vai usar o bug, mas se isso vira moda, seria terrível para a experiência do jogador.

Tim Isenman

Esse é um dos maiores problemas que a Riot já enfrentou nos servidores “live”. As ranqueadas são o ápice do jogo para muitos jogadores; quando a ranqueada está offline, você perde um grande senso de propósito.

Donna Mason

Sempre perguntamos “como seria se alguém usasse esse bug contra mim?”

Matthew Wittrock

Isso é um consenso entre os jogadores. Ninguém vai ficar feliz, mas as pessoas não vão ficar bravas se você estiver tentando preservar a experiência competitiva.

Kacee Granke

Se os jogadores estão pensando “Jogo ranqueadas, coloco meu corpo e alma nisso e estou jogando contra trapaceiros”, isso acaba com o desejo das pessoas de jogar competitivamente. Então desligamos as ranqueadas e voltamos com a Riven.

17:30 - 15 de julho

Com as filas ranqueadas oficialmente desabilitadas, Rioters trabalham incessantemente para encontrar a causa do bug, como arrumá-lo e como passar a solução pelo processo de testes de qualidade.

Scott Hansen

Agora existem duas coisas acontecendo em paralelo. Estamos buscando manter os jogadores informados da melhor maneira possível em mais de 20 idiomas e estamos tentando resolver o problema.

Tim Isenman

O time de Campeões começou a trabalhar para reescrever código.

Kacee Granke

Quando começamos a entender o escopo, passamos muito tempo tentando descobrir o que precisávamos arrumar. Levou algumas horas até passar pelo primeiro teste.

Matthew Wittrock

Lembro de me juntar com vários times e discutirmos “Aqui está o que sabemos” e “O que devemos fazer” e então “Legal, vamos resolver isso”. Isso foi animador. Isso era muito ruim, mas tínhamos um plano que estávamos executando rapidamente.

Kacee Granke

Tínhamos algumas correções prontas quase imediatamente que estávamos testando internamente. Continuávamos achando que já tínhamos conseguido, mas então encontrávamos maneiras de quebrá-las ou nos dávamos conta de que isso causaria algum efeito colateral bizarro.

Mark Sassenrath

O escopo ficava cada vez maior durante o dia.

Donna Mason

Sabíamos que estávamos com problemas quando depois de quatro iterações de solução, continuamos encontrando falhas.

Kacee Granke

Houve um caso em que resolvemos, mas se você usasse uma poção de vida, ela cancelaria a volta à base, sendo que antes essa ação não faria nada. Esse tipo de mudança em funcionalidade não é ideal, pois ignora completamente as expectativas dos jogadores.

Mark Sassenrath

Os detalhes dos jogadores nos vídeos ajudaram muito. Em vez de precisar fazer três consertos no decorrer de alguns dias, conseguimos arrumar tudo bem mais rápido. Foi muito bom que os jogadores tenham feito isso.

Donna Mason

Foi muito interessante testar, pois precisávamos saber o que precisava ser feito para reproduzir o bug. Então entramos em uma partida personalizada e praticamos, então testamos na versão de testes. Se não for possível executar bem o bug, não podemos confiar nos resultados dos testes.

Scott Hansen

Caso tenhamos uma visão clara de “É assim que se faz isso, é assim que isso funciona”, isso faz com que nosso trabalho seja muito mais simples para encontrar como resolver o problema.

Tim Isenman

Esperamos até termos algo que parecia muito bom e enviamos para testes.

Donna Mason

Cinco iterações depois, achamos que resolvemos o problema. Enviamos para o controle de qualidade e o plano de testes envolvia basicamente testar todas as habilidades do jogo, com todos os Campeões, itens, etc.

Kacee Granke

Para incorporar o código e enviá-lo para os jogadores, sabíamos que não iríamos resolver até o dia seguinte.

Tim Isenman

Quando temos qualquer tipo de mudança no ambiente “live”, existe um processo rigoroso pelo qual toda mudança passa para podermos lançá-lo com confiança. Precisa passar por testes internos preliminares e por revisões, então precisamos enviá-lo para testes destrutivos com nossos times globais de qualidade. Esse tipo de processo normalmente leva, no mínimo, 12 horas.

Scott Hansen

Publicamos uma mensagem dizendo “Tudo bem, em 12 horas informaremos onde estamos”. Presumimos que lá pelas 4 ou 5 da manhã, saberíamos se a solução funcionava ou não.

Donna Mason

Entre 22 e 23 horas, mandamos uma galera dormir. Pedimos para o time de qualidade nos acordar se a solução falhasse.

2:00 - 16 de julho

Os times esperam ansiosamente pelos resultados dos testes destrutivos. Se a solução do bug falha, jogadores podem ficar mais 12 horas sem ranqueadas -- já passaram 8,5 horas desde o desligamento inicial.

Tim Isenman

Mais ou menos às 2 da manhã, ficamos sabendo que a solução não havia funcionado e que precisávamos meio que começar do 0. Chamamos todos de volta para entender o que deu de errado, encontrar uma solução, fazer mudanças e reenviá-las.

Donna Mason

Todos recebemos mensagens. Acordamos engenheiros, pessoal de design -- todo mundo voltou. Todos os times envolvidos.

Mark Sassenrath

Você sabe que algo deu errado quando seu telefone está tocando de madrugada. Ou você esqueceu algo, ou sua solução quebrou outra coisa.

Donna Mason

Eles não nos ligariam se fosse algo bom. Eles não ligariam para dizer “Nossa, essa solução é animal! Cadê você?”

Tim Isenman

Na verdade não sei se Marca Sassenrath chegou a sair do escritório...

Mark Sassenrath

Pensamos que havíamos arrumado tudo. Enviamos ao ambiente de testes. Lá pelas 3 da manhã, ouvimos que algo ainda estava errado. Às 4 eu estava de volta no escritório trabalhando em outra solução. Eu já estava meio morto.

Kacee Granke

Conseguimos os resultados e ainda havia erro. Enviamos outra solução e esperamos pelo mesmo processo.

Tim Isenman

A nova versão da solução foi para o ciclo de controle de qualidade do zero. Mas, além de começar do nada, precisamos nos assegurar de que tudo o que estava quebrado na primeira tentativa estava consertado, então nosso volume de trabalho aumentou ainda mais.

Donna Mason

Naquele momento, não só testamos novos problemas que encontramos como estávamos re-testando coisas que já foram testadas.

Mark Sassenrath

Não queríamos quebrar a volta à base normal. Tentamos não mudar muita coisa na primeira solução. Existem várias ações que você pode tomar durante a volta à base e não queríamos quebrar nenhuma delas.

Tarde - 16 de julho

As ranqueadas estão desabilitadas há quase 19 horas. Os times envolvidos estão com dificuldades para informar os jogadores sobre quando as ranqueadas voltarão sem saber o prazo exato para a solução.

Tim Isenman

Precisamos recomunicar os jogadores de que os testes ainda estavam em andamento. Dissemos que os informaríamos em algumas horas, nos dando tempo para fazer mais coisas. A cada vez que pedíamos para o controle de qualidade nos dar uma estimativa de término, parecia que o prazo aumentava em duas horas. Não sabíamos quanto tempo levaria.

Scott Hansen

Tivemos conversas sobre “O que devemos dizer aos jogadores?” Não queríamos estabelecer um horário que estivesse muito incorreto só por segurança, mas também não queríamos dar muitas expectativas inverídicas. Acabamos dizendo que “logo”, que sinceramente não é o ideal.

Tim Isenman

Mais ou menos às 16:00, ouvimos que de 80% a 90% dos Campeões foram testados contra o problema. Então estávamos nos sentindo bem a respeito disso, mas tínhamos dificuldade em comunicar isso aos jogadores. Ainda existia a chance da solução não funcionar para alguns Campeões, o que significaria que uma nova solução precisaria ser elaborada para passar por novos testes em outro período de 10 horas. Então ficamos quietos.

17:00 - 16 de julho

Quase 24 horas após o desligamento incial das ranqueadas, a solução foi verificada para todos os Campeões. Naquele momento, os times estavam começando a preparar o lançamento da solução globalmente e assegurando que as ranqueadas fossem religadas em todas as regiões.

Tim Isenman

Acho que foi às 17:00, recebemos a confirmação de que tínhamos uma solução que funcionava 100%. Preparamos um pacote de envio com apenas um botão para os jogadores. O trem de lançamento estava pronto, então enviamos a solução para cada região.

Donna Mason

Por precisarmos mexer nos servidores em todos os data centers no mundo, isso leva algum tempo. Mas estávamos agindo rapidamente.

Matthew Wittrock

Foi um dos melhroes tempos de resposta que tivemos. Todos estavam prontos.

Tim Isenman

Bem no final, o Vietnam estava demorando bastante. Estávamos apostos nos monitores, esperando para saber sobre a solução. E esse cara responde que “Ainda está rolando”. Quase ficamos malucos.

Matthew Wittrock

Esse era o medo real. Por mais que tivéssemos testado tudo o que podíamos imaginar, ainda estávamos esperando pela publicação dizendo que “Epa, o bug ainda está aqui!”

Tim Isenman

Dissemos “Saia do jogo e tente novamente”. Então ele o fez e esperamos. E esperamos. E aí ele diz que “É, não consigo mais. Acho que está arrumado”. Foi um momento seríssimo de pânico, pois se não tivesse funcionado em uma região, não teria funcionado em nenhuma.

20:00 - 16 de julho

As ranqueadas foram reativadas depois de 28 horas desligadas. O bug foi oficialmente consertado.

Tim Isenman

Mantivemos as ranqueadas desativadas por cinco minutos para que pudéssemos testar a solução internamente e verificar que estava tudo bem com todos os servidores, então as reativamos e informamos os jogadores de que tudo estava online novamente. O demônio foi derrotado.

Matthew Wittrock

Naquele momento, era tarde demais para estar preocupado. Se algo está errado, você vai descobrir em algumas horas. Você precisa seguir em frente para o próximo desafio. O trem continua seu curso.

Donna Mason

Pensei “Vou jogar uma ranqueadinha”. Somos jogadores, fica aquela sensação de “Graças a deus, tá tudo bem de novo”.

Kacee Granke

E voltamos ao trabalho.

Mark Sassenrath

Não podemos ficar desatentos pelos louros disso. Ainda há muito trabalho a fazer.

Ninguém gosta de bugs no jogo, mas eliminá-los completamente de um jogo tão complexo quanto League é muito desafiante (e trabalhamos diariamente para enfrentar esse desafio). Quando grandes bugs aparecem, vários times na Riot trabalham juntos para encontrar soluções rapidamente e da forma mais efetiva possível, com a menor interferência possível no jogo. No caso do grande bug de volta à base de 2015, várias pessoas contribuiram incessantemente para resolver o problema e devolver a ranqueada aos jogadores.


1 year ago

Marcado com: 
Ranked Play