Pular para o conteúdo

Quanto um resource custa de verdade para o jogador

Um resource de 40 MB pode custar mais memória para o jogador do que um de 300 MB. O tamanho em disco é comprimido; a placa de vídeo guarda a forma expandida. Aqui está o número que realmente importa, onde as coisas dão errado e o que um otimizador pode mudar com segurança.

O número que importa não é o tamanho do arquivo

Um .ytd é comprimido em disco. O que a placa de vídeo do jogador guarda é a textura expandida, e esse número depende de três coisas: as dimensões, o formato e se ela tem mips.

Uma textura sem compressão custa cerca de oito vezes o que os mesmos pixels custam em BC1. Esse fato sozinho é o maior ganho na maioria dos envios, e não muda nada em como a textura aparece na tela. Os mips somam mais ou menos um terço por cima, e valem cada byte: uma textura sem eles é lida em resolução total mesmo do outro lado do mapa.

É por isso que a análise mostra memória, não megabytes. Dois resources com o mesmo tamanho de download podem custar várias vezes mais um que o outro para o jogador.

O que ele muda, e em que ordem

Cada textura do envio é lida do próprio arquivo e passa pelas mesmas quatro perguntas. A ordem é proposital.

O piso vem primeiro. Tudo que tem 256 pixels ou menos no lado maior fica como está, seja qual for o formato: recomprimir uma textura pequena estraga ela visivelmente e quase não economiza nada. Depois a compressão: uma textura sem compressão vai para BC1, ou BC3 se ela realmente usa alpha. Depois o teto: tudo acima do limite que você definir é reduzido até ele, arredondado para uma potência de dois. Depois, mais nada: se a textura já está dentro do orçamento, ela é listada no relatório e deixada como está.

1Pisopequena? não mexe2Formatosem compressão? comprime3Tetoacima do limite? reduz4Relatórioantes e depois, por arquivo
Tetos disponíveis: 4096, 2048, 1024, 512, 256. Pisos: 512, 256, 128, desligado.

Texturas sem uso e duplicadas

A análise lê cada modelo do pacote e junta as texturas que os shaders dele citam: todas, não só a diffuse. Uma textura usada só como normal map ou specular map está em uso, e removê-la deixaria o modelo chapado no jogo.

Tudo que nenhum shader cita aparece como sem uso, e você pode mandar remover. Essa verificação só roda quando o pacote realmente traz um modelo: se você enviou arquivos .ytd soltos, nada pode ser considerado sem uso, porque o shader que lê aquela textura pode estar num arquivo que você nunca recebeu. Texturas idênticas guardadas com nomes diferentes aparecem à parte: duplicatas são comuns em packs montados a partir de várias fontes.

A única mudança desligada por padrão

Uma textura cujos lados não são potências de dois não consegue ter uma cadeia completa de mips. O jogo lê o nível mais alto em qualquer distância: ela cintila de longe e custa memória cheia o tempo todo. Deixar os lados em potência de dois resolve as duas coisas.

Mesmo assim fica desligada por padrão, porque corrigir significa redimensionar uma textura que você não pediu para diminuir, que é exatamente como um otimizador estraga um decal. Ela aparece em toda análise e só é aplicada quando você marca a opção.

É pelo mesmo motivo que os modelos nunca são tocados. O otimizador reescreve texturas; gerar os níveis de detalhe que faltam num modelo é uma etapa separada e opcional, que vai para a fila de jobs porque leva minutos num carro.

Experimente grátis

Crie uma conta grátis, entre no Discord para receber seus créditos e monte seu primeiro asset em minutos.