FR EN ES PT
Procurar nos fóruns 
Rastreadores Ankama

Resumo: Live de Wakfu: Fusão e novidades de desenvolvimento

Por [Ankama]WAKFU - ADMINISTRADOR - 06 Novembro 2020 - 15:07:13
DevTracker AnkaTracker

Fizemos uma live para conversar com vocês sobre a fusão dos servidores e alguns projetos em que a equipe de desenvolvimento está trabalhando.

Começo da live


Conversa sobre a fusão

Gostaríamos de relembrar que nós já tínhamos realizado outras fusões (Amara, servidores chineses, etc.). No entanto, essas “fusões” se resumiam apenas a uma importação básica de personagens. Desde então, o jogo evoluiu bastante e as coisas deixaram de ser tão simples.

Em um primeiro momento, Eneval e Enio pensaram na melhor maneira de fusionar os servidores, e também estimaram o tempo de produção da ferramenta de fusão necessária (que se tornou o “Fusionator”). A parte principal desse trabalho era refletir sobre todos os tipos de dados salvos no jogo: podemos transferi-los do jeito que estão?

Devemos realizar alguma operação antes?
  • No caso das recompensas (shift + R no jogo), nós armazenamos os IDs dos personagens para os campos de batalha, por exemplo. O ID do personagem muda durante a fusão (para evitar colisões entre servidores), então deve ser substituído por um novo. Ou seja, várias recompensas de uma só vez, personagem por personagem.
  • O ID da guilda também muda. Então, é preciso mudar o ID para se adequar ao nível do personagem, aos bônus, às informações de Mundo Seguro, aos níveis de guilda, etc.
  • Outro problema: durante a atualização 1.67, fizemos modificações na mecânica dos Mundos Seguros, pois não podíamos manter tantas instâncias abertas, ainda mais com a atualização constante do ecossistema dentro delas. Também queríamos frear os abusos de algumas mecânicas. Havia 150 Mundos Seguros por servidor, mas estávamos fusionando muito mais servidores.

O objetivo era também otimizar o tempo de fusão para não ter que interromper os servidores por várias semanas durante a operação.

Todos esses problemas e reflexões nos levaram a criar o “Fusionator”, uma ferramenta que nos permitia configurar em algumas linhas a execução de milhões de tarefas paralelamente e da maneira mais otimizada e fluida possível. Levamos aproximadamente 3 meses para obter uma ferramenta quase perfeita, sem contar os outros meses tomados por tarefas de migração individuais (personagens, bolsas de personagens, Sacos de Viagem dos personagens, guildas, Mundos Seguros, mercados, etc.) – umas cinquenta tarefas no total.

Dentre os problemas encontrados, os companheiros foram uma preocupação durante um bom tempo. Em um primeiro momento, os companheiros usavam um servidor de recompensas (o mesmo que o online) para devolver os itens em excesso. O problema é que o servidor em questão tinha um pouco de dificuldade para acompanhar o ritmo. 

Além disso, as bases de dados “de origem” da fusão tinham um mau desempenho por causa da quantidade de solicitações e da lentidão delas, sem esquecer as operações para a conversão. 
Tivemos que modificar a migração para usar as abas de baú de conta (e injetá-las diretamente na base de destino) sem passar pelo servidor de “baú de conta” do servidor, além de otimizar todas as solicitações e operações de tratamento. 

Paralelamente, durante todo esse tempo, fazíamos nossos próprios testes e validações das migrações individualmente. Mas, depois de um tempo, como começamos a ter dificuldade para testar tudo pessoalmente, tivemos que envolver os testadores, então criamos três servidores de teste para eles: dois de origem e um de fusão. Também demos a eles “botões mágicos” (pois é) para que pudessem iniciar uma fusão dos dois servidores de origem com o servidor de fusão. 

A partir daí, eles começaram a testar todas as funcionalidades e casos especiais afetados pela fusão. Por exemplo: dois companheiros com exatamente a mesma XP, dois servidores com a mesma quantidade de itens, personagens com o mesmo apelido, etc. Os testadores nos deram feedback de todos os problemas encontrados, e fizemos muitas correções depois disso. Eles tinham centenas de pontos de validação, e dezenas de personagens de validação online para o dia da fusão. 

No geral, tivemos que sincronizar um monte de equipes da Ankama (teste, web, suporte, comunicação, etc.) para o dia D, para que tudo estivesse pronto. Paralelamente, estávamos realizando testes em “escala real” para reduzir ao máximo o tempo de fusão global. Depois de duas semanas, o tempo necessário para a operação passou de vários dias para algumas horas.

Em seguida, faltava apenas pôr tudo em prática e esperar para ver o resultado.

Quanto ao estado dos servidores depois da fusão, nós observamos diariamente os indicadores. No início, temíamos pelo proxy, mas deu tudo certo. Em termos de RAM pura e CPU, os servidores estão tranquilos.

Novidades dos desenvolvedores 


Otimizações 

Nós notamos um impacto maior dos problemas de otimização do cliente após a fusão, e começamos a intensificar nosso trabalho nessa área.

Usamos jprofiler (uma ferramenta para analisar o uso da memória, CPU, etc.). A partir daí, identificamos problemas “importantes” e outros menos impactantes.

Como queríamos fazer uma otimização antes da atualização de dezembro, tivemos que estimar e planejar rapidamente as correções para os problemas que mais consumiam recursos:
  • O thread de rede consumia demais para o nosso gosto (ganho de mais de 40% de seu consumo).
  • Alguns logs que ocorriam com frequência podiam deixar o disco mais lento e, logo, o jogo também - difícil de avaliar, mas dispendioso.
  • As traduções eram muito pesadas para o cliente, e tínhamos que carregá-las inteiramente de uma só vez (redução pela metade), além de sofrer um leve “leak” que levava a um consumo excessivo permanente, mas não crescente.
  • Os deslocamentos dos outros personagens são calculados pelo cliente a fim de aliviar a rede e evitar problemas ligados principalmente à latência entre o início do deslocamento e a recepção pelo cliente. Como o pathfinder consumia bastante naturalmente, ele também era efetuado de uma maneira que podia provocar lag na visualização. O ganho estimado, para uns trinta personagens nos arredores, equivale a aproximadamente 10% do CPU dedicado à visualização. Mas não pudemos fazê-lo por causa dos bugs.
  • A exibição de alguns dados consumia muito ao abrir o cliente e também no jogo. Procuramos soluções para reduzi-los, mas, como o prazo inicial era antes de dezembro, não pudemos fazer tudo o que gostaríamos para resolver esse problema.

Todos esses pontos devem reduzir o consumo de RAM, as telas pretas, limitar os microtravamentos do cliente, etc.

Resumo das otimizações em andamento:
  • Modificações na maneira como são tratadas as mensagens de rede do cliente a fim de aliviar o thread da rede;
  • Filtragem das traduções para economizar memória RAM (~30Mb de RAM);
  • Correção de um log que ocorria com bastante frequência a fim de aliviar o disco e o tratamento de algumas tarefas pelo cliente;
  • Modificação da mecânica de carregamento das texturas a fim de aliviar o thread gráfico (pode aliviar bastante o cliente, principalmente em relação aos microtravamentos).

Aliás, essas otimizações ficaram disponíveis com a atualização do cliente beta. Vocês já podem testá-las e nos dizer o que acharam. Mais informações sobre isso: clique aqui.

Chat global 

Pretendemos desenvolver chats globais para permitir que os jogadores possam se comunicar com todos os outros jogadores presentes.

Estamos trabalhando na implementação de dois chats globais: um dedicado ao recrutamento e o outro ao comércio. Esses chats serão restritos para evitar o flood, por exemplo.

Seleção dos personagens

Desejamos fazer modificações na interface de seleção dos personagens.

À primeira vista, essas modificações seriam apresentadas sob a forma de “e-mail” (como dizem os desenvolvedores). Resumindo, a lista dos personagens e suas informações (apelido, nível, nação, etc.) ficariam à esquerda, e a visualização do personagem à direita.

Por ora, ainda não temos um protótipo para mostrar a vocês, mas pretendemos redinamizar a interface de seleção dos personagens.

Não deixem de consultar a reprise da live com Enio e Zorel: clique aqui.

Bom jogo a todos!
 
Reações 4
Pontuação : 143

Muito bacana explicarem todo o processo, estou no aguardo do resumo sobre a reformulação das classes.

1 0
Pontuação : 12312

Como DEV achei bem legal explicarem o processo e as dificuldades.
Esse Fusionator deve ter ficado bem legal, pena ter sido pra uso único (será?)

1 0
Pontuação : 2787

chat global finalmente, e uma nova interfaçe de personages ja era hora, obigado por traduzirem tudo

1 0
Pontuação : 51

É proveitosa essa transparência da equipe de desenvolvimento, fico no aguardo do próximo resumo.

1 0
Comentar neste tópico