World of Warcraft

Restaurando a história: a criação do WoW Classic (recapitulação do painel)

 Restaurando a história: a criação do WoW Classic (recapitulação do painel)

Na BlizzCon 2018, a comunidade de WoW teve a primeira oportunidade de jogar World of Warcraft Classic. Para ajudar os jogadores a entender como é o processo de criar uma experiência nos padrões de qualidade da Blizzard, os engenheiros de software Brian Birmingham e Omar Gonzalez, junto com o diretor de jogo Ion Hazzikostas, subiram ao palco na tarde de sábado para compartilhar algumas ideias.

Em busca das partes principais

Antes de iniciar a jornada para recriar fielmente a experiência original de WoW, a equipe do WoW Classic precisou analisar de perto em quais elementos do jogo original teríamos que trabalhar. Esses elementos resumiam-se a três partes: banco de dados, elementos de arte e código-fonte.

  • O banco de dados incluía aspectos do jogo como os pontos de vida das criaturas, a quantidade de vigor de um item, locais de surgimento ao redor do mundo e milhões de dados de todos os tipos.
  • Os elementos de arte incluíam desde a aparência de um elfo noturno sob efeito de Fusão Sombria ao barulho feito por um Ignimpacto e o movimento de um orc ao brandir um machado.
  • O código-fonte continha instruções sobre como exibir o jogo, como processar entradas e como conectar os jogadores.

Para começar, precisávamos descobrir até onde ia o arquivo do código-fonte. Descobrimos que o primeiro código relativo ao WoW era de 1997, bem antes de o desenvolvimento do jogo começar.

Foi um bom começo, mas a forma como os desenvolvedores lidavam com o banco de dados a cada atualização foi um problema. Diferente do código-fonte, que estava arquivado em várias ramificações do jogo que podiam ser trabalhadas como partes distintas, cada atualização substituía o banco de dados inicial. Felizmente, o problema foi resolvido pouco depois do lançamento, e, quando fomos conferir, encontramos dados que datavam da versão 1.12 — e até anteriores.

Por fim, encontramos elementos de arte em backups antigos que correspondiam ao que havia sido preservado do banco de dados.

Com a junção desses três componentes, conseguimos realizar um teste, nos conectar ao jogo, criar novos personagens, matar javalis e cumprir algumas missões.

Jogabilidade clássica em um mundo moderno

Embora tivéssemos uma versão funcional do jogo, ainda havia muitos desafios a superar. A tecnologia que sustenta o jogo progrediu bastante desde o lançamento, trazendo suporte para a nuvem, integração com o aplicativo Blizzard Battle.net, atendimento ao consumidor e diversas correções de erros e trapaças.

Para vencer esses obstáculos, a equipe observou aquilo de que gostava (a arte e os dados), aquilo de que dispunha e aquilo de que não gostava (o código). Nós queríamos ver se dava para usar os dados e elementos de arte clássicos no código moderno de forma que tudo se encaixasse bem. As coisas não se saíram bem logo de cara, mas, com um pouco de tentativa e erro, conseguimos formular um jeito de obter algo jogável. Isso nos deixou confiantes de que seria possível proporcionar uma experiência nos padrões de qualidade da Blizzard com a plataforma moderna.

Do protótipo à demo

Os módulos de construção do banco de dados, o código-fonte e os elementos de arte interagem a fim de produzir tudo que dá forma ao jogo, como o terreno, a jogabilidade, as animações e a iluminação. Os diferentes mecanismos exigem que os módulos interajam das mais variadas formas.

Vamos dar uma olhada no terreno para compreender melhor essa interação. O terreno inclui o posicionamento de morros, vales, árvores, construções, etc. Ao subir os arquivos de terreno antigos no sistema moderno do jogo, percebemos que a forma de interpretar os dados dos dois sistemas é diferente. Por causa disso, o sistema atualizado e os dados clássicos não ficaram alinhados, resultando em problemas bizarros como fogueiras holkar debaixo d’água e árvores queimadas do Cataclismo no mundo original.

Dados de terreno do 1.12

1.12 Engine

Engine Moderna

Altura do terreno

Água

grama

Posição dos objetos

Altura do terreno

Água

grama

Posição dos objetos

Altura do terreno

Object Posição dos objetos

água

grama

Felizmente, o editor atual de WoW consegue converter parte dos dados. Os dados relativos ao terreno, nós conseguimos converter com o mesmo editor que usamos em Battle for Azeroth. O editor atual “sabe ler” o formato antigo do terreno, transformar no formato de terreno novo e exportar para a engine atual. Isso corrigiu o erro de posicionamento das fogueiras e as árvores fora de época, entre outras coisas.

Outro obstáculo que tivemos que superar foi como armazenar e juntar os dados. World of Warcraft sempre tem várias atualizações e patches em desenvolvimento ao mesmo tempo, cada qual em uma etapa diferente do processo. Se um elemento de arte ou arquivo de terreno é adicionado a um patch, o sistema faz com que ele apareça automaticamente nos patches futuros. Isso significa que, se tivéssemos simplesmente implementado um patch novo no modelo atual para gerar o WoW Classic, teríamos substituído a represa rompida de Loch Modan pela versão intacta que a precedia, por exemplo — e, como se pode imaginar, isso teria causado um monte de problemas em Battle for Azeroth.

Para evitar isso, a equipe “ensinou” alguns truques novos às nossas ferramentas para que fosse possível atualizar o WoW Classic sem afetar a versão atual do jogo. Nós copiamos os dados do 1.12 em um projeto novo e ensinamos as ferramentas a fazer a distinção para que as alterações feitas nos patches do WoW Classic permaneçam apenas nele, sem interferir nos dados do jogo atual. Pode parecer uma coisa simples, como copiar uma pasta, mas a dificuldade foi fazer todas as ferramentas compreenderem isso para que pudessem realizar edições automaticamente. A possibilidade de usar as ferramentas internas foi uma grande privilégio, e nós queríamos que o Classic tivesse acesso a toda a infraestrutura e dados do WoW.

Modelos e animações clássicos

Nós também restauramos o visual clássico dos modelos, mas, nesse processo, acabamos descobrindo que alguns deles estavam estragados. Em alguns casos, faltavam texturas, e tivemos que pesquisar um pouco para descobrir como eram cada um dos itens e para corrigir sua aparência no sistema.

As animações originais também foram restauradas, porém o sistema de animação do WoW está bastante atrelado ao código de jogabilidade. Tivemos que modificar os dados e o código para que as animações voltassem ao que eram no 1.12. Apareceram alguns erros no meio do caminho, como modelos que deviam ficar inclinados em vez de em pé, mas conseguimos corrigir tudo com algumas alterações.

Restaurando o sistema de classes

Alguns sistemas de classe do jogo original simplesmente não têm nenhum equivalente moderno. A classe mais afetada por isso foi a de caçador, provavelmente. Os sistemas de felicidade e lealdade da mascote foram removidos há muito tempo, assim como o treinamento da mascote e a possibilidade de usar uma arma de longo alcance junto com uma corpo a corpo. Nessas situações, só converter os dados para o sistema novo não funcionaria, pois não existe um sistema novo correspondente. Nesse caso, tivemos que trazer o código antigo de volte, e trouxemos. Felizmente, a restauração correu bem, embora a necessidade de comprar flechas e alimentar as mascotes tenha pegado algumas pessoas de surpresa durante os testes internos.

O pontos de combo dos ladinos foram outro desafio, uma vez que o sistema atual de recursos do jogo sabe como ganhar e como gastar pontos de combo, mas não como perdê-los ao mudar de alvo. Também tínhamos que levar em conta as fórmulas de combate antigas, por isso tivemos que resgatar o código das fórmulas de combate anteriores, incluindo acertos críticos e golpes triturantes. A chance de que ocorram também é modificada pela diferença entre a defesa do defensor e a perícia com armas do agressor. Isso mesmo: a perícia com armas está de volta. Nós ainda tínhamos os dados do jogo clássico relativos a isso, mas também precisamos restaurar o código que aumentava a perícia ao usá-las e fazia o seu nível de perícia afetar a chance de acertar o golpe ou acertar só de raspão.

Interface do usuário e iluminação

A tela de personagem é um belo exemplo de interface de usuário marcante que sem dúvida tinha que ser restaurada, e nós nos esforçamos bastante para trazê-la de volta — inclusive os efeitos de tela e a iluminação por trás do personagem. Não podemos prometer que esteja perfeitinha, mas juramos que demos o melhor de nós para criar a experiência mais autêntica possível.

Outro exemplo de iluminação foi a Floresta de Elwynn. Teve um período na história do Warcraft em que alteramos todas as equações de iluminação e, como resultado, os artistas de ambiente tiveram que passar por todas as áreas a fim de aperfeiçoar a iluminação e aproveitar melhor as equações novas. Para recriar a experiência original, tivemos que reverter essas alterações. A primeira coisa que fizemos foi restaurar os dados de iluminação antigos. Isso nos deixou muito mais próximos da iluminação original. Com mais algumas alterações na fórmula de distância, nas fórmulas de neblina e nas sombras, conseguimos chegar ainda mais perto da iluminação original.

[insert examples]

Então o jogo está pronto?

Depois dessa trabalheira toda, vocês devem estar se perguntando se o jogo já está prontinho e se não teria sido mais fácil só atualizar a referência do cliente.

Depois de passar um ano trabalhando nesse projeto e abrindo caminho entre erros e desafios, uma questão insistente que sempre voltava à tona era a diferença clara entre o que temos e o que almejamos. Quando olhamos para o World of Warcraft de hoje, vemos todas as diferenças entre o jogo atual e o clássico. Se tentássemos apenas atualizar o cliente de referência, estaríamos rastreando um monte de alterações “invisíveis”, como falhas que poderiam ser exploradas, congelamentos que só aparecem depois que já existem milhões de jogadores conectados ao mesmo tempo e por aí vai. Nós escolhemos abordar o problema de uma forma que deixa claro qual é o nosso trabalho, em vez de torná-lo complicado e difícil de entender. 

Então, mesmo que vocês tenham jogado a demo do WoW Classic hoje, ele ainda não está pronto. Ainda temos que resolver um monte de questões nas cidades principais, como os bancos e as casas de leilão. Precisamos testar as masmorras e os raides para ter certeza de que as habilidades dos chefes estão funcionando direitinho. Temos que examinar todos os sistemas de JxJ. Mas estamos comprometidos a fazer tudo isso com muito cuidado no processo de trazer o jogo clássico de volta à vida.

Filosofia e planos

Nesse processo de restauração do World of Warcraft Classic, nossa diretriz tem sido proporcionar uma experiência autêntica. O jogo pode até rodar com mais facilidade e o hardware pode ser melhor, mas o aspecto e a sensação vão ser o de jogar o World of Warcraft de 2006. As equações de combate, modelos originais e habilidades do caçador são todas parte disso, mas as dinâmicas sociais são uma parte também. A confiança nos outros, o esforço necessário para formar um grupo e o impacto dele na sua jornada masmorra adentro... tudo isso faz parte da experiência original que queremos preservar.

Muitas das decisões tomadas foram unânimes. Coisas como o Localizador de Masmorras foram um “não” absoluto. Assim como os grupos inter-reinos, o sistema de conquistas, as casas de leilão unificadas e a possibilidade de voar. 

Outras decisões não foram tão unânimes assim. Em determinado momento do WoW, o limite de penalidades no mesmo alvo era de 8. Posteriormente o limite subiu para 16, e hoje nem sequer existe limite. Essas alterações transformaram radicalmente o equilíbrio entre as classes e as estratégias empregadas ao usar as penalidades nos confrontos contra o conteúdo do jogo. A fim de preservar esse equilíbrio e para evitar o efeito bola de neve que seria reajustar os dados do patch 1.12 para compensar as alterações atuais, estamos cogitando um limite de 16 penalidades no WoW Classic.

A correspondência no jogo entre membros de guilda hoje é instantânea, sendo que antigamente demorava uma hora, que nem as mensagens entre estranhos. A mudança para o correio instantâneo deixou as coisas mais convenientes, porém acabou com a interação social de ter que se encontrar com alguém para fazer uma troca caso quisesse resolver algo mais rápido. Por esse motivo, nós voltamos para o atraso de uma hora. Outras conveniências, tais como completar os nomes automaticamente ou a limpeza rápida da caixa de correio, nós mantivemos. Foi uma decisão até fácil, visto que alguém poderia facilmente criar um add-on com a mesma função, e não achamos que essas conveniências pesam na experiência fundamental do jogo clássico.

Antigamente, se alguém saqueasse algo por engano no grupo, os jogadores tinham que entrar em contato com o atendimento ao consumidor para trocar o item. No sistema moderno, há um período de tempo no qual os jogadores podem trocar os itens saqueados entre si. Achamos melhor manter essa conveniência no Classic do que obrigar os jogadores a recorrer ao atendimento ao consumidor (mals ae, galera do saque ninja!).

Nas classes que dependem da regeneração de energia, como os Ladinos, muita coisa mudou desde a era clássica. A regeneração era feita em parcelas, a partir do “batimento cardíaco” do servidor. Ou seja, para ganhar 20 de energia, levava dois segundos de relógio. Hoje, o sistema é mais sofisticado e regenera 1 de energia a cada décimo de segundo. Essa diferença mudou o ritmo de uso de certas habilidades. O que parecia uma simples conveniência transformou completamente o ritmo das rotações de combate e as explosões de dano do jogo clássico. Consideramos importante restaurar a regeneração para proporcionar uma experiência mais autêntica.

As possibilidades dos add-ons mudaram muito ao longo dos anos, e eles ficaram muito mais sofisticados com os anos de prática e malícia dos seus desenvolvedores. Não estamos certos quanto ao que isso significará para o WoW Classic, mas temos certeza de que não voltaremos para a API de add-ons do 1.12. Isso seria abrir as porteiras para uma automação quase completa das decisões de combate, permitindo um comportamento de “robô” que contradiz a essência da experiência de jogo do WoW. É tudo o que não queremos. Por outro lado, a API atual dispõe de funções que possibilitam a criação de interações sociais que também prejudicariam essa experiência clássica autêntica. Ainda estamos pensando nos detalhes e procurando um bom meio-termo. Vamos ficar de olho nas opiniões da comunidade e dos desenvolvedores de add-ons quanto aos limites a serem estabelecidos.

Plano de lançamento de conteúdo

Embora estejamos usando o patch 1.12 de base, queremos proporcionar aos jogadores uma jornada à altura das expectativas. Nós traçamos um percursos com quatro etapas que visam integrar tudo na experiência do jogo ao longo do tempo:

  • Primeira etapa: Núcleo Derretido, Onyxia, Gládio Cruel, Kazzak, Azurgos
  • Segunda etapa: Covil Asa Negra, recompensas de Campos de Batalha e JxJ, Zul’Gurub
  • Terceira etapa: Ahn’Qiraj (com evento de abertura), Tipo 0,5, conteúdo de Silithus, dragões verdes
  • Quarta etapa: Raide de Naxxramas, invasão do Flagelo

Esses planos estão sujeitos a mudanças, mas queríamos dar uma ideia do que vem por aí. Vamos continuar ouvindo a opinião de vocês enquanto damos vida ao WoW Classic.

Os participantes da BlizzCon e os detentores do Ingresso Virtual da BlizzCon 2018 podem jogar a demo de WoW Classic hoje mesmo! Para saber mais, leiam esta publicação do Cantinho dos Desenvolvedores.

Próximo artigo

Destaques