Bate-papo com os desenvolvedores: World of Warcraft Clássico
por Blizzard Entertainment em June 15th às 7:00pm

Saudações! O desenvolvimento do World of Warcraft Clássico está em andamento e estamos muito empolgados por compartilhar o trabalho que temos feito. Como mencionamos na última BlizzCon, o processo de restauração do jogo clássico não é simples nem direto, e é importante para nós investir o tempo e o esforço necessários para fazer tudo corretamente — e isso inclui esmiuçar os dados, o código e muitas versões do jogo, em um escrutínio meticuloso de todas as mudanças que fizemos ao longo dos anos. Não se aflija: a equipe do WoW Clássico está trabalhando duro para torná-lo realidade, e estamos em um ponto do desenvolvimento em que podemos compartilhar algumas coisas em que temos trabalhado.


WoW Clássico: primeiro protótipo

A primeira decisão que tivemos que tomar — e uma das mais importantes — foi qual versão do jogo teríamos como foco. Como muitos de vocês já observaram, o período do Clássico teve dois anos e foi repleto de mudanças. Características centrais do jogo, como os Campos de Batalha, foram apresentadas em patches após o lançamento de WoW. Depois de uma análise cuidadosa, resolvemos que o Patch 1.12: Tambores da Guerra, seria nossa base, já que ele representa a versão mais completa da experiência clássica.

Depois de determinar nosso ponto de partida, começamos a levantar o que tínhamos no código-fonte e o que poderíamos disponibilizar, o que incluía recuperar o banco de dados original do desenvolvimento a partir do arquivo de cópias de segurança. Depois de costurar várias peças-chave, tínhamos uma versão reconstruída do Patch 1.12 para executar internamente. A equipe podia criar personagens, fazer missões básicas e subir de nível — e morrer, coisa que fizemos várias vezes. Para fins de teste. Claro.

Nossas primeiras sessões de jogo revelaram alguns problemas (já esperados): o jogo às vezes caía, não reconhecia nossas placas de vídeo modernas e era incompatível com nosso sistema atual de conexão. Aquela primeira versão também não tinha suporte para nossos recursos modernos de segurança e prevenção de trapaças. Ficou claro que tínhamos muito trabalho pela frente para fazer com que o WoW Clássico estivesse à altura do padrão de qualidade da Blizzard e proporcionasse a experiência que os jogadores querem.


Avançando: segundo protótipo

Em termos de engenharia, World of Warcraft é um jogo movido a dados, o que significa que o código básico é flexível e a forma específica como ele se comporta é controlada pelas informações contidas nos bancos de dados. Coisas como missões, monstros, itens e as regras das interações entre tudo isso são definidas em dados pelos designers e pelos artistas.

Então nos perguntamos: ainda seria possível oferecer uma experiência clássica autêntica se pegássemos nosso código moderno, com todas os aprimoramentos e alterações no back-end, e usássemos para processar os dados do Patch 1.12? Embora possa não parecer muito intuitivo, isso incluiria inerentemente sistemas do Clássico como ranques de perícia, missões e terreno antigo, talentos e por aí vai, enquanto recursos mais novos, como a Transmogrificação e as Conquistas, não existiriam por estarem ausentes dos dados. Após semanas de P&D, experimentação e prototipagem, ficamos confiantes de que conseguiríamos oferecer a jogabilidade e o conteúdo clássicos de WoW sem sacrificar as milhões de horas (literalmente) que investimos em desenvolvimento de back-end nos últimos 13 anos.

Enquanto nosso primeiro esforço ajudou a determinar a experiência que queríamos proporcionar, esse segundo protótipo definiu mesmo como chegaríamos lá. Partir de uma arquitetura moderna — com todas as alterações de segurança e estabilidade — significa que os esforços da equipe podem se concentrar na busca por uma experiência clássica autêntica. Qualquer diferença de comportamento entre nossas versões de desenvolvimento e as referências do patch 1.12 pode ser catalogada e corrigida, e ainda operar a partir de uma fundação estável e segura.


Aprofundando

Então o que é necessário para recriar uma experiência clássica autêntica com a engenharia moderna? Vamos começar categorizando os diferentes tipos de dados que compõem WoW.

  • Dados de tabelas: Esse tipo de informação tem quase sempre a forma de números. Quantos pontos de vida uma criatura tem, a quantidade de Força que um item concede ou quando e onde certas criaturas surgem são todos exemplos de dados numéricos que armazenamos em nossos bancos de dados. Também podemos armazenar e garantir relações entre diferentes segmentos de dados.
  • Dados de arquivos: Frequentemente são dados densos, como modelos 3d, texturas, animações e terrenos. Nossa interface de usuário é feita com arquivos XML e Lua. Muitos dos arquivos de arte não usam os mesmos formatos que as ferramentas comerciais de arte exportam. Nossa linha de montagem pega esses arquivos de arte crus e traduz para algo otimizado para ser lido e processado pelo nosso jogo.
  • Scripts em Lua: Alguns recursos funcionam com scripts em Lua escritos pelos designers, o que permite que eles definam facilmente comportamentos personalizados para a lógica do servidor sem haver necessidade de profundos conhecimentos de engenharia.

How Engineering Has Changed

Um dos desafios que enfrentamos é que todos os dados do Clássico estão no formato original usado no lançamento. No entanto, ele mudou substancialmente nesses anos todos. É necessário muito trabalho nessa área para tornar o programa cliente moderno compatível com os dados do Clássico.

Por exemplo: originalmente, um feitiço só podia realizar três ações com seu alvo. Em forma de tabela, era mais ou menos assim:

ID

Nome

Efeito Um

Efeito Dois

Efeito Três

Aura Um

Aura Dois

Dano de Efeito Um

Dano de Aura Um

Dano de Aura Dois

1

Bola de Fogo

Causar Dano

Aplicar Aura

Nada

Nada

Causar Dano Periodicamente

30

Nada

3

2

Frost Bolt

Causar Dano

Aplicar Aura

Nada

Nada

Retardar

20

Nada

Nada

Como se pode ver, tem muito espaço ocupado por “Nada”. Ao longo da vida de WoW, aprimoramos nosso design de dados e normalizamos grande parte das informações de nosso banco de dados. Hoje, os mesmos dados seriam separados assim:

Nome da Tabela: Feitiço

ID

Nome

1

Bola de Fogo

2

Seta de Gelo

Nome da Tabela: Efeito de Feitiço

ID

IDFeitiço

Efeito

Damage

1

1

Dano

30

2

2

Dano

25

Nome da Tabela: Aura de Feitiço

ID

IDFeitiço

Aura

Dano

1

1

Causar Dano Periodicamente

3

2

2

Retardar

Nada

Nesse formato há muito menos espaço desperdiçado e os feitiços não ficam mais limitados a três efeitos. Porém, antes de podermos carregar qualquer informação do banco de dados, precisamos passá-las da organização antiga dos dados para a nova. Isso não se limita aos feitiços, já que quase todos os sistemas do jogo (incluindo itens, criaturas, personagens de jogador, aparecimento de elementos do jogo, IA, etc.) sofreram alterações na organização do banco de dados ao longo dos anos.


Daqui para a frente

No fim, tudo que estamos fazendo permitirá que recriemos uma experiência clássica autêntica em uma plataforma muito mais otimizada e estável, e que nos ajudará a evitar problemas de latência e instabilidade. Melhorias modernas incluirão medidas antitrapaça, detecção de robôs, integração com o atendimento ao cliente e o Battle.net e conveniências semelhantes que não afetarão a experiência central do jogo.

Mal podemos esperar pelos desafios que nos aguardam, e partilhamos de sua paixão pelo jogo clássico. Cada conversão de dados que fazemos na confirmação do código deixa o WoW Clássico mais perto de proporcionar a experiência autêntica que nós — a equipe e vocês — queremos. Somos gratos pela companhia de vocês nesta jornada.