Os jogos FPS (tiro em primeira pessoa, tiro em primeira pessoa) tornaram-se parte integrante da indústria de videogames desde o advento do mais popular
Wolfenstein 3D em 1992. Desde então, o gênero evoluiu: os gráficos melhoraram, os orçamentos de desenvolvimento aumentaram e o ecossistema de esportes eletrônicos se desenvolveu. Mas e a fundação deles - mecânica de tiro? Como foi o desenvolvimento nessa frente? Por que as armas parecem reais em alguns jogos e como brinquedos em outros?
Hitscan
Na era anterior, muitos jogos para renderizar cenas 3D em imagens 2D usavam uma técnica chamada
raycasting . O Raycasting permite que o mecanismo determine o primeiro objeto com o qual o feixe se cruza. Mas então os desenvolvedores fizeram a pergunta: “E se você soltar um feixe do cano da arma para simular uma bala?” Graças a essa idéia, um hitcan nasceu (“hit scan”).
Exemplo de RaycastingNa maioria das implementações de armas com hitscan, quando um jogador dispara, o mecanismo físico executa as seguintes operações:
- Define a direção em que a arma está apontando.
- Lança um feixe de um cano de arma a uma distância predeterminada.
- Usa radiodifusão para determinar se um raio atingiu o objeto.
Se o mecanismo determinar que o objeto está na linha de fogo, ele o informará, dizendo que a bala o atingiu. Então o alvo pode executar todos os cálculos necessários para registrar o dano.
Da Unidade . O ponto A indica uma arma que emite um feixe até o ponto máximo B. O feixe colide com um cubo no qual o motor relata que foi atingido.O Hitscan é inerentemente simples, mas muitas modificações diferentes podem ser feitas para adicionar outra lógica:
- Se continuarmos o feixe além do primeiro objeto que ele atinge, podemos perfurar vários objetos na linha, como a metralhadora no Quake
- Se removermos o alcance máximo do feixe, obteremos um laser que voará para sempre até atingir algo
- Você pode programaticamente tornar algumas superfícies refletivas para que as balas ricochetem nelas
Overwatch. A capacidade de desviar os caracteres de Genji é um exemplo de superfície refletora.A principal vantagem do raycasting é sua tremenda velocidade de processamento. É calculado rapidamente e não requer tempo adicional de memória ou processador para criar um novo objeto físico. Isso significa que o código de rede necessário para sincronizar vários clientes será mínimo, porque o servidor só precisa rastrear a direção do feixe. O recuo também é realizado de forma simples. Para simular esse efeito, basta adicionar um ligeiro desvio à vista da arma.
Portanto, não é de surpreender que o hitscan seja usado na lógica de tiro de muitos jogos. Exemplos clássicos são
Wolfenstein 3D e
Doom , mas essa tecnologia também é usada em jogos modernos. Personagens como Soldier 76, McCree e
Overwatch Doom Widow usam armas com hitscan, e a maioria das armas em
Call of Duty também
é baseada em hitscan.
Overwatch, Call of Duty, Wolfenstein 3DEntão, por que essa abordagem não é usada em todos os jogos?
Em primeiro lugar, como você provavelmente notou, os raios têm uma velocidade de movimento infinitamente alta, ou seja, eles atingem instantaneamente o ponto final. Não há tempo para o movimento de uma bala entre uma bala disparando e atingindo um objeto. Isso significa que, se um raio atingir um objeto, é impossível evitar uma bala, mesmo que o alvo esteja a vários quilômetros do jogador.
Halo. Observe que o focinho pisca e os efeitos de atingir o chão ocorrem simultaneamente.Em segundo lugar, a maioria das implementações de hitscan usa vigas diretas. Isso significa que é difícil levar em consideração o vento, a gravidade e outros fatores externos que podem afetar a bala depois de voar para fora do tronco. Os programadores podem adicionar todos os tipos de truques para que o feixe imite balas reais, mas assim que o jogador "dispara" no feixe, não há como mudar seu caminho no meio.
Em muitos jogos casuais, o hitscan ainda é usado porque simplifica a curva de aprendizado para a maioria dos novos jogadores. Mas e os jogos que procuram transmitir a sensação "real" de fotografar? Com essas restrições, isso é impossível de alcançar; portanto, é necessário um método diferente.
Balística de um Objeto Voador
Esse termo pode parecer complicado, mas em um nível abstrato, a idéia é bastante simples. Cada bala ou projétil disparado de uma arma cria um novo objeto físico na cena. Ele tem sua própria massa, velocidade e caixa delimitadora do contato (hitbox), que são rastreadas pelo mecanismo do jogo.
Max Payne 3Os benefícios da balística se manifestam totalmente em jogos nos quais o realismo tem a maior prioridade. Como cada objeto voador existe por si só, podemos levar em consideração a influência do vento, fricção, gravidade, temperatura - qualquer força que deva agir sobre a bala. Agora que somos capazes de mudar a física, os jogadores podem usar armas mais diversas, não apenas pistolas e lasers; podemos adicionar granadas e foguetes ao nosso arsenal.
Como as balas nesse sistema não se movem na velocidade da luz, também é possível obter propriedades temporais:
- Bullet Time usado por Max Payne , Sniper Elite e Superhot .
- O tempo de viagem da bala, ou seja, ao disparar a longas distâncias (ou ao disparar um projétil que se move lentamente), a preempção se torna crítica.
- Explosões retardadas de conchas, como granadas
Devido a esses cálculos adicionais, o processamento se torna mais caro do que usar o hitscan. Para garantir a sincronização, os servidores precisam fazer muito mais trabalho, é necessário eliminar discrepâncias ou conflitos na lógica do lado do cliente, para que todos os jogadores no mesmo servidor estejam nas mesmas condições.
Superhot, Campo de batalha 1, OverwatchExistem muitas soluções alternativas para maximizar a produtividade. Por exemplo, o mecanismo pode armazenar um conjunto de objetos carregados antes do início do jogo e "ativá-los" conforme necessário. Depois de atingir a superfície, você pode reproduzir a animação da balística e desativar a bala, salvando-a para o futuro. Este método permite economizar recursos de computação e memória ocupados pela criação e destruição múltipla de objetos.
Também existem muitas maneiras de realizar cálculos, mas em um nível alto, a diferença está em onde eles decidem processar o "tato" do jogo - uma unidade de tempo:
- O relógio é calculado separadamente da lógica de renderização, ou seja, o jogo terá uma reprodução mais precisa dos objetos, mesmo quando os quadros forem ignorados. É necessária mais lógica para calcular o tempo exato decorrido desde a renderização anterior.
- Cálculo de uma medida em cada quadro; vinculando a física à taxa de quadros. Se você desabilitar a restrição na taxa máxima de quadros ou se o jogo começar a pular quadros, a física do mundo irá acelerar ou desacelerar.
Os efeitos de vincular o movimento às medidas são claramente visíveis quando as conchas se movem rápido o suficiente para percorrer uma distância bastante grande entre as medidas. Podem surgir situações quando os objetos "passam" um pelo outro, porque no mecanismo eles nunca se cruzam.
Tudo isso parece complicado, muitas pessoas pensam que esse é um método relativamente novo; no entanto, ele surgiu antes do hitscan! Antes dos jogos FPS, havia muitos atiradores de cima para baixo, como
Asteroids ,
Space Invaders ou
Galaxian . Estes são jogos de arcade dos anos 70, nos quais a balística de projéteis já foi implementada, embora bastante primitiva.
Asteróides. Conchas são muito difíceis de ver, mas são!Mas mesmo com todos esses recursos, não podemos recriar um modelo realista do mundo real. Existe alguma maneira de tirar proveito dos dois métodos?
Sistemas híbridos
A maioria dos mecanismos de jogos são capazes de lidar com ambos os tipos de simulações de balas: hitscan e balística. Isso permite que você realize uma grande variedade de armas; jogos como
Halo ,
GTA e
Half-Life têm armas que podem suportar os dois tipos de física.
Halo. Rifle de assalto usa hitscan; Needler usa balística de projétilOs desenvolvedores também podem combinar as duas técnicas para cobrir os pontos fracos de cada sistema e fornecer um comportamento mais realista. Por exemplo, para eliminar o problema de passar objetos entre si, cada marcador em cada ciclo do mecanismo pode emitir um feixe. Isso permite que o motor veja se algum dos raios se cruza entre as medidas, colidindo no ar.
Eles também podem ser combinados para melhorar os recursos do jogo. Um ótimo exemplo disso é a série
Sniper Elite ; depois de pressionar o gatilho, o mecanismo usa o hitscan para determinar se o tiro é feito perto o suficiente de qualquer objeto detectável para permitir a câmera lenta. Nesse caso, uma bala é disparada com o cálculo da balística no modo "tempo da bala".
Sniper eliteEntão, examinamos o básico do comportamento das balas nos videogames! Curiosamente, as melhorias nessa área são principalmente em pequenas otimizações e melhorias, e não no processamento em larga escala. Após o lançamento dos primeiros jogos revolucionários, não fizemos nenhum passo ou avanço significativo.
O que vem depois? Como essa área se desenvolverá no futuro?
Não creio que, no futuro próximo, a abordagem híbrida desapareça, porque oferece benefícios adicionais. Mas prevejo que haverá muitas melhorias por parte da balística das conchas. A frequência de cálculo do relógio continua a aumentar (afinal, a potência da CPU está aumentando), e podemos nos aproximar do limite assintótico da simulação da bala do “mundo real”.