Layout de níveis e fluxos de trabalho de terreno em Survival Kids
Daniel Reidler and Steven Cannavan - Unity Technologies
Survival Kids team
Survival Kids é o primeiro projeto de desenvolvimento de ponta a ponta da Unity, criado em colaboração com a KONAMI. A pequena equipe que o construiu aproveitou décadas de experiência em desenvolvimento de jogos, e esta série de blogs mergulha em como eles abordaram este projeto ambicioso. A primeira edição explorou o trabalho de quadro e renderização da equipe, enquanto esta edição analisa design de níveis e ambientes.
Embora tenhamos falado principalmente sobre como alcançamos a aparência que você vê na tela, queríamos nos aprofundar no que fizemos para melhorar nossos fluxos de trabalho, tornando-os mais rápidos para que pudéssemos entregar o projeto a tempo.
Devido ao tamanho da equipe e ao escopo do projeto, consideramos muito o layout dos níveis e os fluxos de trabalho do terreno. Precisávamos de algo que fosse fácil para um designer de níveis iterar ideias, mas nossa abordagem também precisava exigir o mínimo ou nenhum retrabalho uma vez que os níveis fossem entregues à equipe de arte. Optamos por uma abordagem que tem um fluxo de trabalho muito semelhante a uma caixa branca para os designers de níveis enquanto já estávamos trabalhando com os ativos finais do jogo.
Survival Kids usa um conjunto de blocos de construção reutilizáveis para criar o layout principal dos níveis. É um conjunto de prefabs com lados de rocha de penhasco e um patch de terreno de malha em cima, configurados em diferentes tamanhos e formas.

Blocos de construção de terreno para a criação de níveis em Survival Kids
Os lados do penhasco são oito malhas separadas, lados e cantos, cada uma com um colisor de malha simplificado. Todos compartilham o mesmo material, o que acelera sua renderização.

As malhas expostas de um penhasco
Esta configuração permite que o designer de níveis use esses blocos de construção para criar a maioria dos níveis usando os ativos finais do jogo, mas com um fluxo de trabalho rápido que é muito próximo da caixa branca, para permitir iterações rápidas sobre ideias.
Essa abordagem de "bloco de construção" do módulo de terreno resultou em muitos módulos sobrepostos devido às formas orgânicas dos níveis. Isso também levou à maioria dos lados do penhasco estarem dentro ou atrás de outros módulos e nunca vistos pela câmera do jogo. Para resolver isso, criamos uma ferramenta de Editor que passou por cada módulo um por um, verificando se alguma parte deles poderia ser vista do ângulo da câmera do jogo e removendo todos os não vistos.

Removendo malhas invisíveis sob terrenos
Usamos uma ferramenta do Houdini Engine para criar malhas de terreno contínuas com base nas diferentes seções dos módulos de terreno.

Criando malhas de terreno contínuas a partir de cinco patches separados
Uma versão modificada do pacote Polybrush da Unity foi usada para pintar os diferentes materiais nas malhas de terreno. A modificação foi que o Polybrush pintaria uma textura de controle, semelhante a como o sistema de terreno da Unity faz, em vez de pintar valores nos vértices da malha.

Usando o Polybrush para pintar materiais nas malhas de terreno
A Oclusão Ambiental é então incorporada na cor do vértice das malhas de terreno para melhor ancorar visualmente os objetos colocados sobre ele.

Incorporando a Oclusão Ambiental
Uma ferramenta personalizada foi então usada para distribuir pequenos objetos como grama, flores e pequenas pedras nas malhas de terreno. A distribuição dos objetos é controlada individualmente usando parâmetros como densidade, material subjacente, curvatura do terreno ou proximidade a objetos maiores. Ao longo do projeto, mantivemos uma densidade muito baixa para minimizar o impacto no desempenho da pequena vegetação.

Distribuindo vegetação pequena de baixa densidade no ambiente usando a Ferramenta de Dispersão de Malhas
Em seguida, usamos outra ferramenta personalizada para dividir os colliders de malha dos diferentes terrenos. Fizemos isso de duas maneiras:
- Como uma grade, para reduzir a contagem de triângulos e o volume de cada collider de malha e melhorar o desempenho físico do jogo
- Por material, para que o jogo possa gerar diferentes sons e VFX de passos com base no material em que os personagens estão andando (grama, areia, neve, gelo, etc.)

Usando o Terrain Mesh Splitter para distribuir os colididores de malha de diferentes terrenos
Este post oferece apenas uma visão de como configuramos gráficos e renderização estilizados e eficientes para atingir nossa taxa alvo para Survival Kids. Confira o primeiro post da série, "Dicas de gráficos e renderização de Survival Kids," e fique atento ao blog do Unity para mais posts sobre os bastidores do jogo, incluindo uma análise em duas partes sobre redes multiplayer. Você também pode encontrar mais histórias técnicas de desenvolvedores em nossa Página de Recursos.