Desenvolvimento

7 mai, 2012

Aventuras com armas em jogos com terceira pessoa

Publicidade

Hoje vou falar sobre atiradores de games em terceira pessoa (3ps) e algumas lições que eu aprendi trabalhando no Monday Night Combat. Se você já trabalhou em um 3ps antes, este artigo vai conter poucas ou nenhuma surpresa. No entanto, é conhecimento útil para muitos jogos e gêneros.

Monday Night Combat

Em alguns 3ps típicos, como Gears of War, a câmera fica atrás e acima do ombro do personagem. Quanto mais longe o personagem estiver da câmera, mais difícil se torna a sua vida. Aqui está um conjunto de imagens que mostram o personagem Tank de MNC, que está empunhando uma railgun (um canhão elétrico). Tome nota da relação entre o personagem, a câmera, e a ponta do cano da arma. Eles estão muito distantes um do outro e isso vai, em breve, revelar-se bastante doloroso.

Há uma descontinuidade entre o personagem (Tank) e a câmera/ jogador (que é quem está segurando o controlador). Quais são as implicações? Para ser honesto, muitas. Hoje irei focar uma em particular. Quais os pontos de vista do jogador (terceira pessoa) são diferentes dos que o personagem pode ver (primeira pessoa). Isso causa problemas quando se trata de disparar armas de fogo.

Vamos dar um primeiro passo na implementação de uma arma. O nosso personagem tem uma railgun que irá disparar um único tiro. Vamos executar um rastreamento da câmera através da miras da tela centralizada para determinar a localização do alvo. Se estivéssemos trabalhando em um FPS, isso funcionaria muito bem. Mas infelizmente optamos por fazer as coisas da maneira mais difícil e fizemos uma 3ps. Qual é o cenário do nosso problema?

A metade da esquerda mostra um Tank azul, onde o personagem está atrás de um abrigo, mas o jogador tem uma clara linha de visão para um inimigo. A metade direita mostra um Tank laranja sendo baleado por um atirador completamente coberto! O Tank azul está disparando através da geometria do mundo e isto é claramente inaceitável.

Na verdade, a origem de rastreamento é a localização da câmera e a direção de rastreamento é a direção dela. E se movéssemos a origem de rastreamento para a ponta do cano da arma, mas mantivéssemos a direção da câmera? Isso não funcionaria mesmo! Tanto o FPS, quanto os jogadores 3ps esperam que quando um inimigo estiver em sua mira e puxar o gatilho, isso causará danos. Se movermos a origem do rastreamento para o cano da arma, a mira não irá corresponder precisamente aonde a arma irá realmente atirar.

E se movermos dinamicamente a mira? Isso foi testado para MNC, mas faz com que a mire vá de um lado a outro, causando uma experiência de jogo confusa e desagradável. Alguns jogos FPS fazem isso quando você está perto da geometria do mundo e funciona bem para eles.

É fundamental para o rastreamento vir da câmera, para que assim, o jogador que controla tenha uma experiência de jogo positiva. É igualmente importante que o jogador não abuse do meio ambiente. Qual é a solução? Realizarmos um rastreamento inicial a partir da origem da câmera para o mundo, para determinar uma localização do alvo. Um rastreamento secundário da arma é então realizado a partir do cano da arma para o local do alvo inicial. Se o rastreamento da arma tiver êxito, então o comportamento e os danos são conforme o esperado. Se ele falhar, batendo uma parede a um metro do personagem, por exemplo, então o novo local de alvo é usado.

Quanto maior a distância na tela entre a ponta do cano da arma e a mira, mais frequentemente o rastreamento irá falhar. A maioria das armas é mantida contra o ombro, que tem um espaço curto na tela e os jogadores não irão notar coisa alguma. Armas que têm um recurso de zoom menor, encurtam a distância ainda mais. Infelizmente, o nosso pobre Tank escolheu ser gangsta e empunhar sua railgun na altura do quadril, fazendo com que ele perca o seu alvo com mais frequência do que outros. Isso não é necessariamente uma coisa ruim. É também para se ter certeza de que sua equipe de arte está ciente das ramificações.

Nós temos uma solução muito boa! Acabamos por aqui? Claro que não! Isso é um de vídeo game, e o Senhor sabe que há sempre casos extremos. Olhe para imagem seguinte:

O jogador deve ser claramente capaz de acertar o inimigo em ambos os casos. O que aconteceu? O rastreamento da câmera atinge o inimigo, mas o rastreamento de arma atingiu a geometria do mundo para que nenhum dano fosse causado. Droga! O rastreamento da arma impede os jogadores de disparar por trás de uma cobertura, mas, neste caso, é o inimigo que está parcialmente protegido. Como podemos corrigir isso? O rastreamento da arma é simplesmente dado a uma distância máxima (testado empiricamente a mais ou menos sete metros). O objetivo é impedir o jogador de atirar por atrás da cobertura; e uma verificação de sete metros faz isso com sucesso!

É perfeito? Não, mas é bom o suficiente. A geometria curta pode bloquear tiros de uma forma surpreendente e derrubar de uma plataforma pode ser problemático. Estas questões vão acabar com armas não-gangsta posicionadas no ombro.

Os efeitos visuais ainda começam no cano da arma, então, embora os rastreamentos sejam claros, o efeito pode cortar a geometria (imagem abaixo). Eu esperava que a comunidade reclamasse, mas isso acabou não acontecendo. Primeiro, é difícil perceber isso na velocidade do jogo. E depois, danos devem ser tratados para que nada se sinta perdido para qualquer jogador.

Já acabamos agora? Não. Algumas armas, como um fuzil de precisão e a railgun do Tank, possuem um tiro penetrante que atinge múltiplos alvos. Nosso rastreamento da arma de sete mestros vai em direção ao alvo do rastreamento da câmera, mas o que fazemos com vários alvos?

Vamos supor que um único tiro penetrante atinja cinco alvos. Poderíamos realizar rastreamentos de armas para cada alvo e só causar algum dano caso o rastreamento da arma seja bem-sucedido. Mas isso parece um pouco de desperdício. Também é possível que alguns rastreamentos de armas tenham sucesso e outros falhem. Talvez, o alvo na parte de trás sofra algum dano, mas não o que está na frente. Para o MNC, nós instalamos em um único rastreamento entre a ponta do cano da arma para o local mais longe de acerto. Se esse rastreamento da arma obter êxito, então, todos os alvos terão algum tipo de dano; mas se ele falhar, a localização do novo alvo será usada.

Já acabamos agora? Bom, claro que não! Os nossos rastreamentos atuais estão entre a ponta da câmara e do cano da arma. MAs isto não é o suficiente. Examine a imagem seguinte:

À esquerda, o fuzil de precisão penetra através da geometria do mundo. No campo à direita, está a força do jogador spawner – a equipe laranja pode percorrer; a azul não e ela para todas as balas. Em ambos os casos, a extremidade do cano da arma está no outro lado da geometria de colisão. O primeiro caso poderia ser corrigido se o personagem de colisão englobasse a arma, mas o segundo não poderia. Qual é a solução? Para o MNC, realizamos um terceiro rastreamento a partir da mão do personagem até a ponta do cano da arma. Personagens usam colisão cilíndrica e enquanto sua mão estiver dentro desse volume, ele irá funcionar.

Finalmente acabamos! O Monday Night Combat resolve muitas questões relacionadas a terceira pessoa em jogos de armas por meio da realização de três rastreamentos de raios.

  1. Rastreamento da mão entre a mão do personagem até a extremidade do cano da arma;
  2. Rastreamento da câmera desde a câmera de origem, em direção ao mundo;
  3. Rastreamento de armas desde a ponta do cano da arma até rastreamento da câmera para o alvo.

Outro jogos

Vale a pena discutir outros jogos por um momento. Você sabia que muitos atiradores em primeira pessoa não tem efeitos que atiram a partir de armas no multiplayer? Eles disparam da testa do personagem! Não acredita em mim? Confira esta câmera precárea de tiro do Halo Reach.

A arma está alta no ombro, mas os marcadores são originários da testa, simples assim. O alcance é realmente um pouco estranho. Se o jogador 2 visualiza o jogador 1 atirar, o efeito do disparo vem da testa. No entanto, se o jogador 1 vê o jogador 2, o efeito do tiro vem do cano da arma. Isto significa que o efeito visual pode se juntar através da geometria do mundo. Por que a diferença? É um mistério…

Rastreamentos do Gears of War 1 reproduzem a partir de armas, mas todos os tiros podem ir através da geometria enquanto permanecem na cobertura. Se o cano da arma se junta a geometria do mundo, então o tiro atingirá a parede.

Em Gears of War 2, rastreamentos novamente vêm de armas. Os jogadores que estão protegidos podem atirar através de paredes.

Os jogadores podem até atirar através da geometria do seu próprio abrigo. O ser humano está usando uma van para se proteger e pode disparar através dela. (Gears 2)

No entanto, se o jogador estiver parado na mesma posição, então eles não podem atirar através. (Gears 2)

Ao utilizar cobertura, uma animação geralmente faz com que o jogador se exponha. Em algumas situações, como a van, permitem que o jogador “trapaceie”. Eu acredito que isto seja permitido porque algumas coberturas possuem uma geometria irregular que bloquearia tiros legítimos. As opções são alterar a geometria, alterar a animação, ou deixar que o jogador dispare através.

Os efeitos de disparos do Team Fortress 2 eram, inicialmente, a partir do nariz, mas já foi atualizado. O Insomniac’s FPS Resistance possui uma solução interessante para o multiplayer. Os efeitos começam a partir do cano da arma, mas rapidamente curvam para se alinharem com o rastreamento do nariz da primeira pessoa. Em Call of Duty, machados são lançados a partir da testa. Cada jogo possui um comportamento único e um pouco diferente se você olhar de perto.

Conclusão

Quero ter um segundo para agradecer ao artista técnico da Uber Entertainment, Ben Golus. Ele foi fundamental na escrita dos sistemas de armas para o MNC e respondeu inúmeras perguntas sobre as armas para efeitos de praticamente todos os jogos importantes já lançados. Ele respondeu ainda mais perguntas enquanto escrevi este artigo e ainda tirou as fotos tremidas que você vê acima. Obrigado Ben!

Não há uma fórmula que sirva para toda solução. Todos os jogos lidam com as coisas de maneira um pouco diferente. A questão da railgun do Tank é uma das que achei interessante para resolver. O que parecia um simples olhar superficial, levou um engenheiro e um técnico a martelar uma dezena de possibilidades para encontrar uma solução que era funcional tanto para a jogabilidade, quanto para os efeitos visuais. Achei a questão fascinante e espero que outros também se interessem!

***

Esse artigo está disponível no original em: http://www.altdevblogaday.com/2011/05/10/third-person-lessons/