# UnrealEd/Otimizando mapas

A contagem máxima de polígonos visíveis na tela ao mesmo tempo depende muito da configuração do computador. Use uma contagem extremamente baixa como 50-70 polígonos visíveis por cena para processadores de menos de 300mhz. Processadores mais rápidos como 500-800mhz devem aguentar até cerca de 200 polígonos. Para processadores acima de 1ghz é possível passar de 200. Já para contagens extremamente altas como 500-600 polígonos só são recomendadas para processadores de 2ghz e placas de vídeo rápidas com 128MB de memória própria.
A contagem de nodes segue a regra 2:1 (2 nodes para 1 polígono), de acordo com o site unrealwiki esta é a proporção ideal para qualquer mapa para o máximo de desempenho em todos os lugares. Veja a proporção no menu build do editor.
O editor tem um botão que controla a porcentagem de nodes no mapa, por padrão ele vem pré definido como 15%. Só aumente ou diminua se o mapa tiver algum problema maior que não é resolvido mexendo nos brushes.
Para UnrealEd 3 existe uma divisão entre polígonos feitos dos modelos 3D e do BSP. A contagem de polígonos BSP parece continuar igual, já para os modelos 3D não há limite máximo, depende mais da placa de vídeo de cada um.
O que os brushes semi sólidos fazem basicamente é "limpar" o BSP do mapa. Quando um brush encosta em outro (com exceção de semi sólidos e não sólidos) o compilador faz um corte ali, aquele corte é usado pelo motor para definir o que vai ser renderizado ou não (o cálculo parece ser simular ao usado no Q2 e HL). Colocando um brush semi sólido o compilador não faz aquele corte, assim o mapa compila mais rápido e também o motor vai ter um BSP mais "limpo", fazendo menos cálculos de visibilidade.
O motor do Unreal é um chamado "motor de portais" porque usa portais para dividir os mapas em zonas. A idéia básica dos portais é evitar que o motor renderize o que o jogador não está vendo. Antes de usar o BSP para definir o que o jogador está vendo ou não o motor usa os portais, muito mais rápidos para isso. Se nenhuma parte de uma zona está sendo vista pelo jogador tudo que está lá já é ignorado, senão o motor usa o BSP para definir as partes da zona visíveis e as partes não visíveis. Os portais fecham zonas dentro do mapa, cada zona ficando com uma cor diferente no editor.
Use portais quadrados e alinhados alinhados no eixo X, Y ou Z sempre que possível. Evite portais angulados ou muitos pedaços de portal formando um portal complexo.
Os antiportais não funcionam separando o mapa em zonas, mas simplesmente escondem o que estiver por trás deles. São bons para lugares abertos onde é quase impossível dividir zonas. Antiportais são pesados, só ajudam se eles escondem muita coisa ou uma grande área.
Simplesmente limita o horizonte, o que estiver além da neblina é ignorado na renderização.
O UnrealEd 3 já inclui a opção de importar as texturas com compressão DXT, use sempre, a perda de qualidade é muito pequena e o ganho de desempenho é muito grande, principalmente para placas de vídeo mais lentas.
Para comprimir texturas no UnrealEd 2 faça o seguinte: Crie dois pacotes de texturas idênticos em pastas diferentes, mas um com texturas 8bits PCX e outro com texturas 24bits BMP (todos os nomes e grupos devem ser idênticos). Abra o prompt de comando e execute o comando ucc.exe mergedxt ficheiro contendo o pacote de baixa resolução ficheiro contendo o pacote de alta resolução ficheiro de saída. Infelizmente essa opção só suporta formato DXT1, não há suporte para DXT3 e DXT5. Outro problema é a compatibilidade do mapa, o UnrealEd não pode fazer mapas usando as texturas de alta resolução, faça sempre o mapa usando o pacote de baixa resolução. O Unreal 1 e GOLD não tem problemas com texturas comprimidas, mas o Tournament parece não ser compatível com essas texturas no multijogador, a menos que o servidor instale o pacote de alta resolução.
Evite girar e reescalar brushes sempre que possível, prefira transformar nos eixos X, Y, Z. Algumas vezes o editor simplesmente desalinha os brushes enquanto você os gira ou reescala deixando o brush alguns pontinhos fora da grade. Sempre coloque os pontos de corte da ferramenta de corte de brushes alinhados na grade, assim o brush sempre se mantém com os vértices alinhados na grade.
Em último caso copie um brush e delete-o do mapa, cole no bloco de notas. Você verá muitas coordenadas de vértices, arredonde os valores decimais para o próximo número inteiro e par ou o anterior, o que estiver mais próximo. Copie todo o texto do bloco de notas e cole de volta no editor, um brush novo deverá aparecer no mesmo lugar de onde você deletou o anterior.
Não faça brushes côncavos, sempre use brushes convexos. Qualquer brush côncavo deve ser dividido em brushes convexos ou transformado num modelo 3D. Ignore o brush de escada pronta, use um modelo 3D ou faça cada degrau um brush separado. Toróides e canos devem ser feitos com um brush sólido e um um brush subtraído por dentro ou por vários brushes sólidos formando o anel.
O tamanho e a quantidade de cubos cortados ao meio depende do tamanho do terreno e do nível de detalhes, muitos cubos pequenos dão muito mais detalhes de relevo mas também aumentam a contagem de polígonos.
Os detalhes do terreno como rochas, pedras, árvores e outras coisas podem ser feitos de brushes semi sólidos e não precisam "encaixar" perfeitamente na grade ou nos brushes do terreno.
A mesma regra vale para terrenos feitos de meshes no UnrealEd 3, quanto mais e menores as divisões, mais detalhado e pesado fica.
Observação: No Unreal ED 3 terrenos feitos de brushes estão obsoletos.

## Ligações externas

* http://udn.epicgames.com/Two/LevelOptimization
* http://wiki.beyondunreal.com/wiki/Map_Optimization
* http://angelmapper.com/tutorials/optimization1.htm
* http://wiki.beyondunreal.com/wiki/Node_Count