Skybox Optimization

From Valve Developer Community
Jump to navigation Jump to search
English (en)Português do Brasil (pt-br)Русский (ru)Translate (Translate)
O exemplo do layout de um pequeno mapa que é abordado neste artigo.

Este artigo aborda os diferentes métodos de colocação de brushes skybox num mapa, bem como as suas vantagens e desvantagens. Para o efeito, é apresentado um exemplo de um mapa no qual são aplicados todos os métodos. Os Brushes de telhado estão ocultas para efeitos de tutorial.

Visão geral

Method Descrição Vantagens Desvantagens
Método Box ("Diaper") Improperskyboxexample.gif Criar um enorme bloco de skybox oco que contenha todo o nível
  • Muito fácil de criar
  • Tempo de compilação desnecessariamente longo, desempenho desnecessariamente mau
  • A utilização de cordons é mais fácil, mas permite realizar o mesmo objetivo
Skybox apertada Properskyboxexample.gif Criar paredes e tectos skybox divisão a divisão sem criar áreas transitáveis não intencionais
  • Tempo de compilação e desempenho razoáveis
  • Criação é um trabalho, é mais provável que apareçam leaks
  • As estruturas altas de outras secções podem desaparecer, embora devessem estar visíveis
Abordagem dinâmica Towerop1.jpg Como a Skybox apertada, mas não tão apertada, deixando as diferentes secções do mapa ligadas acima da área jogável
  • Tempo de compilação e desempenho razoáveis
  • Pode ter em conta estruturas altas para ficarem visíveis a partir de diferentes secções
  • Melhor imersão: balas, granadas e props físicos não colidem com a skybox como se esta fosse uma parede
  • Criação é um trabalho, as fugas são mais susceptíveis de aparecer

Alguns outros benefícios da criação de uma skybox adequada para otimizar o mapa podem incluir

  • Uso mais fácil de areaportals
  • Organização mais fácil de ativadores env_soundscape
  • Renderização de um maior número de adereços detail em displacements.
Tip.pngDica:As estruturas altas que devem permanecer visíveis em várias seções do nível (por exemplo, uma crane) podem ser movidas para uma Skybox 3D. Se necessário, a estrutura pode ser duplicada.
Note.pngNota:Em Counter-StrikeCounter-Strike: Condition ZeroCounter-Strike: SourceCounter-Strike: Global Offensive, podes querer que as granadas lançadas arbitrariamente nunca toquem na skybox. Para isso, o teto da skybox deve ser pelo menos 1500 units a mais do que o lugar mais alto de onde um jogador pode lançar granadas. Para além disso, as paredes da skybox não podem prolongar as paredes do nível se nenhuma granada as atingir.

Método de caixa

A maioria dos mapeadores inexperientes tende a criar uma grande caixa em torno de seu nível e texturizá-la com a textura tools/toolsskybox, em seguida, esculpi-la para fora para criar, literalmente, uma sky box. A maioria dos mapeadores faz isso porque não tem experiência com o funcionamento de uma skybox e seus efeitos, ou pode fazer isso simplesmente porque não quer vazamentos em seu mapa. Isto é por vezes referido como um skybox "diaper".

De qualquer forma, este “Método da caixa” não é a forma como deve formar a sua skybox, pois pode causar mais problemas do que os que resolve. Para demonstrar o porquê, será criado um pequeno mapa para o objetivo deste artigo. É um esquema simples: alguns caminhos com três grandes áreas e paredes a separá-las. Este não é o mapa mais complicado, mas serve para ilustrar o ponto. Além disso, repara como o chão ao longo do nível é feito de displacements costurados uns aos outros. Isto é bastante comum, e verá como isto afecta a skybox e a otimização do mapa daqui a pouco. Com o Box Method (Método de Caixa) aplicado, o mapa apareceria como a imagem abaixo.

Improperskyboxexample.gif

Os displacements estão a desaparecer e a desaparecer por uma razão: para demonstrar que não são efetivamente tidos em conta pelo VVIS. Os displacements não bloqueiam a visibilidade e o VVIS não calcula as visleafs que param na superfície dos displacements; as folhas de visão atravessam-nos diretamente. Se tivesse uma parede feita de displacements, o seu computador continuaria a renderizar todos os modelos, jogadores e geometria por trás deles. Apenas a geometria do mundo - neste caso, as paredes/brushes - irá bloquear a visibilidade e criar as visleafs que controlam os itens a renderizar.

Tip.pngDica:Quando as bordas exteriores do seu mapa ainda estão em desenvolvimento, é mais benéfico usar as cordon tools até chegar a uma fase de desenvolvimento do mapa em que quer começar a configurar a sua skybox final e otimizar o seu mapa. Os cordons funcionam da mesma forma que o método da caixa, mas são mais simples de utilizar.
Note.pngNota:Pode reparar que a origem do mapa se encontra dentro do nível.
No Source, isto é uma má prática, pois o VVIS corta automaticamente as folhas de visão ao longo do eixo da origem. Em vez disso, a origem deve ser movida para um dos 4 quadrantes do eixo x/y.
No GoldSrc, no entanto, este conselho pode e deve ser ignorado, pois a tela do mapa é significativamente menor, e os brushes colocados muito perto da borda do mapa muitas vezes compilam incorretamente, especialmente se forem pequenos.

Skybox apertada

Segue o anexo de um exemplo de um skybox criada corretamente:

Properskyboxexample.gif

a skybox agora está em conformidade com o contorno do nível, e a textura nodraw é usada em todas as áreas sob as paredes e o chão, ao invés da textura tools/toolsskybox. Isto reduz a quantidade de cálculos necessários (reduzindo significativamente o tempo de compilação) porque a skybox não contém todo o espaço vazio gerado pelo método anterior. A textura nodraw é usada porque não precisamos de criar luz por baixo do nível e não queremos erros de renderização que ocorrerão quando a luz atingir as displacements a partir de baixo.

Todos estes métodos introduzem alterações visíveis na compilação:

Vviscompare.gif

Portal Clusters: 73 »» 16

Numportals: 201 »» 19

Total Clusters Visible: 3981 »» 134

Average Clusters Visible: 54 »» 8

Average Clusters Audible: 73 »» 13

VisDataSize: 2048 »» 196

Para um mapa tão pequeno, estas diferenças já são enormes e irão aumentar drasticamente o desempenho do mapa no jogo, especialmente se o mapa for maior.

Quando não construir seções

Conformar a skybox com os caminhos do nível não deve ser feito sempre, mas apenas quando apropriado. Há alguns casos em que se deve deixar espaços para ver através deles, para que se possa ver a seção seguinte do mapa, por exemplo.

Uma 'torre' laranja alta foi colocada na área central do mapa, como pode ser visto abaixo. No entanto, se a skybox se mantiver como está, essa torre aparecerá/desaparecerá quando as pessoas andarem à volta, devido à construção da skybox. É necessário cortar a skybox em alguns pontos para garantir que a torre é visível de todos os ângulos a partir dos quais o jogador a pode ver.

Removendo e recortando as paredes para que a torre possa ser vista de qualquer ângulo e utilizando a textura nodraw entre as paredes no centro, obtemos um resultado semelhante a este:

Towerop1.jpg

Também se pode tentar limitar a área em que a torre será mostrada. Basta aumentar a altura de algumas paredes, para que quando o jogador estiver perto de uma parede e a torre estiver atrás dela, a torre não possa ser vista devido à altura da parede:

Towerop2.jpg

Veja também

Category:Optimization (Level Design) Category:Level_Design_FAQ