Neste artigo, vamos analisar os exploits, como os resolvemos e o que essa correção significa para os exploits futuros.
LINHA DO TEMPO
11 E 12 DE MAIO
- No início de maio, três exploits se tornaram populares na comunidade de R6 Siege: o do escudo de Clash, o das claymores e o dos escudos extensíveis.
- Conforme nossa equipe monitorava a situação ao longo do fim de semana, logo ficou claro para nós que esta era uma questão prioritária.
13 DE MAIO
- Nossa equipe começou a investigação dos exploits. O primeiro passo era reproduzir com precisão esses exploits internamente para entendermos as falhas e, então, começarmos a identificar a raiz do problema.
- A investigação inicial revelou que precisaríamos de tempo para compreender o escopo do problema e que um conserto rápido não seria possível.
- Como os exploits começaram a se espalhar através da comunidade, começamos a discutir planos para atenuar o impacto a curto prazo.
15 DE MAIO
- A liderança de projetos de Rainbow Six Siege se reuniu para discutir os exploits. Precisávamos determinar, quantitativamente através de dados, o escopo e o impacto exatos dos exploits in-game.
16 DE MAIO
- Depois de avaliarmos os dados durante a manhã, decidimos desativar Clash, claymores e escudos extensíveis.
- Várias equipes detiveram seu trabalho usual enquanto explorávamos opções para criar e implementar uma solução que desativaria Clash, claymores e escudos extensíveis.
- Começamos testando cada solução possível conforme era finalizada. Identificamos cinco possíveis maneiras de abordar a situação e, depois de uma série de tentativas frustradas, finalmente tivemos êxito com a última abordagem.
17 DE MAIO
- Depois de duas rápidas rodadas de testes bem-sucedidos, acionamos o switch que desativou Clash, claymores e escudos extensíveis como uma primeira medida emergencial.
24 DE MAIO
- Percebemos que um reparo total exigiria mais tempo, uma vez que ele afetaria processos de sistema essenciais, principalmente a ordem na qual os pacotes são enviados ao servidor. Contudo, sabendo que a remoção de Clash e gadgets fundamentais impactariam severamente no gameplay, as equipes começaram a trabalhar paralelamente na criação de vários fail-safes que pudessem ser introduzidos com segurança.
JUNHO
- Nas próximas semanas, denúncias de exploits começam novamente a surgir.
- Entretanto, com os switches já em posição, pudemos reagir rapidamente às novas denúncias e desabilitamos Clash e IQ.
- A essa altura, nossa equipe já finalizara um reparo completo e operacional para a causa subjacente dos exploits. Os testes internos já haviam demonstrado resultados positivos, mas ainda precisávamos passar pelos servidores de testes para uma avaliação em maior escala antes de implementarmos as mudanças no servidor ativo.
JUNHO-JULHO
- No final de junho, a Ordenação Global chega aos PCs. Em julho, é a vez dos consoles.
- Durante esse período, também monitoramos o desempenho da Ordenação global, além de verificar quaisquer sinais de regressão.
SWITCHES + FAIL-SAFES
Enquanto parte da equipe trabalhava na correção, o restante logo começara a desenvolver diversos fail-safes de curto prazo no início do processo, com o objetivo de criar uma solução imediata mais sustentável. Estes switches e fail-safes, que visavam apenas os métodos de exploits, nunca tiveram a pretensão de ser um reparo completo. Em vez disso, foi uma decisão tomada pela equipe depois de pesar o custo da remoção de Clash e de dois gadgets na saúde do gameplay. Eles foram lançados no servidor ativo logo depois, com o desafio para a comunidade de reportar qualquer ocorrência futura.
A decisão de remover Agentes e configurar loadouts não é feita levianamente. Precisamos respeitar o tempo e o esforço que os jogadores dedicaram para desbloquear o conteúdo in-game, bem como ser conscientes do enorme impacto que a remoção de mecânicas essenciais do gameplay possa ter no meta e no ecossistema de Rainbow Six Siege. Contudo, dada a situação, pensamos que esperar por uma correção definitiva não era uma solução aceitável. Precisávamos invalidar os exploits e normalizar o gameplay da maneira mais rápida e segura possível para os jogadores.
As soluções de fail-safe precisavam satisfazer várias exigências. Elas tinham de: ser cirúrgicas, de modo que não causassem nenhuma regressão ou efeitos colaterais; ser facilmente modificáveis para resposta rápida; e necessitar o mínimo de testes para uma rápida entrega. As modificações de Agentes e gadgets decorrentes foram nossa primeira resposta para tratar dos exploits sabendo que eram nosso último recurso e uma solução de curtíssimo prazo, enquanto preparávamos e testávamos nossos fail-safes.
O QUE É ORDENAÇÃO GLOBAL?
Cada Agente, gadget, granada, escudo, câmera, parede e planta em Rainbow é um objeto. Cada objeto em R6 envia uma mensagem (pacote) para o servidor quando qualquer etapa de uma ação é realizada. Por exemplo: quando você usa um gadget, seu Agente envia a mensagem “Estou equipando meu gadget” e, em seguida, “Estou usando meu gadget”. Ao mesmo tempo, seu gadget também está enviando mensagens ao servidor, como “gadget ativado” e “gadget instalado”. O servidor envia estas mensagens aos outros jogadores da partida.
Anteriormente, a ordem em que essas mensagens eram entregues ao servidor só era garantida por objeto de jogo. Isso queria dizer que também havia a chance de falha quando mensagens sumiam ou eram entregues fora de ordem ao servidor. Os exploits se aproveitavam dessa falha em nosso protocolo de rede enviando múltiplas ações simultaneamente (spamming), o que aumentava as chances dessas mensagens não serem entregues corretamente. O resultado é que replicações incorretas no servidor significavam que o jogo não exibiria a ação correta e esperada.
Ordenação global, nossa solução ao problema, modifica o motor da rede para solicitar globalmente todas as mensagens. Estas também são enviadas em múltiplos para garantir que os dados sejam mandados de forma eficaz. Assim, cada jogo receberá a mesma sequência de mensagens e a replicação será em sincronia entre o jogo de cada usuário.
Quando identificamos que todos os exploits existentes estavam relacionados a esse processo principal, tivemos de ser cuidadosos em como abordaríamos a Ordenação global. Era preciso garantir que não haveria efeitos colaterais com a mudança. Por fim, embora a alteração para a Ordenação global imponha uma carga maior na largura de banda, consideramos que os benefícios valeriam o pequeno aumento nos custos e decidimos proceder.
O QUE ISSO SIGNIFICA PARA O FUTURO
Com a nova Ordenação global aplicada, as ações são uniformemente replicadas para todos os jogadores de uma partida, já que são ordenadas a nível global, e não a nível de cliente. Avaliamos e pesamos o custo da largura de banda adicional e, embora ele suba sutilmente, a sua experiência de jogo não será afetada. Essa medida irá evitar problemas futuros envolvendo entregas de mensagens fora da ordem e exploits similares.
Os exploits e seu impacto na comunidade também evidenciaram a importância das alterações de Agentes e gadgets e nossa necessidade de termos maior controle sobre as configurações de Agentes e loadout nos servidores ativos. Desde então, passamos a dedicar maiores recursos para suprir essa necessidade para garantir que possamos reagir mais rapidamente à situação no caso de exploits futuros.