Um personagem enfrenta monstros em Let Them Come: Onslaught.

Blog de tecnologia

Entrevista

Otimização dos sistemas de sangue e efeitos visuais na UE5 para Let Them Come: Onslaught

Blueprints

Indies

Jogos

Let Them Come: Onslaught

Niagara

Tuatara Games

tuatara-games-logo.png
A Tuatara Games é um coletivo de artistas de Vancouver que oferece serviços de efeitos visuais de ponta para jogos e outras experiências em tempo real. O estúdio usa sua especialização para ajudar grandes empresas do setor, incluindo a Epic Games, além de desenvolver a própria PI com o sucesso cult Let Them Come.
Olá comunidade da Unreal Engine. Eu sou Alex Underhill, artista técnico e de efeitos visuais na Tuatara Games. Faço parte de uma pequena equipe que acabou de lançar nosso jogo desenvolvido na Unreal Engine 5, Let Them Come: Onslaught, para PC e consoles. 

No nosso jogo sci-fi estilo bullet heaven, jogadores ficam isolados num mundo alienígena hostil, enfrentando hordas intermináveis de monstros. Em vez de apenas fazer os inimigos desaparecerem da tela, queríamos que cada eliminação tivesse um impacto visual marcante e deixasse sua marca no campo de batalha. Mas, considerando a escala das nossas hordas, isso gerou alguns desafios técnicos que nos obrigaram a experimentar os sistemas da Unreal para encontrar uma solução.

O jogo Let Them Come original foi desenvolvido usando o Game Maker, mas mudamos para a Unreal Engine em Let Them Come: Onslaught porque identificamos que essa engine era a melhor opção para alcançar nossos objetivos. 

A Unreal nos permitiu colocar muitos inimigos na tela ao mesmo tempo, além de inúmeros efeitos visuais, garantindo ainda assim um desempenho fluido. Também temos bastante familiaridade com as ferramentas de criação de VFX, em especial na Unreal Engine, devido ao nosso trabalho como estúdio de efeitos visuais.

Nosso desafio: pisos ensanguentados


Um dos desafios com os efeitos visuais de Let Them Come: Onslaught era a quantidade de inimigos na tela e quantos poderiam ser eliminados ao mesmo tempo. Quando criamos o protótipo do jogo, os inimigos acionavam um Burst Gameplay Cue que gerava um decalque de sangue no chão e uma explosão sangrenta como feedback para o jogador. Percebemos rapidamente que era possível acionar muitas dessas mortes simultaneamente, especialmente com armas aprimoradas, então precisávamos otimizar tudo isso para garantir que a ação fosse o mais caótica possível sem gargalos por quantidade.

Nos decalques de sangue, a ideia era criar uma sensação de carnificina e servir como trilha para o jogador, mostrando onde ele passou (e o que deixou para trás). O problema é que muitos decalques eram gerados, e queríamos que eles permanecessem visíveis por bastante tempo para serem úteis, o que fazia o acúmulo acontecer rápido. Também precisávamos lidar com o problema de sobreposição dos decalques: era possível eliminar muitos inimigos muito próximos uns dos outros, o que fazia os decalques se sobreporem e, muitas vezes, causarem perda de desempenho.

Para gerar uma grande quantidade de marcas de sangue (e ácido!) no chão, usamos o Niagara para criar um sistema que renderizava uma matriz de áreas de espaço do mundo em um alvo de renderização. Essa matriz tem tamanho fixo de cerca de 256 entradas e funciona em loop; quando as 256 entradas se esgotam, a primeira entrada é atualizada como a entrada 257 e assim por diante. Esse número funcionou bem: é possível cobrir o chão com bastante gore antes de reciclar as entradas.

Quando um inimigo é eliminado, em vez de gerar um decalque, ele envia dados sobre si (posição, raio, tipo de material) para um ator de Blueprint chamado “Splat Manager”, que é persistente no mundo. 
A máscara final e distorcida gera um resultado sangrento e realista.
Cortesia da Tuatara Games
O Splat Manager envia os dados para um sistema global do Niagara, que usa a High-Level Shading Language (HLSL) para gravar essas áreas em uma máscara global de alvo de renderização, usando a interface de dados Grid2D. Esse sistema foi fortemente inspirado no trabalho de Chris Zuko, diretor técnico na Terrible Posture Games. Preenchemos o alvo de renderização com a distância de cada poça de sangue, usando o raio recebido para definir esse alcance. Todas essas distâncias são combinadas para gerar uma única máscara consistente.
Máscaras de poças de sangue em uma cena de batalha de Let Them Come: Onslaught.
Cortesia da Tuatara Games
Essa máscara inclui algumas camadas, uma para sangue e outra para ácido, que podem ser usadas pelos shaders das superfícies do ambiente para aplicar a camada de gore conforme necessário. 

O Splat Manager registra a posição de origem da área renderizada no espaço do mundo e também o tamanho dessa área em unidades de espaço do mundo. Essas variáveis são atualizadas em uma coleção de parâmetros de Material e Niagara para ficarem acessíveis ao conteúdo.

A máscara de gore foi disponibilizada como algumas funções de material que faziam automaticamente o mapeamento das coordenadas para o local correto no mundo, deixando para os artistas apenas o controle do peso de 0.0-1.0 para aplicar efeitos de superfície, sem precisar recalcular coordenadas. Na maioria das superfícies, usamos o mapa de distâncias e aplicamos algumas amostras de ruído do espaço do mundo para distorcer o formato e fazê-lo se mesclar ao ambiente de forma mais orgânica.
Poças de sangue mescladas organicamente ao ambiente.
Cortesia da Tuatara Games
A máscara final, já distorcida, é usada para mesclar atributos de material no shader de superfície e deixar tudo com um visual bem sangrento!
Raios das poças de sangue em uma cena de batalha de Let Them Come: Onslaught.
Cortesia da Tuatara Games

Efeitos visuais de explosões de sangue


Outro ponto importante de otimização foi reduzir a quantidade de sistemas de partículas gerados, especialmente nas eliminações dos inimigos. Da mesma forma que os decalques causavam problemas pela quantidade, o número de explosões de eliminação na tela também era um desafio. Aqui o problema não era exatamente o overdraw, mas sim o número de sistemas do Niagara sendo gerados e gerenciados.

Migramos para a Unreal 5.3 durante o projeto, e um dos grandes motivos para isso foi utilizar os canais de dados do Niagara. Com algumas alterações nos efeitos visuais e nos Gameplay Cues, enviamos cada evento de explosão de sangue para um único sistema do Niagara por meio de um canal de dados. Esse sistema reproduz a explosão de sangue no local correto, em vez de gerar um sistema do Niagara novo a cada vez. O funcionamento foi muito parecido com o das poças de sangue: quando eliminado, o inimigo enviava informações sobre si para o sistema de gerenciamento no mundo, incluindo localização e tamanho/magnitude do evento e isso era repassado a um canal de dados do Niagara.

Quando chegou a hora de implementar uma versão “sem gore” dos efeitos visuais de eliminação, essa abordagem simplificou tudo. A versão sem gore foi criada junto da versão com sangue, e o jogo alterna entre elas conforme as opções selecionadas.

O caminho por meio do canal de dados do Niagara não cobre 100% das eliminações, porque ainda queríamos criar eliminações personalizadas para entidades específicas. Mesmo assim, ele cobre algo entre 80 e 90% das eliminações, permitindo expandir com efeitos sob medida quando necessário.

O resultado é que os jogadores conseguem ver a destruição que causaram na luta pela sobrevivência, e o campo de batalha preserva seus feitos sem comprometer o desempenho. Esperamos que você possa conferir tudo isso pessoalmente agora que Let Them Come: Onslaught já está disponível.

Deseja criar jogos na Unreal Engine?

Com a Unreal Engine, o limite é o tamanho da sua ambição, não o tamanho da sua equipe. Descubra como a UE5 oferece a equipes de todos os tamanhos o poder de criar jogos excepcionais com a mesma sofisticação visual dos títulos de grandes estúdios.
Saiba mais

Receba atualizações sobre as inovações do setor e os recursos gratuitos mais recentes para

Ao enviar suas informações, você concorda em receber notícias, pesquisas e ofertas especiais da Epic Games. Política de Privacidade