Atualização de Estabilidade do UEFN

Oi, pessoal!

Como a maioria de vocês já sabe, o lançamento recente da v.32.00 do Fortnite trouxe vários problemas de instabilidade e regressões. Esses problemas incluem interrupções significativas, tornando os conteúdos do UEFN e do Modo Criativo inacessíveis para pessoas jogadoras e o UEFN e o Portal de Criadores indisponíveis para a comunidade de criação, além dos erros em outros recursos.

Com a v.32.10, notamos mais uma vez que conteúdos e ferramentas do UEFN passaram por várias horas de disponibilidade intermitente para pessoas jogadoras e a comunidade de criação.

Esses lançamentos ficaram abaixo dos nossos padrões, levantando muitas discussões internas a respeito de como os problemas passaram desapercebidos e o que pode ser melhorado daqui a para frente.

Evoluir rapidamente o ecossistema do Fortnite garantindo ao mesmo estabilidade e compatibilidade para diversos recursos e experiências é um desafio, mas estamos nos empenhando em superar esse desafio. E isso envolve aprender com nossos próprios erros e assumir a responsabilidade deles. Também queremos ser transparentes em relação aos problemas principais que a comunidade de criação enfrentou recentemente, às nossas respostas e às mudanças que implementaremos.

Seguindo essa linha, veja abaixo um resumo dos problemas mais graves da v.32.00. Cada tópico inclui o problema, a causa, o impacto e as mudanças que implementaremos com base no que aprendemos.

Embora esses não seja os únicos erros da v.32.00 e da v.32.10, eles foram o de maior impacto no ecossistema e acionaram os processos de incidentes críticos internos da Epic.

Problema: Degradação do Conteúdo de Serviço (32.00 e 32.10)

O Serviço de Conteúdo é o nosso sistema interno que rastreia todo o conteúdo criado no Modo Criativo e no UEFN, incluindo metadados, como versões e estados de publicação. Em suma, ele serve como nosso “catálogo do metaverso” e é essencial para o funcionamento do Fortnite e do UEFN.

Conforme expandimos o uso do UEFN na Epic, nossa dependência do Serviço de Conteúdo também aumentou.

Na atualização da v.32.00, mudanças no Cliente e no Servidor do Fortnite provocaram um aumento massivo e imprevisto no tráfego direcionado ao Serviço de conteúdo, chegando a 10x maior que a carga normal. Esse pico fez o Serviço de Conteúdo tentar aumentar a capacidade de processamento para lidar com a carga extra, expondo um problema que causou erros e impactando em várias áreas do funcionamento do Modo Criativo e do UEFN.

As tentativas de reconfigurar ou ampliar o serviço não foram bem-sucedidas, e não havia uma alternativa imediata para modificar o comportamento do cliente ou do servidor. Por sorte, nossa equipe de Segurança do Ecossistema conseguiu configurar nossa firewall para reduzir o tráfego a níveis manuseáveis, permitindo que os serviços se recuperassem.

Adereçamos a questão do tráfego excessivo entre cliente e servidor na v.32.10, mas, no dia do lançamento, continuamos vendo um nível de tráfego natural que degradava o desempenho do Serviço de Conteúdo. Dessa vez, o serviço continuou funcionando, mas o acesso a Ilhas de Criadores e a recursos do UEFN ficou instável por várias horas. O Fortnite Reload também foi afetado durante esse período.

Impacto: alguns conteúdos do Fortnite, incluindo Reload, Músicas e Ilhas de Criadores ficaram indisponíveis das 4h (BRT) às 15h (BRT) quando a v.32.00 foi lançada, no dia 02/11.

Em 13/11, com o lançamento da 32.10, o acesso a Ilhas de Criadores e o funcionamento do UEFN ficaram prejudicados entre as 9h (BRT) e as 15h (BRT), com uma redução de aproximadamente 70% na taxa de sucesso para entrar em Ilhas. O Fortnite Reload ficou indisponível durante esse período.

Mudanças: estamos trabalhando bastante para resolver a questão de dimensionamento e acreditamos que não teremos mais esse problema pelo resto do ano.

Também estamos aumentando a análise pré-lançamento do tráfego de cliente e servidor para os próximos lançamentos, assim conseguiremos identificar esses problemas antecipadamente.

Problema: Perda de Persistência (32.00)

Pouco tempo após a restauração do funcionamento do Serviço de Conteúdo, várias pessoas da comunidade de criação que usam Persistência relataram que as pessoas jogadoras estavam dando falta de certos tipos de itens em seus inventários.

Nossa investigação revelou que parte do conteúdo do Fortnite foi reorganizado para uma iniciativa futura. Essa reorganização fez com que itens rastreados, como diamantes, adotassem um novo caminho de ativo, fazendo-os aparecer no Inventário como novos itens ou com quantidade zero. Embora a Unreal Engine tenha um sistema para lidar com ativos movidos (redirecionadores), um erro no nosso código de persistência impediu que o redirecionamento fosse aplicado.

Para resolver essa questão, tínhamos duas grandes prioridades:

  1. Resolver a questão para impedir a perda de dados para novas pessoas jogadoras.
  2. Restaurar os inventários de pessoas já afetadas pelo problema.

A primeira tarefa exigia a criação, o teste e a implementação de um novo servidor. Normalmente, isso demora menos de 24 horas, mas, por conta de diferentes fatores — principalmente nossa vontade de incorporar reparos para outros problemas —, o novo servidor só foi implementado em 05/11, três dias depois. Reconhecemos que esse atraso é completamente inaceitável para um problema de tamanha gravidade.

A segunda tarefa envolvia a criação de um script que restaurasse os inventários das pessoas que tinham jogado em alguma Ilha após o lançamento da v.32.00, corrigindo os inventários delas. A restauração nesses casos é uma escolha difícil, já que o impacto varia de uma Ilha para a outra, e a avaliação entre ser melhor restaurar os dados ou continuar com os dados novos depende do impacto e de quanto tempo a restauração pode levar.

Nós oferecemos a restauração para pessoas criadoras que relataram impacto e iniciamos a restauração dos dados dessas ilhas em 06/11, às 16h (BRT). Isso foi concluído em 07/11, às 15h (BRT)

Mudanças: nós temos um sistema automático que avisa quando um ativo é removido para impedir que os itens das Ilhas de criadores não sejam perdidos. No entanto, esse sistema automático não avisava se os ativos fossem movidos. Implementaremos uma atualização para informar sempre que um ativo for movido.

Além disso, estamos buscando opções para informar automaticamente sempre que itens guardados no inventário não conseguirem ser carregados por futuras construções do Fortnite, embora esse seja um problema mais complexo que levará mais tempo para ser resolvido.

Por último, como já informamos, o tempo necessário para a implementação de um servidor era inaceitável. Nós vamos aprimorar esse processo.

Problema: Instabilidade Geral do Cliente (32.00)

Nós percebemos rapidamente um aumento significativo nos travamentos do cliente em todas as plataformas.

A principal causa disso foi uma mudança feita na atualização 32.00 para correções de erros relacionadas à desativação do dano de arma em áreas mutantes. Essa mudança introduziu uma situação rara na qual duas threads podiam acessar uma matriz simultaneamente. As ações das pessoas jogadoras em determinados momentos durante o ressurgimento podem resultar em travamentos.

Como esses travamentos ocorriam no cliente e não podiam ser resolvidos através de ajustes no servidor, nós tivemos que lançar um patch de cliente para todas as plataformas. Os patchs de cliente levam mais tempo para serem criados e exigem uma certificação em determinadas plataformas, então a atualização não estava disponível até quarta-feira, 16/11.

Impacto: clientes de todas as plataformas passaram por uma instabilidade crescente na atualização v.32.00.

Mudanças: durante o desenvolvimento de cada lançamento do Fortnite, nós identificamos e corrigimos travamentos conhecidos. Após várias horas de teste, nossa investigação não encontrou nenhuma ocorrência anterior desse travamento. Mesmo após identificarmos a causa, não conseguimos reproduzi-lo internamente.

Esse desafio de “problemas em larga escala” não é novo. Por exemplo, um travamento que tem 0,01% de chance de acontecer pode não ocorrer durante a fase de desenvolvimento. No entanto, com um milhão de pessoas jogadoras diárias, isso resultaria em 10.000 travamentos por dia.

Para resolver isso, planejamos aumentar a “sanitização” das construções durante o teste. Essas construções tem uma capacidade maior de detectar problemas de acesso à memória, mesmo que não causem travamentos imediatos. Embora não seja possível afirmar que este método teria identificado o problema recente, ele provavelmente impedirá que problemas semelhantes aconteçam no futuro.

Problema: Travamento do Editor ao Carregar Projetos (32.00)

Quando a atualização 32.00 foi lançada, nós recebemos relatos de pessoas criadoras passando por travamentos do editor ao tentarem abrir seus projetos. Inicialmente, suspeitamos que esses travamento estavam relacionados à degradação do Serviço de Conteúdo, mas logo percebemos que se tratava de um problema diferente.

Diagnosticar o problema era algo desafiador, pois envolvia um travamento no driver de vídeo, que costuma fornecer informações limitadas sobre a causa. Após identificarmos isso, aconselhamos as pessoas criadoras a trocarem o UEFN para o Direct3D 11 como solução temporária.

A causa acabou sendo identificada em projetos com um alto número de avisos de inicialização exibidos na janela de notificação toast no canto inferior direito. Cada mensagem de aviso consumia muita memória para a renderização e, se aparecessem avisos demais, o uso da memória poderia exceder o limite e causar um travamento.

Felizmente, como podemos atualizar o UEFN de forma independente do Fortnite, conseguimos lançar uma atualização no dia seguinte.

Infelizmente, esse era um bug que um usuário interno do UEFN tinha visto uma vez em uma versão inicial da 32.00, e como os desenvolvedores não conseguiram reproduzir o bug, o problema foi encerrado.

Impacto: centenas de travamentos do UEFN ocorreram nas oito primeiras horas após o lançamento.

Mudanças: durante nossa análise post-mortem, percebemos que os equipamentos usados em nossas análises possuem especificações muito superiores às de computadores domésticos comuns, principalmente em termos de memória de vídeo.

Antes, nossos ■■■■■■ de compatibilidade focavam na “na experiência de novos usuários” e menos em testar os limites do UEFN com projetos maiores. No futuro, nós planejamos aumentar os ■■■■■■ em máquinas com especificações mínimas e de equipamentos usados por consumidores com projetos internos maiores para identificar melhor possíveis problemas.

Esperamos que essa análise detalhada ajude a compreender melhor a causa dos problemas que você pode ter enfrentado após o lançamento da v.32.00 Oferecer às pessoas criadoras um ambiente estável para construir e apoiar experiências que encantem a comunidade é algo que levamos muito a sério.

Nosso objetivo é continuar aprimorando nossos sistemas e processos, ouvindo os problemas relatados por você e comunicando regularmente como estamos trabalhando para melhorar o UEFN e o Modo Criativo do Fortnite.

Agradecemos,

Andrew

1 Like