Otimizar sua experiência é o processo de configurar seus ativos e as configurações do Studio para manter sua taxa de quadros e níveis de desempenho altos para dispositivos com limitações de memória e unidade de processamento gráfico (GPU). Esse processo garante que quase todos os usuários tenham a mesma experiência de jogo e visual enquanto estão visualizando seu ambiente.
Usando o arquivo Arte Ambiental - Otimização .rbxl como referência, esta seção do currículo de arte ambiental mostra como revisar e configurar seu arquivo de lugar para obter gráficos ideais, incluindo orientações sobre:
- Revisar os parâmetros de física e renderização de cada ativo para confirmar que eles preservam a memória e o desempenho do mecanismo.
- Cortar texturas, geometria ou transparências em excesso que aumentam desnecessariamente a quantidade de cálculos que o Engine Roblox deve realizar para renderizar seus ativos.
Embora o Engine Roblox cuide da maior parte do trabalho de otimização para você, você pode ajudar nesses esforços de otimização utilizando o Microprofiler para ver onde leva mais tempo para renderizar quadros específicos. Usando essas informações, você pode tomar decisões informadas sobre quais ativos precisam da sua atenção em relação aos seus parâmetros ou conteúdo em excesso. A Análise de Cena é outra ferramenta poderosa para verificar o uso de recursos.

Revisar parâmetros de física e renderização
No Montar uma biblioteca de ativos, você aprendeu como é importante definir parâmetros de física e renderização que permitam que seus ativos mantenham sua alta qualidade visual em dispositivos com limitações de memória e GPU. No entanto, é comum, ao construir seu ambiente, ajustar esses parâmetros de acordo com a posição contextual e o propósito de um ativo dentro de sua experiência. Por exemplo, grande parte da folhagem no ambiente final de exemplo do laser tag projeta sombras, apesar de um custo de desempenho, porque isso acrescenta realismo ao ambiente.
Quando você modifica os parâmetros de física e renderização, é útil, próximo ao final do processo de desenvolvimento, revisar todos os parâmetros para ver onde você pode otimizar um parâmetro enquanto mantém as metas estéticas e os requisitos de jogo. Para ilustrar, você pode desativar a propriedade BasePart.CastShadow para a folhagem próxima às bordas da área de jogo para economizar em desempenho sem interferir na experiência de jogo ou visual do usuário.


Cortar conteúdo não essencial
Após revisar seus parâmetros de física e renderização, você pode revisar os ativos em si para ver onde pode cortar qualquer conteúdo não essencial da experiência que não afete seu jogo, como texturas idênticas com diferentes IDs de ativos, geometria complexa com muitos vértices ou transparências que se sobrepõem dependendo da visão da câmera. As seguintes seções detalham o que você pode fazer para revisar esse conteúdo e por que isso ajuda nos esforços de otimização.
Remover texturas duplicadas
Ao transitar entre o desenvolvimento de seus ativos e a construção de seu ambiente, é comum iterar sobre malhas ou texturas à medida que você encontra o que é necessário para suas metas estéticas ou requisitos de jogo. Se você não converter seus ativos em pacotes, ao importar essas iterações para o Studio, você está criando IDs de ativos únicos que o Engine Roblox precisa referenciar ao renderizar seus ativos dentro do ambiente.
Por exemplo, se você fosse importar as seguintes duas malhas de hidrantes separadamente para o Studio, mesmo que sejam exatamente iguais em aparência, o Engine Roblox as trata como dois objetos com IDs de ativos únicos. Quanto mais chamadas únicas o engine precisar fazer, maior será o impacto na memória e no desempenho. Por esse motivo, é importante confirmar, ao reutilizar um ativo várias vezes, que cada instância desse ativo use o mesmo ID de ativo para que o engine precise fazer apenas uma única chamada para renderizá-lo repetidamente.

Otimizar geometria
Se você descobrir que precisa fazer mais ajustes para aumentar a taxa de quadros em todos os dispositivos, é útil ver onde você pode otimizar sua geometria, seja:
- Combinando grupos de malhas em um único ativo.
- Diminuindo a contagem de polígonos de ativos com complexidade geométrica.
Aprofundando nessa primeira técnica, cada ativo único em sua experiência representa uma chamada de desenho na GPU, na qual ela envia um sinal à GPU para chamar informações para que o Engine Roblox renderize o ativo corretamente. Quanto mais ativos únicos você tiver, mais chamadas de desenho o sistema precisa realizar. Por esse motivo, se você tiver um grupo de malhas que compõem um componente maior em sua experiência, pode agrupá-los em ferramentas de modelagem de terceiros para reduzir a necessidade de múltiplas chamadas de desenho.
Para ilustrar este ponto, o ambiente final de exemplo do laser tag agrupa várias partes e malhas juntas para criar as grandes torres do lado de fora do edifício. Se você combinar todos esses componentes individuais, poderá transformá-los em um único ativo com apenas um ID de ativo e reduzir o número de chamadas de desenho de 8 para 1. No entanto, é importante notar que essa técnica remove sua capacidade de alterar livremente as características visuais e físicas de cada componente, como sua posição ou material.
Por exemplo, na imagem a seguir, a torre à esquerda continua com vários ativos sob um objeto Model, enquanto a torre à direita é um único ativo. Você pode modificar cada componente da torre da esquerda individualmente, mas quando você modifica a torre da direita, como mudar sua cor para preto, isso afeta a totalidade do objeto. É por isso que é importante considerar essa técnica apenas perto do final do desenvolvimento do seu ambiente, quando você sabe onde pode melhorar o desempenho sem afetar suas metas estéticas.

Aprofundando na segunda técnica, ativos com complexidade geométrica têm mais polígonos, o que significa que possuem mais vértices que o engine precisa calcular enquanto renderiza sua aparência visual. Isso significa que ativos com menos complexidade e fidelidade custam menos para renderizar, levando a uma melhoria tanto no desempenho quanto na memória.
Excluir transparências em camadas
Para proporcionar uma sensação de realismo ao ambiente, o ambiente final de exemplo do laser tag inclui muitas malhas com vários níveis de transparência, como a folhagem no espaço externo, vidro nas placas futuristas ou corrimãos de vasos. Quando a câmera visualiza vários objetos semitransparentes que estão na frente ou atrás um do outro, o Engine Roblox deve renderizar os pixels sobrepostos várias vezes para contabilizar as áreas transparentes. Esse processo é chamado de "overdraw" de alta transparência, e tem um impacto significativo no desempenho.
Por exemplo, considere a seguinte visão de um vaso na amostra do ambiente. O engine precisa renderizar as áreas transparentes das folhas entre a planta mais próxima da câmera e a planta mais próxima da área externa em camadas, o que equivale a centenas de milhares de pixels sobrepostos. Para aliviar um pouco esse impacto, é importante revisar o layout de todos os objetos semitransparentes em seu ambiente e garantir que não haja muitos lugares com muitas camadas de sobreposição, especialmente em grandes áreas da tela.


Quando você terminar de revisar todo o seu conteúdo para garantir que ele esteja otimizado em todos os dispositivos, sua experiência estará pronta para publicação!