Artigo

Mergulho profundo na arte técnica: Como o Cairn renderiza materiais de rocha específicos para jogos usando blendmaps 3D

ANTHONY BEYER / THE GAME BAKERSTechnical Art Director
Apr 17, 2026|6 Min
Arte-chave de Cairn por The Game Bakers | Feito com Unity. Um alpinista pende de uma saliência rochosa. O logotipo do jogo "Cairn" está escrito nas estrelas à esquerda da imagem. O fundo é uma vista de montanha.
Esta página da Web foi automaticamente traduzida para sua conveniência. Não podemos garantir a precisão ou a confiabilidade do conteúdo traduzido. Se tiver dúvidas sobre a precisão do conteúdo traduzido, consulte a versão oficial em inglês da página da Web.

Anthony Beyer, de The Game Bakers , mergulha na arte técnica do desenvolvimento de “Superfícies sem Piton” para o jogo de simulação de escalada, Cairn. Saiba como eles superaram o desafio de alinhar visuais com jogabilidade usando mapas de mesclagem 3D e Shaders de Computação no Unity.

Olá! Eu sou Anthony Beyer, diretor de arte técnica na The Game Bakers. Minha formação original é em design gráfico (web, impressão). Minha primeira experiência com videogames foi em jogos para dispositivos móveis como modelador 3D em 2010. Naquela época, eu não sabia nada sobre programação, mas estava muito interessado em trabalhar com gráficos em um motor de jogos, então comecei a aprender JavaScript e a mexer em alguns pequenos projetos Unity no meu tempo livre. Hoje em dia, passo mais tempo escrevendo código do que criando modelos 3D! Você pode encontrar alguns dos meus trabalhos no meu Página do ArtStation.

Comecei a trabalhar com o estúdio The Game Bakers no início do desenvolvimento de Furi, por volta de 2014. Após Furi lançado em 2016, trabalhamos em Haven (lançado em 2020), e em janeiro de 2026 lançamos nosso novo jogo, Cairn, um jogo de vídeo game de simulação de escalada em rocha.

O que é um piton em Cairn?

Em Cairn, você pode escalar em quase todas as paredes, e implementamos uma mecânica de resistência para tornar essa experiência mais desafiadora. Após escalar por algum tempo, Aava (o personagem do jogador) acabará por ficar cansado. Para descansar, ela pode se fixar na parede com pregos de metal chamados pitons. (Observação de jogabilidade: Os pitons são opcionais e você pode escalar sem eles, mas isso exige um conhecimento mais profundo Cairncontroles de escalada).

Os pitons são como pontos de verificação. Eles são especialmente úteis quando você começa a jogar o jogo.

Para aumentar a dificuldade em algumas paredes e forçar rotas de "solo livre", queríamos impedir o plantio de pitons em áreas específicas do ambiente. Neste post do blog, vou explicar como desenvolvemos essa pequena parte técnica do jogo que chamamos de Superfícies No-Piton.

Cairn A protagonista Aava se recusa a plantar uma piton em uma superfície sem piton.

Como adicionar diferentes tipos de superfícies ao ambiente

Quando você quer fazer variações no terreno, qual é a primeira coisa que vem à mente? Você pode...

  • adicione novos objetos e geometria
  • adicione "pintura de cores de vértices"
  • Use uma "textura de mapa de mesclagem"

Cairn definitivamente não é o seu terreno típico "controlado por mapa de altura"; na verdade, é uma montanha feita com kits (mais informações sobre isso neste post da ArtStation).

Captura de tela de Cairn por The Game Bakers, Made with Unity. Mapas de textura sobrepostos em uma superfície rochosa da montanha
O Monte Kami é um nível totalmente projetado em 3D, com todas as rochas colocadas manualmente.

Isso dificultou a realização de variações por meio de objetos/geometria adicionais, pois adicionou mais restrições a um processo de design de nível já complexo (e queríamos projetar o nível de No-Piton Surfaces livremente, em cima do design de nível de escalada real).

Blendmap e Vertex Color são técnicas semelhantes, sendo ambas máscaras que são amostradas no shader para fazer variações de renderização.

No nosso caso, não pudemos usar a pintura de cores de vértice, porque:

  • Havia muitos vértices para pintar.
  • Havia muitas instâncias de geometria sobreposta (malhas de mão projetadas em terreno montado com kitbash).
  • Nossas rochas modulares usam LODs, então a densidade dos vértices não é consistente.

Blendmap 2D

No final, decidimos optar por uma solução de blendmap!

Felizmente, já tínhamos uma ferramenta personalizada usada para Level Art, a TexturePainter. Essa ferramenta nos permitiu pintar blendmaps no Editor e atribuí-los a grupos de renderizadores (renderizadores selecionados manualmente ou automaticamente, se estiverem nos limites do TexturePainter).

Na The Game Bakers, adoramos criar ferramentas personalizadas no Unity – [ExecuteAlways] geralmente é a primeira linha que adiciono a todos os scripts!

Usamos principalmente o TexturePainter para pintar camadas de grama e neve no chão, mas como podemos girar livremente no TexturePainter, podemos pintar em paredes.

Captura de tela mostrando Cairn by The Game Bakers aberta no Unity Editor, mostrando um protótipo inicial da mecânica de Superfícies sem Piton do jogo
Protótipo inicial de superfícies sem piton

Após alguns pequenos ajustes de sombreamento, criamos nossa blendmap “Superfícies sem Piton” e conseguimos alterar dinamicamente nossa textura/sombreamento.

Como é uma Texture2D pré-renderizada, é fácil amostrar o valor de uma textura em uma determinada posição no mundo para determinar se o jogador pode plantar uma piton ou não.

O conceito funcionou! Mas, nesta fase, ainda era bastante limitado porque é uma projeção de máscara 2D, e só poderíamos ter uma para toda a montanha, então a precisão era baixa.

Neste ponto, não tínhamos certeza se as “Superfícies sem Piton” seriam incluídas no jogo. Visualmente, elas não eram atraentes, e precisaríamos fazer muitos testes de jogabilidade/design de nível para ter certeza de que elas adicionavam um valor significativo ao jogo.

Mas poderíamos pelo menos começar a iterar sobre como ele deveria parecer.

Expor alguns parâmetros de renderização nos permite experimentar diferentes aspectos potenciais para esse tipo de superfície.

Quando sua primeira solução não funciona em absoluto

Enquanto estávamos tentando melhorar o renderizado no lado da direção artística, no lado do design de nível, a limitação da "projeção 2D" estava se tornando cada vez mais problemática. Devido à natureza do nosso design de nível, precisávamos ter controle 3D das seguintes superfícies No-Piton:

  • Superfícies No-Piton que podem ser encontradas dentro da montanha (em cavernas)
  • Superfícies No-Piton que podem envolver paredes/arquiteturas côncavas/convexas

Timeskip

Há sempre muitas novas ideias e coisas novas para fazer no desenvolvimento de jogos. Eu gosto de trabalhar como uma borboleta – toda vez que estou preso em algo, ignoro o problema e vou fazer coisas diferentes em outro lugar!

Três a seis meses depois...

Para outros novos recursos, usamos Texture3D para representação de campo de distância. Colocamos muitos volumes (caixas e elipsoides) e geramos uma textura de campo de distância a partir disso, com cada pixel contendo a distância para o volume mais próximo. Cada volume pode ser aditivo ou subtrativo.

Isso é o que chamamos de "Visualização de Topologia": um efeito de imagem no espaço da tela controlado por uma Texture3D no espaço do mundo.

Essas texturas de campo de distância 3D são de baixa resolução e geradas sob demanda em tempo de execução (também não são integradas no Editor e não são legíveis pelo lado da CPU).

Mapa de mesclagem 3D

Neste ponto, era hora de experimentar nossa solução de mapa de mesclagem 3D para superfícies No-Piton.

Do lado do sombreador, é simples mudar de um Texture2D para um Texture3D. Agora, tudo o que restava a fazer era adicionar algum ruído às coordenadas do mundo para esconder esses texéis de baixa resolução e, voilà!

Edição de superfícies No-Piton

Essa solução funcionou visualmente, mas tudo estava quebrado em termos de jogabilidade, porque não conseguimos detectar a localização do jogador na textura porque a textura não era legível pelo processador.

A amostragem do campo de distância foi realizada pelo processador, iterando sobre cada volume primitivo (caixas, elipsoides). No entanto, como adicionamos ruído às coordenadas globais no shader da rocha, houve um deslocamento visível nas bordas; claramente, faltava precisão.

Cairn by The Game Bakers | Feito com Unity. Captura de tela de uma das faces rochosas de Cairn sobrepostas com volumes primitivos.
Aqui você pode ver volumes primitivos vs renderização real.

Sincronizando visuais com jogabilidade

Para corrigir isso, usamos um Compute Shader para obter os mesmos valores vistos no shader de rocha.

Quando o jogador quer plantar um piton, fazemos um raycast contra a parede para encontrar onde o piton será posicionado e verificar se o jogador está dentro de uma Área sem Piton. Se esse for o caso, enviamos a solicitação para o Shader de Computação na posição de colocação do piton. Quando o resultado do Shader de Computação retorna (no mesmo quadro ou um quadro depois), validamos ou desativamos a capacidade de plantar um piton.

Agora temos uma amostra perfeita em texel: “shader de rocha” e “Shader de Computação sem Verificação de Piton”, ambos compartilhando o mesmo código exato.

Como se viu, essa solução foi um pouco também preciso!

Imagine que você está no meio de uma rocha comum e de uma rocha sem piton, e você quer plantar um piton, mas não pode porque o posicionamento do mundo do jogo determinou que você está em uma superfície sem piton. Isso parece muito injusto quando você pode colocar um piton a apenas dois centímetros de distância.

Para corrigir isso, ativamos várias amostras ao redor do jogador em um pequeno intervalo para encontrar um local válido, se houver um disponível.

Aqui você pode ver a verificação da linha verde em uma rocha sem piton, enquanto a verificação da linha azul superior está em uma rocha comum; vamos escolher essa segunda posição para colocar o piton.

Há sempre algo para polir

Com tudo parecendo bom, é hora de refinar e polir.

Implementamos uma maneira de carregar várias áreas No-Piton ao mesmo tempo. Apenas a área mais próxima é a "real", enquanto as outras são renderizadas como decalques LOD. Esta solução está longe de ser perfeita porque os decalques são diferidos e não podem receber iluminação da mesma maneira que o shader de rocha, mas foi suficiente para nossas necessidades.

Transição de mapa de mesclagem 3D No-Piton do LOD0 (renderizado dentro do shader de rocha) para LOD1 (renderizado com um decalque diferido)

Isso é tudo sobre superfícies sem piton. Se você está jogando Cairn e encontrar uma maneira de plantar um piton em uma superfície sem piton, por favor, me diga – sempre há algo para corrigir!

Obrigado por ler!

Cairn já está disponível para PC e PlayStation®5, com o DLC gratuito “On The Trail” disponível neste verão. Explore mais jogos Made with Unity em nosso Página do curador do Steam, e confira mais histórias de desenvolvedores da Unity no Blog da Unity e Centro de Recursos.