Projetando os números de dano de Diablo III

Projetando os números de dano de Diablo III

Trabalhar com desenvolvimento de software, seja para trabalho, entretenimento ou o seu jogo favorito, é saber que problemas simples nem sempre têm soluções simples. O desenvolvimento de um jogo é complicado, para dizer o mínimo. Existem milhares de partes sensíveis onde a menor mudança pode causar semanas de reversões e recomeços. Para quem vê de fora, é fácil perguntar: "Por que vocês não corrigem isso?" É mais ou menos como perguntar a um padeiro por que ele não pode trocar açúcar por adoçante. A resposta é parecida: "Não é tão simples assim."


Números: como funcionam?

Em Diablo III, o jogador é soterrado de informações. Vamos falar de números. Eles parecem estar por toda parte! Estão no seu equipamento e no perfil do seu personagem, e ficam flutuando perto da cabeça do seu nefalem durante o combate. Por trás de cada dígito há uma tecnologia bastante complexa que faz com que ele se comporte como nós queremos.

Muitos jogadores diziam que os números de combate estavam começando a ficar um pouco excessivos, ou difíceis de compreender durante o jogo. Antes, números grandes eram legais porque se destacavam muito. Como trazer de volta esse impacto emocional sem fazer os jogadores sentirem que perderam poder?

O Patch 2.4.0 introduz algumas funcionalidades para dar conta disso. Primeiro, introduzimos uma nova opção de jogo para truncar os números e exibi-los com abreviações. Em seguida, acrescentamos um recurso completamente novo que destaca alguns dos seus maiores números de dano com uma cor nova. Cada uma dessas novidades trouxe desafios particulares quando fomos implementá-la: algumas tinham problemas de design, outras criavam problemas na localização e, no fim de todas as decisões, o resultado tinha que ter um visual legal.

No começo, tivemos a ideia de destacar os 5% de números mais altos gerados pelo jogador nos últimos segundos. O primeiro problema com essa abordagem é que cada arranjo é diferente, especialmente no que diz respeito a modos de causar dano. Alguns emitem pequenas erupções de números oscilantes ao longo do tempo, enquanto outros inundam sua tela com um fluxo constante de informação. Outro problema que surgiu é que essa primeira tentativa não acomodava as flutuações esperadas no dano causado. Um Pilone de Poder, por exemplo, aumenta o seu dano temporariamente. Mesmo depois que ele expira, é bom saber quando você está causando dano notável.

Nós desenvolvemos nosso algoritmo ao longo do tempo para dar conta desses pontos fora da curva e fixamos as seguintes regras para determinar os números laranja:

  • Os números de dano precisam ultrapassar 10.000
  • Se o número de dano exibido for mais alto que o último número laranja, o novo número será laranja.
  • Diminuir o valor do maior número em 3% a cada segundo
    • Isso reduz as chances de você passar muito tempo sem ver números destacados
  • Ignorar os 10 primeiros números grandes
    • Isso permite que o sistema se calibre sozinho
  • Se nenhum dano for causado por 10 segundos, reiniciar o sistema


Cadê os bilhões? - Desafios da localização

Se você jogou a última versão do RTP 2.4.0, já deve ter visto as nossas novas abreviações de dano. Ouvimos muitas perguntas — principalmente do público anglófono — sobre o porquê de medirmos em milhões, mas pularmos a contagem em bilhões.

Há algumas razões para isso, e a mais importante é a localização. Diablo III é um jogo global, lançado em 13 idiomas diferentes. Assim, quando precisamos tomar uma decisão de design que afeta a palavra escrita (ou, nesse caso, o número escrito), temos que ficar atentos, porque a mudança vai afetar todos os idiomas do jogo. Por mais que os números possam parecer a parte mais fácil da tradução, isso está longe de ser verdade.


Esquerda: números em inglês. Direita: números em coreano.

Eis um exemplo de tradução aparentemente simples que se torna complicada: alguns idiomas, como espanhol e francês, não têm um termo único para "bilhão". Eles se referem a essa quantidade usando um termo que pode ser traduzido literalmente como "mil milhões" em vez de usar uma palavra específica. Em termos de etimologia, tanto no inglês americano quanto no britânico, isso é consequência do desenvolvimento da palavra "bilhão", que veio a significar "mil milhões" em vez de "um milhão de milhões", como era originalmente.

Fica ainda mais complexo com idiomas como coreano e chinês, em que números altos são agrupados em escala diferente. Por exemplo, em inglês, a nomenclatura de um número muda a cada três casas decimais (milhar, milhão, bilhão etc). Em coreano, a convenção de mudar o nome do número ocorre a cada quatro casas, usando um método chamado "miríade ao quadrado". Isso se dá porque em coreano os números são agrupados a cada grupo de dez mil em vez de mil.

O problema fica mais complicado com o uso da pontuação. Nem todo idioma usa vírgulas para separar as casas. Alguns usam pontos (comum na Europa), e outros não usam pontuação nenhuma.


Esquerda: Contagem de ouro em coreano. Direita: Contagem de ouro em francês.

Como os números de Diablo aumentaram e nós decidimos acrescentar pontuação numérica, vimos que precisávamos achar uma maneira elegante de "traduzir" onde a pontuação aparece, e quando, em cada idioma. Nosso código usa uma biblioteca chamada ICU, ou International Components for Unicode, que fornece bastante apoio para localização de software. ICU pode ser usado de vários jeitos, mas, para esse projeto, nós aproveitamos a possibilidade de escolher um número e um local (como inglês americano, francês ou coreano) como entrada e devolver um número formatado adequadamente para cada local como saída, já com pontos ou vírgulas. Nossa equipe de localização também mantém uma tabela que mostra os números que cada região escolhe exibir e como fica o resultado final visualmente.


Um exemplo de tabela de localização mostrando qual idioma trunca os números e em que momento.

Algumas localizações escolheram abreviar mais ou menos, de acordo com as preferências culturais. Há uma psicologia real por trás da satisfação dos jogadores e da extensão dos números que se vê, e a preferência dos jogadores varia a níveis pessoal e cultural. Por exemplo, em inglês, optamos por não abreviar nos milhões baixos porque ver "1,000,000" dá muito mais satisfação que ver "1M". Pular a casa dos bilhões também ajudou, pois ver "1,000M" é mais empolgante que ver "1B". Claro que a extensão do número não é a única preocupação: o visual, as cores, a animação, tudo tem um papel importante.


Os números ganham vida - Refinando o visual

É importante garantir que, ao ver um número, o jogador entenderá rapidamente o que ele significa naquele momento e quais são suas implicações. No patch 2.4.0, nós almejamos fornecer mais informações de combate do que nunca. É aí que entram os números de Acerto Crítico em destaque.

Olha só que belezinha de crítico!

Uma simples mudança de cor é uma das muitas maneiras possíveis de apresentar essa informação. Nós nos perguntamos qual seria a melhor maneira de informar sobre os acertos críticos. Aumentamos os números? Fazemos com que apareçam em outra área? Pisquem? Passem mais tempo na tela? Ou só usamos uma cor diferente? Como decidir qual dessas opções é a certa?

Preferimos usar a cor porque poderíamos apresentar essa nova informação de uma maneira drasticamente diferente, que não traria muitos problemas de acessibilidade. Números em laranja são mais fáceis de ver; como eles não apareciam antes, seu subconsciente acaba prestando mais atenção neles.

O laranja também passa no teste para daltônicos. Ao olhar uma tabela de cores, você vê que o laranja está em outro plano em relação às outras cores que já usamos para outras informações. Assim, jogadores daltônicos também vão notar a novidade!

Para mudar as cores da interface, nossos artistas têm três opções de variação: Tom, Saturação e Claridade. Esse é o espaço de cores HSL, uma padronização digital da tabela de cores.  

Como exemplo, uma das informações mais importantes do jogo é a quantidade de cura que você está recebendo. A cura é a sua força vital, e nós queremos que ela fique bem visível. É por isso que essa informação é das mais brilhantes no jogo. Queríamos que os acertos críticos também ficassem bem visíveis, então mexemos muito nos níveis de claridade para que você sempre saiba quando será o seu próximo pico de dano.


Juntando tudo

Quando falamos da equipe do Diablo III, é fácil pensar primeiro nos desenvolvedores que mexem no funcionamento das classes e itens e trazem funções novas e bacanas para você explorar. É com isso que você interage mais, é o que fica no centro da sua atenção. Entretanto, tem muito mais coisa acontecendo além dos itens que o seu herói está usando, e nossos artistas, engenheiros, peritos em localização e muitos outros ajudam a garantir que tudo feche perfeitamente no final para todos os jogadores do mundo.

Esperamos que você tenha gostado dessa olhadinha nos bastidores de uma funcionalidade pequena, mas cuja importância é gigante! É um privilégio trabalhar nesse jogo, até nos pequenos detalhes. Obrigado por nos acompanhar!